[PyKDE] Interfacing to C++ standard library

Torsten Marek shlomme at gmx.net
Wed Dec 11 22:25:00 GMT 2002


Jim Bublitz schrieb:
> On 11-Dec-02 Paul F. Kunz wrote:
> 
>>   To complete my SIP based Python extension module, I need to
>>convert from C++ to Python and vica versa an std::vector<double>
>>and std::vector<std::string>.   I found some hints in this
>>mailing list's archive dated 13 Apr 2002.   Is there a better
>>source of information on how to proceed?
> 
> 
> ...
> You'll might also need to use the same methods for std::string
> to convert to/from either a Python string or QString if it's used
> outside the mapped type/member code for std::vector<std::string>.
This is the mapping code for string:

%MappedType string
{
%HeaderCode
#include <string>
%End
%ConvertFromTypeCode
     const char *s = sipCpp->c_str();
     return PyString_FromString(s);
%End
%ConvertToTypeCode
         // Allow a Python string whenever a string is expected.
         if (sipIsErr == NULL)
             return PyString_Check(sipPy);
         if (sipPy == Py_None) {
             *sipCppPtr = NULL;
             return 0;
         }
         if (PyString_Check(sipPy)) {
             *sipCppPtr = new string(PyString_AS_STRING(sipPy));
             return 0;
         }
         *sipCppPtr = (string *)sipForceConvertTo_string(sipPy,sipIsErr);
         return 1;
%End
};

It should just need string being replaced by std::string and 
sipForceConvertTo_string(...) renamed to 
sipForceConvertTo_std_string(...), but I'm not really sure about the 
naming scheme, so please try yourself, before I post incorrect code.

Greetings

Torsten




More information about the PyQt mailing list