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==--