コード例 #1
0
ファイル: __init__.py プロジェクト: pombredanne/pyllisp
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)
コード例 #2
0
ファイル: __init__.py プロジェクト: gordol/lever
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)
コード例 #3
0
ファイル: __init__.py プロジェクト: gordol/lever
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
コード例 #4
0
ファイル: __init__.py プロジェクト: gordol/lever
    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):
コード例 #5
0
ファイル: __init__.py プロジェクト: pombredanne/pyllisp
    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)