aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken/sbkconverter.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2011-11-01 16:17:01 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:18:32 -0300
commit249b15aa297663da2def92c817298e9c543777a4 (patch)
tree7abf8e243bf72e4f197632449dfab786538c4ca8 /libshiboken/sbkconverter.cpp
parent8ff54f682c5dc478d268b9bf6e1e5768fc40428e (diff)
Added some setting and converting functions to the new converter's API.
Diffstat (limited to 'libshiboken/sbkconverter.cpp')
-rw-r--r--libshiboken/sbkconverter.cpp30
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);
}