Re: cgicc and Qt
Frank Büttner <[email protected]> Fri, 27 Mar 2009 19:23:55 +0100
| Newsgroups | gmane.comp.gcc.cgicc.general |
|---|---|
| Message-ID | <[email protected]> |
This is a cryptographically signed message in MIME format.
--===============1916502685==
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms020707000501020207070803"
This is a cryptographically signed message in MIME format.
--------------ms020707000501020207070803
Content-Type: multipart/mixed;
boundary="------------020905030706060004050403"
This is a multi-part message in MIME format.
--------------020905030706060004050403
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Thanks,
now it will work.
I have written an QTextStream helper class.
For all, see the class at the attachment.
Now I can use QTextStreamCGI << cgicc:XXXX :)
Frank
Igor schrieb:
> Hello Frank,
>
> Wednesday, March 25, 2009, 3:20:38 PM, you wrote:
>
>
> That was a correct remark. Each cgicc Element is derived from MStreamable class
> which has << operator defined only for std::ostream. That means there
> is no << operator that knows how to put HTMLBooleanElement into
> QTextStream. But you can write your own operator which would know how
> to do it.
>
> example:
>
> class QTextStream{
> public:
> //just to compile, junk section, if QTextStream knows how to handle
> // std::string, it wouldn't be necessary
> QTextStream& operator << (const string& s){
> return *this;
> }
> };
>
> QTextStream& operator << (QTextStream& qs, const cgicc::MStreamable& obj){
> std::stringstream c;
> obj.render(c);
> qs << c.str();
> return qs;
> }
> QTextStream qs;
> qs << cgicc::a("Send Mail").set("href", "mailto:[email protected]");
>
>
> I didn't use QTextStream so there might be a better way to write
>
> std::stringstream c;
> obj.render(c);
> qs << c.str();
>
> I assumed QTextStream knows how to handle std::string if it is not,
> you got to rewrite QTextStream& operator << (QTextStream& qs, const cgicc::MStreamable& obj)
>
>
>
> FB> Hello Igor,
>
> FB> yes , I search something like in the example,
> FB> but this will not work.
> FB> I get this error when I try to compile it:
>
> FB> error: no match for 'operator<<' in 'ts <<
> FB> cgicc::HTMLBooleanElement<cgicc::aTag>(((const std::basic_string<char,
> FB> std::char_traits<char>, std::allocator<char> >&)(&
> FB> std::basic_string<char, std::char_traits<char>, std::allocator<char>
>>> (((const char*)"Send Mail"), ((const std::allocator<char>&)((const
> FB> std::allocator<char>*)(&
> FB> std::allocator<char>()))))))).cgicc::HTMLBooleanElement<cgicc::aTag>::<anonymous>.cgicc::HTMLElement::set(((const
> FB> std::string&)(& std::basic_string<char, std::char_traits<char>,
> FB> std::allocator<char> >(((const char*)"href"), ((const
> FB> std::allocator<char>&)((const std::allocator<char>*)(&
> FB> std::allocator<char>())))))), ((const std::string&)(&
> FB> std::basic_string<char, std::char_traits<char>, std::allocator<char>
>>> (((const char*)"mailto:[email protected]"), ((const
> FB> std::allocator<char>&)((const std::allocator<char>*)(&
> FB> std::allocator<char>())))))))'
>
> FB> This was my test code
>
> FB> QString Test;
> FB> QTextStream ts(&Test,QIODevice::WriteOnly);
> FB> ts << cgicc::a("Send Mail").set("href","mailto:[email protected]");
>
> FB> Thanks for your help.
>
> FB> Igor schrieb:
>>> Hello Frank,
>>>
>>> Wednesday, March 25, 2009, 11:01:26 AM, you wrote:
>>>
>>> FB> Hello Steve,
>>> FB> I have look at the docu for the class.
>>> FB> But the doc say, that this is for input only,
>>> FB> but my problem is the output that must be go
>>> FB> into the QTextStream.
>>>
>>> cgicc knows nothing about the output, it is your application
>>> that is responsible for what to do with the output cgicc produces.
>>> You may want to put it to cout or QTextStream or whatever.
>>>
>>> QString str;
>>> QTextStream ts( &str, IO_WriteOnly );
>>> ts << cgicc::a("Send Mail").set("href", "mailto:[email protected]");
>>>
>>> or you may try to redirect cout to QTextStream
>>>
>>>
>
>
>
>
>
--------------020905030706060004050403
Content-Type: text/plain;
name="qtextstreamcgi.cpp"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="qtextstreamcgi.cpp"
#include "qtextstreamcgi.h"
#include <sstream>
namespace QFrank
{
QTextStreamCGI::QTextStreamCGI(FILE *datei,QIODevice::OpenMode zugriff):QTextStream(datei,zugriff)
{
}
QTextStreamCGI &QTextStreamCGI:: operator <<(const cgicc::MStreamable &was)
{
std::stringstream ss;
was.render(ss);
QString tmp =QString::fromStdString(ss.str());
QTextStream::operator <<(tmp);
return *this;
}
}
--------------020905030706060004050403
Content-Type: text/plain;
name="qtextstreamcgi.h"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="qtextstreamcgi.h"
#ifndef QTEXTSTREAMCGI_H
#define QTEXTSTREAMCGI_H
#include <QtCore>
#include "cgicc/MStreamable.h"
namespace QFrank
{
class QTextStreamCGI : public QTextStream
{
public:
QTextStreamCGI(FILE *datei,QIODevice::OpenMode zugriff);
QTextStreamCGI& operator <<(const cgicc::MStreamable &was);
};
}
#endif // QTEXTSTREAMCGI_H
--------------020905030706060004050403--
--------------ms020707000501020207070803
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIQVDCC
BSAwggMIoAMCAQICAm2EMA0GCSqGSIb3DQEBBQUAMFQxFDASBgNVBAoTC0NBY2VydCBJbmMu
MR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5vcmcxHDAaBgNVBAMTE0NBY2VydCBDbGFz
cyAzIFJvb3QwHhcNMDkwMTExMDk0MTA2WhcNMTEwMTExMDk0MTA2WjBFMRYwFAYDVQQDFA1G
cmFuayBC/HR0bmVyMSswKQYJKoZIhvcNAQkBFhx0dXhtYXN0ZXI1MDAwQGdvb2dsZW1haWwu
Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzGD11DglG7yzkU/5HGFvMsDb
6dU4JoqM1iU2uELl80pxs+FdzlSE/1YeJazFmFp1VrZHY9skKwFIWem4F9hYGCCs+ayyvpLM
J7x35XoOkdlNYSTyJo8blY42Y+SSW0Jtj/eW/6YOOEo8phKMcSiCl1Q35QSMI4rQ6DgO0yx6
r9XYqZmFZH5Fo3wKJq1WTTHaHpOaXn7os4JCZC7cOeUEBcn95+4YFeJj4MRR7lGMUklgD603
Mhj/5qckKr8VH3eZ/1tDWvzRbpGw3pteEGHYiXAGpgcgN/ncDm8arKHitKPhDeZdVRTjYFic
o2XXDSaVYYAPGAKrEf42hk1UwyyQNQIDAQABo4IBCTCCAQUwDAYDVR0TAQH/BAIwADBWBglg
hkgBhvhCAQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg
b3ZlciB0byBodHRwOi8vd3d3LkNBY2VydC5vcmcwQAYDVR0lBDkwNwYIKwYBBQUHAwQGCCsG
AQUFBwMCBgorBgEEAYI3CgMEBgorBgEEAYI3CgMDBglghkgBhvhCBAEwMgYIKwYBBQUHAQEE
JjAkMCIGCCsGAQUFBzABhhZodHRwOi8vb2NzcC5jYWNlcnQub3JnMCcGA1UdEQQgMB6BHHR1
eG1hc3RlcjUwMDBAZ29vZ2xlbWFpbC5jb20wDQYJKoZIhvcNAQEFBQADggIBAHq+9lsjIQpw
NYEsZlKzSxDU+PHguWu5myNc1EUBK9OuYSECygYJ4+damghs5taz92je3mhbgPwqJ7nBisSr
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
AAA=
--------------ms020707000501020207070803--
--===============1916502685==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
help-cgicc mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-cgicc
--===============1916502685==--