def get_constant(self, ty, val): assert not self.is_struct_type(ty) lty = self.get_value_type(ty) if ty == types.none: assert val is None return self.get_dummy_value() elif ty == types.boolean: return Constant.int(Type.int(1), int(val)) elif ty in types.signed_domain: return Constant.int_signextend(lty, val) elif ty in types.unsigned_domain: return Constant.int(lty, val) elif ty in types.real_domain: return Constant.real(lty, val) elif isinstance(ty, types.UniTuple): consts = [self.get_constant(ty.dtype, v) for v in val] return Constant.array(consts[0].type, consts) raise NotImplementedError(ty)
def get_constant(self, ty, val): assert not self.is_struct_type(ty) lty = self.get_value_type(ty) if ty == types.none: assert val is None return self.get_dummy_value() elif ty == types.boolean: return Constant.int(Type.int(1), int(val)) elif ty in types.signed_domain: return Constant.int_signextend(lty, val) elif ty in types.unsigned_domain: return Constant.int(lty, val) elif ty in types.real_domain: return Constant.real(lty, val) elif isinstance(ty, types.UniTuple): consts = [self.get_constant(ty.dtype, v) for v in val] return Constant.array(consts[0].type, consts) raise NotImplementedError("cannot lower constant of type '%s'" % (ty,))
def get_constant(self, ty, val): assert not self.is_struct_type(ty) lty = self.get_value_type(ty) if ty == types.none: assert val is None return self.get_dummy_value() elif ty == types.boolean: return Constant.int(Type.int(1), int(val)) elif ty in types.signed_domain: return Constant.int_signextend(lty, val) elif ty in types.unsigned_domain: return Constant.int(lty, val) elif ty in types.real_domain: return Constant.real(lty, val) elif isinstance(ty, (types.NPDatetime, types.NPTimedelta)): return Constant.real(lty, val.astype(numpy.int64)) elif isinstance(ty, (types.UniTuple, types.NamedUniTuple)): consts = [self.get_constant(ty.dtype, v) for v in val] return Constant.array(consts[0].type, consts) raise NotImplementedError("cannot lower constant of type '%s'" % (ty, ))
types.int16: Type.int(16), types.int32: Type.int(32), types.int64: Type.int(64), types.float32: Type.float(), types.float64: Type.double(), } STRUCT_TYPES = { types.complex64: builtins.Complex64, types.complex128: builtins.Complex128, types.slice3_type: builtins.Slice, } Status = namedtuple("Status", ("code", "ok", "err", "exc", "none")) RETCODE_OK = Constant.int_signextend(Type.int(), 0) RETCODE_NONE = Constant.int_signextend(Type.int(), -2) RETCODE_EXC = Constant.int_signextend(Type.int(), -1) class Overloads(object): def __init__(self): self.versions = [] def find(self, sig): for i, ver in enumerate(self.versions): if ver.signature == sig: return ver # As generic type if self._match_arglist(ver.signature.args, sig.args):
types.int16: Type.int(16), types.int32: Type.int(32), types.int64: Type.int(64), types.float32: Type.float(), types.float64: Type.double(), } STRUCT_TYPES = { types.complex64: builtins.Complex64, types.complex128: builtins.Complex128, types.slice3_type: builtins.Slice, } Status = namedtuple("Status", ("code", "ok", "err", "exc", "none")) RETCODE_OK = Constant.int_signextend(Type.int(), 0) RETCODE_NONE = Constant.int_signextend(Type.int(), -2) RETCODE_EXC = Constant.int_signextend(Type.int(), -1) class Overloads(object): def __init__(self): self.versions = [] def find(self, sig): for i, ver in enumerate(self.versions): if ver.signature == sig: return ver # As generic type nargs_matches = len(ver.signature.args) == len(sig.args)