def call(self, argv): if self.instantiate is None: if self.name == u'null': raise space.unwind(space.LTypeError(u"cannot call null")) raise space.unwind( space.LTypeError(u"cannot instantiate " + self.name)) return self.instantiate(self, argv)
def setitem(self, index, value): if not isinstance(index, Integer): raise space.unwind(space.LTypeError(u"index not an integer")) if not 0 <= index.value < len(self.contents): raise space.unwind(space.LKeyError(self, index)) self.contents[index.value] = value return value
def cast(x, cls, info=u"something"): if isinstance(x, cls): # This here means that cast won't change object return x # if it is already correct type. try: fn = cast_methods[cls] except KeyError as _: raise space.unwind( space.LTypeError(u"expected %s is %s, got %s" % (info, cls.interface.name, x.repr()))) res = fn(x) if isinstance(res, cls): return res # TODO: Consider alternative ways to say it. :) raise space.unwind( space.LTypeError( u"implicit conversion of %s at %s into %s returned %s" % (x.repr(), info, cls.interface.name, res.repr())))
def to_int(obj): if isinstance(obj, Float): return int(obj.number) elif isinstance(obj, Integer): return obj.value elif isinstance(obj, Boolean): if is_true(obj): return 1 else: return 0 else: raise space.unwind(space.LTypeError(u"expected int value"))
def to_float(obj): if isinstance(obj, Float): return obj.number elif isinstance(obj, Integer): return float(obj.value) elif isinstance(obj, Boolean): if is_true(obj): return 1.0 else: return 0.0 else: raise space.unwind(space.LTypeError(u"expected float value"))
def as_i(obj): if not isinstance(obj, space.Integer): raise space.unwind(space.LTypeError(u"expected integer")) return obj.value
def as_u8a(obj): if not isinstance(obj, space.Uint8Data): raise space.unwind(space.LTypeError(u"expected uint8array")) return obj
def as_list(obj): if not isinstance(obj, space.List): raise space.unwind(space.LTypeError(u"expected list")) return obj.contents
def contains(self, obj): raise space.unwind(space.LTypeError(u"%s cannot contain" % self.repr()))
def iter(self): raise space.unwind(space.LTypeError(u"cannot iterate " + self.repr()))
def call(self, argv): raise space.unwind(space.LTypeError(u"cannot call " + self.repr()))