def automem(argv): ctype = argument(argv, 0, Type) if len(argv) >= 2: n = argument(argv, 1, Integer).value size = simple.sizeof_a(ctype, n) else: n = 1 size = simple.sizeof(ctype) pointer = lltype.malloc(rffi.VOIDP.TO, size, flavor='raw') return systemv.AutoMem(systemv.Pointer(ctype), pointer, n)
def automem(ctype, count, clear): ctype = to_type(ctype) if count: n = count.value size = simple.sizeof_a(ctype, n) else: n = 1 size = simple.sizeof(ctype) pointer = lltype.malloc(rffi.VOIDP.TO, size, flavor='raw') if is_true(clear): rffi.c_memset(pointer, 0, size) return systemv.AutoMem(systemv.Pointer(ctype), pointer, n)
def ref(mem): #mem = argument(argv, 0, Object) if isinstance(mem, Mem): size = simple.sizeof(mem.ctype) ctype = mem.ctype elif isinstance(mem, Uint8Data): size = rffi.sizeof(rffi.VOIDP) ctype = c_ubytep else: raise unwind(LTypeError(u"expected object that can be converted to c-object")) pointer = lltype.malloc(rffi.VOIDP.TO, size, flavor='raw') result = systemv.AutoMem(systemv.Pointer(ctype), pointer, 1) result.setattr(u"to", mem) return result
def repr(self): return u"<handle %s from %s>" % (self.name, self.library.name) module = Module(u'ffi', { u'array': systemv.Array.interface, u'bitmask': Bitmask.interface, u'cfunc': CFunc.interface, u'handle': Handle.interface, u'library': Library.interface, u'mem': Mem.interface, u'pointer': systemv.Pointer.interface, u'signed': simple.Signed.interface, u'struct': systemv.Struct.interface, u'union': systemv.Union.interface, u'unsigned': simple.Unsigned.interface, u'voidp': systemv.Pointer(null), u'wrap': Wrap.interface, u'pool': systemv.Pool.interface, }, frozen=True) for name in systemv.types: module.setattr_force(name, systemv.types[name]) def builtin(fn): module.setattr_force(fn.__name__.decode('utf-8'), Builtin(fn)) return fn @builtin @signature(Object) def addressof(obj): if isinstance(obj, Handle):
def repr(self): return u"<handle %s from %s>" % (self.name, self.library.name) module = Module(u'ffi', { u'array': systemv.Array.interface, u'cfunc': CFunc.interface, u'handle': Handle.interface, u'library': Library.interface, u'mem': Mem.interface, u'pointer': systemv.Pointer.interface, u'signed': simple.Signed.interface, u'struct': systemv.Struct.interface, u'union': systemv.Union.interface, u'unsigned': simple.Unsigned.interface, u'voidp': systemv.Pointer(null), u'wrap': Wrap.interface, }, frozen=True) for name in systemv.types: module.setattr_force(name, systemv.types[name]) def builtin(fn): module.setattr_force(fn.__name__.decode('utf-8'), Builtin(fn)) return fn @builtin @signature(Object, Type) def cast(obj, ctype): if isinstance(obj, Handle): return Handle(obj.library, obj.name, obj.pointer, ctype)