[PyQt] SIP Support for wchar_t

Giovanni Bajo rasky at develer.com
Tue Mar 27 10:50:04 BST 2007


On 3/25/2007 4:06 PM, Phil Thompson wrote:

> As of tonight's snapshot SIP has support for wchar_t. There are some issues 
> related to wide strings and the heap - see the documentation for details - 
> which could be partly addressed with some new annotations. I'd prefer that 
> any changes are based on real world examples, so let me have some feedback if 
> you use want to use wchar_t in your own bindings.

I used to use this code:

%MappedType wchar_t
{
%ConvertFromTypeCode
     if (!sipCpp)
     {
         Py_INCREF (Py_None);
         return Py_None;
     }
     return PyUnicode_FromUnicode(sipCpp, wcslen(sipCpp));
%End

%ConvertToTypeCode
     if (sipIsErr == NULL)
         return PyUnicode_Check(sipPy);

     size_t sz = PyUnicode_GetSize(sipPy);
     wchar_t *wc = new wchar_t[sz+1];
     wc[sz] = 0;
     PyUnicode_AsWideChar((PyUnicodeObject*)sipPy, wc, sz);
     *sipCppPtr = wc;
     sipTransferObj = Py_None;
     return 1;
%End
};


I'm now testing the native wchar_t support without it, but do you 
foresee any memory leak problems (which are pretty hard to find out...)?
-- 
Giovanni Bajo



More information about the PyQt mailing list