Esempio n. 1
0
 def _unwrap_object(self, space, w_obj):
     from pypy.module.cppyy.interp_cppyy import W_CPPInstance
     if isinstance(w_obj, W_CPPInstance):
         if capi.c_is_subtype(space, w_obj.cppclass, self.cppclass):
             rawobject = w_obj.get_rawobject()
             offset = capi.c_base_offset(space, w_obj.cppclass, self.cppclass, rawobject, 1)
             obj_address = capi.direct_ptradd(rawobject, offset)
             return rffi.cast(capi.C_OBJECT, obj_address)
     raise oefmt(space.w_TypeError, "cannot pass %T as %s",
                 w_obj, self.cppclass.name)
Esempio n. 2
0
 def _unwrap_object(self, space, w_obj):
     from pypy.module.cppyy.interp_cppyy import W_CPPInstance
     if isinstance(w_obj, W_CPPInstance):
         if capi.c_is_subtype(space, w_obj.cppclass, self.cppclass):
             rawobject = w_obj.get_rawobject()
             offset = capi.c_base_offset(space, w_obj.cppclass,
                                         self.cppclass, rawobject, 1)
             obj_address = capi.direct_ptradd(rawobject, offset)
             return rffi.cast(capi.C_OBJECT, obj_address)
     raise oefmt(space.w_TypeError, "cannot pass %T as %s", w_obj,
                 self.cppclass.name)
Esempio n. 3
0
 def _unwrap_object(self, space, w_obj):
     from pypy.module.cppyy.interp_cppyy import W_CPPInstance
     obj = space.interpclass_w(w_obj)
     if isinstance(obj, W_CPPInstance):
         if capi.c_is_subtype(obj.cppclass, self.cppclass):
             rawobject = obj.get_rawobject()
             offset = capi.c_base_offset(obj.cppclass, self.cppclass, rawobject, 1)
             obj_address = capi.direct_ptradd(rawobject, offset)
             return rffi.cast(capi.C_OBJECT, obj_address)
     raise OperationError(space.w_TypeError,
                          space.wrap("cannot pass %s as %s" %
                          (space.type(w_obj).getname(space, "?"), self.cppclass.name)))