def get_ffi_type_kind(ffi_type): from pypy.rlib.libffi import types kind = types.getkind(ffi_type) if kind == 'i' or kind == 'u': return history.INT elif kind == 'f': return history.FLOAT elif kind == 'v': return history.VOID raise UnsupportedKind("Unsupported kind '%s'" % kind)
def get_ffi_type_kind(cpu, ffi_type): from pypy.rlib.libffi import types kind = types.getkind(ffi_type) if kind == 'i' or kind == 'u': return history.INT elif cpu.supports_floats and kind == 'f': return history.FLOAT elif kind == 'v': return history.VOID elif cpu.supports_longlong and (kind == 'I' or kind == 'U'): # longlong return 'L' elif cpu.supports_singlefloats and kind == 's': # singlefloat return 'S' raise UnsupportedKind("Unsupported kind '%s'" % kind)
def is_ffi_type_signed(ffi_type): from pypy.rlib.libffi import types kind = types.getkind(ffi_type) return kind != 'u'