aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/libshiboken/sbkconverter_p.h
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2017-09-11 13:36:35 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2017-11-06 08:30:27 +0000
commit764498b3d033a1c947a40dc1b2237e81b674992b (patch)
tree9245056c6f5cbc9b85bf942d2b74dc9ca740627f /sources/shiboken2/libshiboken/sbkconverter_p.h
parent8c9037dc83fbdbb0b9913961fbe7f84066630e18 (diff)
Implement proper void pointer (void*) support
This change introduces a new type into the shiboken2 module which is imported by calling "import PySide2.support.VoidPtr". The type takes care of conversions from / to void* values in function signatures. Creating an instance can be done by passing either a shiboken wrapped object, or an integer representing an address, or a python object that implements the buffer interface. For example, this is useful for passing numpy arrays to C OpenGL functions that take void* parameters. First you convert the array into a bytestring (using numpy.array.tobytes(), then you instantiate a VoidPtr from that bytestring, and finally you pass it along to a GL function. One corner case that is currently not supported is void** parameters. Change-Id: I01e291d6856cb6bd8b5175adc3ead6b728036535 Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/shiboken2/libshiboken/sbkconverter_p.h')
-rw-r--r--sources/shiboken2/libshiboken/sbkconverter_p.h25
1 files changed, 0 insertions, 25 deletions
diff --git a/sources/shiboken2/libshiboken/sbkconverter_p.h b/sources/shiboken2/libshiboken/sbkconverter_p.h
index 7efccbab4..110358273 100644
--- a/sources/shiboken2/libshiboken/sbkconverter_p.h
+++ b/sources/shiboken2/libshiboken/sbkconverter_p.h
@@ -533,29 +533,4 @@ struct Primitive<std::string> : TwoPrimitive<std::string>
}
};
-// Void pointer ----------------------------------------------------------------------------
-
-template <>
-struct Primitive<void*> : OnePrimitive<void*>
-{
- static PyObject* toPython(const void* cppIn)
- {
- SbkDbg() << cppIn;
- if (!cppIn)
- Py_RETURN_NONE;
- PyObject *result = reinterpret_cast<PyObject *>(const_cast<void *>(cppIn));
- Py_INCREF(result);
- return result;
- }
- static void toCpp(PyObject* pyIn, void* cppOut)
- {
- SbkDbg() << pyIn;
- *reinterpret_cast<void **>(cppOut) = pyIn;
- }
- static PythonToCppFunc isConvertible(PyObject *)
- {
- return toCpp;
- }
-};
-
#endif // SBK_CONVERTER_P_H