Author: Wim Lavrijsen <[email protected]>
Branch: cling-support
Changeset: r85668:979fabdcc11a
Date: 2016-07-12 09:52 -0700
http://bitbucket.org/pypy/pypy/changeset/979fabdcc11a/
Log: from Aditi: proper type codes for instances converters
diff --git a/pypy/module/cppyy/converter.py b/pypy/module/cppyy/converter.py
--- a/pypy/module/cppyy/converter.py
+++ b/pypy/module/cppyy/converter.py
@@ -455,9 +455,10 @@
uses_local = True
class InstanceRefConverter(TypeConverter):
- _immutable_fields_ = ['libffitype', 'cppclass']
+ _immutable_fields_ = ['libffitype', 'typecode', 'cppclass']
libffitype = jit_libffi.types.pointer
+ typecode = 'V'
def __init__(self, space, cppclass):
from pypy.module.cppyy.interp_cppyy import W_CPPClass
@@ -480,7 +481,7 @@
x[0] = rffi.cast(rffi.VOIDP, self._unwrap_object(space, w_obj))
address = rffi.cast(capi.C_OBJECT, address)
ba = rffi.cast(rffi.CCHARP, address)
- ba[capi.c_function_arg_typeoffset(space)] = 'o'
+ ba[capi.c_function_arg_typeoffset(space)] = self.typecode
def convert_argument_libffi(self, space, w_obj, address, call_local):
x = rffi.cast(rffi.VOIDPP, address)
@@ -502,6 +503,7 @@
class InstancePtrConverter(InstanceRefConverter):
+ typecode = 'o'
def _unwrap_object(self, space, w_obj):
try:
diff --git a/pypy/module/cppyy/src/clingcwrapper.cxx
b/pypy/module/cppyy/src/clingcwrapper.cxx
--- a/pypy/module/cppyy/src/clingcwrapper.cxx
+++ b/pypy/module/cppyy/src/clingcwrapper.cxx
@@ -377,6 +377,7 @@
case 'D': /* long double */
vargs[i] = (void*)&args[i].fValue.fLongDouble;
break;
+ case 'a':
case 'o':
case 'p': /* void* */
vargs[i] = (void*)&args[i].fValue.fVoidp;
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit