Пример #1
0
 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)
Пример #2
0
 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
Пример #3
0
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())))
Пример #4
0
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"))
Пример #5
0
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"))
Пример #6
0
def as_i(obj):
    if not isinstance(obj, space.Integer):
        raise space.unwind(space.LTypeError(u"expected integer"))
    return obj.value
Пример #7
0
def as_u8a(obj):
    if not isinstance(obj, space.Uint8Data):
        raise space.unwind(space.LTypeError(u"expected uint8array"))
    return obj
Пример #8
0
def as_list(obj):
    if not isinstance(obj, space.List):
        raise space.unwind(space.LTypeError(u"expected list"))
    return obj.contents
Пример #9
0
 def contains(self, obj):
     raise space.unwind(space.LTypeError(u"%s cannot contain" %
                                         self.repr()))
Пример #10
0
 def iter(self):
     raise space.unwind(space.LTypeError(u"cannot iterate " + self.repr()))
Пример #11
0
 def call(self, argv):
     raise space.unwind(space.LTypeError(u"cannot call " + self.repr()))