On Tuesday 21 March 2006 10:23, Giovanni Bajo wrote: > Hello, > > I'm writing a SIP wrapper for a serie of overloaded functions like this: > > void Foo(char *str); > void Foo(wchar_t *str); > > void Bar(char *str); > void Bar(wchar_t *str); > > [etc.] > > Python supports conversion to/from wchar_t buffers using > PyUnicode_From/AsWideChar, but SIP does not support it. Could this be added > automatically? > > This notwithstanding, I couldn't find a way to use %MappedType to solve my > problem, without having to write many duplicated %MappedCode. Any pointer?
Same as the following, except "%MappedType wchar_t" and other obvious changes. You'd only have to write it once - all conversions will be handled correctly wherever wchar_t is referenced. %MappedType longlong //converts a Python long { %TypeHeaderCode typedef long long longlong; #if PY_MAJOR_VERSION >= 2 && PY_MINOR_VERSION >= 3 #define LONG_LONG PY_LONG_LONG #endif %End %ConvertFromTypeCode if (!sipCpp) Py_INCREF (Py_None); return Py_None; return PyLong_FromLongLong (*(LONG_LONG *)sipCpp); %End %ConvertToTypeCode if (sipIsErr == NULL) return PyLong_Check (sipPy) || PyInt_Check (sipPy); long long *ll = new long long; *ll = 0; if (PyLong_Check (sipPy)) *ll = PyLong_AsLongLong (sipPy); else if (PyInt_Check (sipPy)) *ll = (long long)PyInt_AS_LONG (sipPy); *sipCppPtr = ll; return 1; %End }; Jim _______________________________________________ PyKDE mailing list PyKDE@mats.imk.fraunhofer.de http://mats.imk.fraunhofer.de/mailman/listinfo/pykde