diff options
Diffstat (limited to 'libshiboken/sbkconverter.cpp')
-rw-r--r-- | libshiboken/sbkconverter.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/libshiboken/sbkconverter.cpp b/libshiboken/sbkconverter.cpp index b252e16c7..c5e64f3dd 100644 --- a/libshiboken/sbkconverter.cpp +++ b/libshiboken/sbkconverter.cpp @@ -41,7 +41,8 @@ static SbkConverter* createConverterObject(PyTypeObject* type, converter->pointerToPython = pointerToPythonFunc; converter->copyToPython = copyToPythonFunc; - converter->toCppPointerConversion = std::make_pair(toCppPointerCheckFunc, toCppPointerConvFunc); + if (toCppPointerCheckFunc && toCppPointerConvFunc) + converter->toCppPointerConversion = std::make_pair(toCppPointerCheckFunc, toCppPointerConvFunc); converter->toCppConversions.clear(); return converter; @@ -60,6 +61,11 @@ SbkConverter* createConverter(SbkObjectType* type, return converter; } +SbkConverter* createConverter(PyTypeObject* type, CppToPythonFunc toPythonFunc) +{ + return createConverterObject(type, 0, 0, 0, toPythonFunc); +} + void deleteConverter(SbkConverter* converter) { if (converter) { @@ -178,16 +184,27 @@ void pythonToCppPointer(SbkObjectType* type, PyObject* pyIn, void* cppOut) *((void**)cppOut) = (pyIn == Py_None) ? 0 : cppPointer((PyTypeObject*)type, (SbkObject*)pyIn); } -void pythonToCppCopy(SbkObjectType* type, PyObject* pyIn, void* cppOut) +static void _pythonToCppCopy(SbkConverter* converter, PyObject* pyIn, void* cppOut) { - assert(type); + assert(converter); assert(pyIn); assert(cppOut); - PythonToCppFunc toCpp = IsPythonToCppConvertible(type->d->converter, pyIn); + PythonToCppFunc toCpp = IsPythonToCppConvertible(converter, pyIn); if (toCpp) toCpp(pyIn, cppOut); } +void pythonToCppCopy(SbkObjectType* type, PyObject* pyIn, void* cppOut) +{ + assert(type); + _pythonToCppCopy(type->d->converter, pyIn, cppOut); +} + +void pythonToCpp(SbkConverter* converter, PyObject* pyIn, void* cppOut) +{ + _pythonToCppCopy(converter, pyIn, cppOut); +} + bool isImplicitConversion(SbkObjectType* type, PythonToCppFunc toCppFunc) { // This is the Object Type or Value Type conversion that only |