diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-11-01 16:17:01 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:18:32 -0300 |
commit | 249b15aa297663da2def92c817298e9c543777a4 (patch) | |
tree | 7abf8e243bf72e4f197632449dfab786538c4ca8 /libshiboken/sbkconverter.cpp | |
parent | 8ff54f682c5dc478d268b9bf6e1e5768fc40428e (diff) |
Added some setting and converting functions to the new converter's API.
Diffstat (limited to 'libshiboken/sbkconverter.cpp')
-rw-r--r-- | libshiboken/sbkconverter.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/libshiboken/sbkconverter.cpp b/libshiboken/sbkconverter.cpp index 32d43507e..202ba2647 100644 --- a/libshiboken/sbkconverter.cpp +++ b/libshiboken/sbkconverter.cpp @@ -125,6 +125,18 @@ void deleteConverter(SbkConverter* converter) } } +void setCppPointerToPythonFunction(SbkConverter* converter, CppToPythonFunc pointerToPythonFunc) +{ + converter->pointerToPython = pointerToPythonFunc; +} + +void setPythonToCppPointerFunctions(SbkConverter* converter, + PythonToCppFunc toCppPointerConvFunc, + IsConvertibleToCppFunc toCppPointerCheckFunc) +{ + converter->toCppPointerConversion = std::make_pair(toCppPointerCheckFunc, toCppPointerConvFunc); +} + void addPythonToCppValueConversion(SbkConverter* converter, PythonToCppFunc pythonToCppFunc, IsConvertibleToCppFunc isConvertibleToCppFunc) @@ -140,9 +152,15 @@ void addPythonToCppValueConversion(SbkObjectType* type, PyObject* pointerToPython(SbkObjectType* type, const void* cppIn) { + return pointerToPython(type->d->converter, cppIn); +} + +PyObject* pointerToPython(SbkConverter* converter, const void* cppIn) +{ + assert(converter); if (!cppIn) Py_RETURN_NONE; - return type->d->converter->pointerToPython(cppIn); + return converter->pointerToPython(cppIn); } PyObject* referenceToPython(SbkObjectType* type, const void* cppIn) @@ -236,6 +254,14 @@ void pythonToCppPointer(SbkObjectType* type, PyObject* pyIn, void* cppOut) *((void**)cppOut) = (pyIn == Py_None) ? 0 : cppPointer((PyTypeObject*)type, (SbkObject*)pyIn); } +void pythonToCppPointer(SbkConverter* converter, PyObject* pyIn, void* cppOut) +{ + assert(converter); + assert(pyIn); + assert(cppOut); + *((void**)cppOut) = (pyIn == Py_None) ? 0 : cppPointer((PyTypeObject*)converter->pythonType, (SbkObject*)pyIn); +} + static void _pythonToCppCopy(SbkConverter* converter, PyObject* pyIn, void* cppOut) { assert(converter); @@ -252,7 +278,7 @@ void pythonToCppCopy(SbkObjectType* type, PyObject* pyIn, void* cppOut) _pythonToCppCopy(type->d->converter, pyIn, cppOut); } -void pythonToCpp(SbkConverter* converter, PyObject* pyIn, void* cppOut) +void pythonToCppCopy(SbkConverter* converter, PyObject* pyIn, void* cppOut) { _pythonToCppCopy(converter, pyIn, cppOut); } |