예제 #1
0
def sizeof(tp):
    assert isinstance(tp, Type)
    if tp.size == 0 or tp.align == 0:
        raise unwind(LTypeError(u"cannot determine size of opaque type"))
    return tp.size
예제 #2
0
 def cast_to_ffitype(self):
     for rtype in signed_types:
         if self.size == rffi.sizeof(rtype):
             return clibffi.cast_type_to_ffitype(rtype)
     else:
         raise unwind(LTypeError(u"undefined ffi type: %s" % self.repr()))
예제 #3
0
 def store(self, pool, offset, value):
     raise unwind(LTypeError(u".store method missing"))
예제 #4
0
 def load(self, offset, copy):
     for rtype in floating_types:
         if self.size == rffi.sizeof(rtype):
             return Float(rffi.cast(rffi.DOUBLE, rffi.cast(rffi.CArrayPtr(rtype), offset)[0]))
     else:
         raise unwind(LTypeError(u"undefined ffi type: %s" % self.repr()))
예제 #5
0
 def load(self, offset, copy):
     raise unwind(LTypeError(u".load method missing"))
예제 #6
0
 def cast_to_ffitype(self):
     raise unwind(LTypeError(u".cast_to_ffitype method missing"))
예제 #7
0
 def load(self, offset, copy):
     for rtype in unsigned_types:
         if self.size == rffi.sizeof(rtype):
             return Integer(rffi.cast(rffi.LONG, rffi.cast(rffi.CArrayPtr(rtype), offset)[0]))
     else:
         raise unwind(LTypeError(u"undefined ffi type: %s" % self.repr()))