diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2017-09-11 13:36:35 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2017-11-06 08:30:27 +0000 |
commit | 764498b3d033a1c947a40dc1b2237e81b674992b (patch) | |
tree | 9245056c6f5cbc9b85bf942d2b74dc9ca740627f /sources/shiboken2/tests/samplebinding/typesystem_sample.xml | |
parent | 8c9037dc83fbdbb0b9913961fbe7f84066630e18 (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/tests/samplebinding/typesystem_sample.xml')
-rw-r--r-- | sources/shiboken2/tests/samplebinding/typesystem_sample.xml | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/sources/shiboken2/tests/samplebinding/typesystem_sample.xml b/sources/shiboken2/tests/samplebinding/typesystem_sample.xml index 65f989e7e..e4e8f7e22 100644 --- a/sources/shiboken2/tests/samplebinding/typesystem_sample.xml +++ b/sources/shiboken2/tests/samplebinding/typesystem_sample.xml @@ -2235,17 +2235,7 @@ </modify-function> </value-type> - <value-type name="VoidHolder"> - <modify-function signature="gimmeMeSomeVoidPointer()"> - <modify-argument index="return"> - <replace-type modified-type="PyObject*"/> - </modify-argument> - <inject-code class="target" position="end"> - %RETURN_TYPE %0 = %TYPE::%FUNCTION_NAME(); - %PYARG_0 = Shiboken::Object::newObject(&SbkObject_Type, %0, false, false); - </inject-code> - </modify-function> - </value-type> + <value-type name="VoidHolder" /> <object-type name="PrivateCtor" /> <object-type name="PrivateDtor" /> |