Example #1
0
 def contains(self, obj):
     custom_interface = jit.promote(self.custom_interface)
     method = custom_interface.lookup_method(u"+contains")
     if method is None:
         return Object.contains(self, obj)
     else:
         return space.is_true(method.call([self, obj]))
Example #2
0
 def listattr(self):
     listing = Object.listattr(self)
     for name, cell in self.cells.items():
         if isinstance(cell, ShadowCell) and cell.link is not None:
             continue
         listing.append(space.String(name))
     return listing
Example #3
0
 def listattr(self):
     listing = Object.listattr(self)
     for name, cell in self.cells.items():
         if isinstance(cell, ShadowCell) and cell.link is not None:
             continue
         listing.append(space.String(name))
     return listing
Example #4
0
 def getitem(self, index):
     try:
         method = self.custom_interface.methods[u"+getitem"]
     except KeyError as error:
         return Object.getitem(self, index)
     else:
         return method.call([self, index])
Example #5
0
 def iter(self):
     try:
         method = self.custom_interface.methods[u"+iter"]
     except KeyError as error:
         return Object.iter(self)
     else:
         return method.call([self])
Example #6
0
 def setitem(self, index, value):
     custom_interface = jit.promote(self.custom_interface)
     method = custom_interface.lookup_method(u"+setitem")
     if method is None:
         return Object.setitem(self, index, value)
     else:
         return method.call([self, index, value])
Example #7
0
 def setitem(self, index, value):
     try:
         method = self.custom_interface.methods[u"+setitem"]
     except KeyError as error:
         return Object.setitem(self, index, value)
     else:
         return method.call([self, index, value])
Example #8
0
 def iter(self):
     custom_interface = jit.promote(self.custom_interface)
     method = custom_interface.lookup_method(u"+iter")
     if method is None:
         return Object.iter(self)
     else:
         return method.call([self])
Example #9
0
 def getattr(self, name):
     map = jit.promote(self.map)
     index = map.getindex(name)
     if index != -1:
         return self.storage[index]
     else:
         return Object.getattr(self, name)
Example #10
0
 def contains(self, obj):
     try:
         method = self.custom_interface.methods[u"+contains"]
     except KeyError as error:
         return Object.contains(self, obj)
     else:
         return space.is_true(method.call([self, obj]))
Example #11
0
 def iter(self):
     try:
         method = self.custom_interface.methods[u"+iter"]
     except KeyError as error:
         return Object.iter(self)
     else:
         return method.call([self])
Example #12
0
 def setitem(self, index, value):
     try:
         method = self.custom_interface.methods[u"+setitem"]
     except KeyError as error:
         return Object.setitem(self, index, value)
     else:
         return method.call([self, index, value])
Example #13
0
 def getitem(self, index):
     try:
         method = self.custom_interface.methods[u"+getitem"]
     except KeyError as error:
         return Object.getitem(self, index)
     else:
         return method.call([self, index])
Example #14
0
 def call(self, argv):
     try:
         method = self.custom_interface.methods[u"+call"]
     except KeyError as error:
         return Object.call(self, argv)
     else:
         return method.call([self] + argv)
Example #15
0
 def contains(self, obj):
     try:
         method = self.custom_interface.methods[u"+contains"]
     except KeyError as error:
         return Object.contains(self, obj)
     else:
         return space.is_true(method.call([self, obj]))
Example #16
0
 def getattr(self, name):
     if name == u"doc":
         return self.doc
     elif name == u"loc":
         source, start, stop = self.source_location
         obj = space.Exnihilo()
         obj.setattr(u"source", space.String(source))
         obj.setattr(u"start", space.Integer(start))
         obj.setattr(u"stop", space.Integer(stop))
         return obj
     elif name == u"spec":
         argc, optional, variadic, varnames, argtypes = self.spec
         varnames = [
             space.String(name.decode('utf-8')) for name in varnames
         ]
         spec = space.Exnihilo()
         spec.setattr(u'argc', space.Integer(rffi.r_long(argc)))
         spec.setattr(u'optional', space.Integer(rffi.r_long(optional)))
         spec.setattr(u'is_variadic', space.boolean(variadic))
         spec.setattr(u'varnames', space.List(list(varnames)))
         if argtypes is not None:
             spec.setattr(u'argtypes', space.List(list(argtypes)))
         else:
             spec.setattr(u'argtypes', space.null)
         return spec
     else:
         return Object.getattr(self, name)
Example #17
0
 def getitem(self, index):
     custom_interface = jit.promote(self.custom_interface)
     method = custom_interface.lookup_method(u"+getitem")
     if method is None:
         return Object.getitem(self, index)
     else:
         return method.call([self, index])
Example #18
0
 def getattr(self, name):
     if name == u'length':
         return Integer(len(self.string))
     if name == u'utf8':
         return space.to_uint8array(
             self.string.encode('utf-8'))
     return Object.getattr(self, name)
Example #19
0
 def call(self, argv):
     custom_interface = jit.promote(self.custom_interface)
     method = custom_interface.lookup_method(u"+call")
     if method is None:
         return Object.call(self, argv)
     else:
         return method.call([self] + argv)
Example #20
0
 def call(self, argv):
     try:
         method = self.custom_interface.methods[u"+call"]
     except KeyError as error:
         return Object.call(self, argv)
     else:
         return method.call([self] + argv)
Example #21
0
 def setattr(self, name, value):
     if name == u"get":
         self.getter = value
         return value
     if name == u"set":
         self.setter = value
         return value
     return Object.setattr(self, name, value)
Example #22
0
 def hash(self):
     custom_interface = jit.promote(self.custom_interface)
     method = custom_interface.lookup_method(u"+hash")
     if method is None:
         return Object.hash(self)
     else:
         result = method.call([self])
         return int(space.cast(result, space.Integer, u"+hash cast").value)
Example #23
0
 def getattr(self, name):
     if name == u"link":
         return self.doc
     if name == u"name":
         return self.name
     if name == u"parent":
         return self.parent
     return Object.getattr(self, name)
Example #24
0
 def hash(self):
     method = self.custom_interface.lookup_method(u"+hash")
     if method is None:
         return Object.hash(self)
     else:
         result = method.call([self])
         assert isinstance(result, space.Integer)
         return int(result.value)
Example #25
0
 def repr(self):
     method = self.custom_interface.lookup_method(u"+repr")
     if method is None:
         return Object.repr(self)
     else:
         result = method.call([self])
         assert isinstance(result, space.String)
         return result.string
Example #26
0
 def repr(self):
     custom_interface = jit.promote(self.custom_interface)
     method = custom_interface.lookup_method(u"+repr")
     if method is None:
         return Object.repr(self)
     else:
         result = method.call([self])
         return space.cast(result, space.String, u"+repr cast").string
Example #27
0
 def getattr(self, name):
     if name == u'start':
         return self.start
     if name == u'stop':
         return self.stop
     if name == u'step':
         return self.step
     return Object.getattr(self, name)
Example #28
0
 def setattr(self, name, value):
     if name == u"get":
         self.getter = value
         return value
     if name == u"set":
         self.setter = value
         return value
     return Object.setattr(self, name, value)
Example #29
0
 def getattr(self, name):
     if name == u'start':
         return self.start
     if name == u'stop':
         return self.stop
     if name == u'step':
         return self.step
     return Object.getattr(self, name)
Example #30
0
 def setattr(self, index, value):
     if index == u"default":
         self.default = value
         return value
     if index == u"doc":
         self.doc = value
         return value
     return Object.setattr(self, index, value)
Example #31
0
 def repr(self):
     try:
         method = self.custom_interface.methods[u"+repr"]
     except KeyError as error:
         return Object.repr(self)
     else:
         result = method.call([self])
         assert isinstance(result, space.String)
         return result.string
Example #32
0
 def hash(self):
     try:
         method = self.custom_interface.methods[u"+hash"]
     except KeyError as error:
         return Object.hash(self)
     else:
         result = method.call([self])
         assert isinstance(result, space.Integer)
         return int(result.value)
Example #33
0
 def hash(self):
     try:
         method = self.custom_interface.methods[u"+hash"]
     except KeyError as error:
         return Object.hash(self)
     else:
         result = method.call([self])
         assert isinstance(result, space.Integer)
         return int(result.value)
Example #34
0
 def repr(self):
     try:
         method = self.custom_interface.methods[u"+repr"]
     except KeyError as error:
         return Object.repr(self)
     else:
         result = method.call([self])
         assert isinstance(result, space.String)
         return result.string
Example #35
0
 def getattr(self, name):
     try:
         cell = jit.promote(self.lookup(name))
         if isinstance(cell, FrozenCell):
             return cell.slot
         elif isinstance(cell, MutableCell):
             return cell.slot
         else:
             assert False
     except KeyError:
         return Object.getattr(self, name)
Example #36
0
 def getattr(self, name):
     try:
         cell = jit.promote(self.lookup(name))
         if isinstance(cell, FrozenCell):
             return cell.slot
         elif isinstance(cell, MutableCell):
             return cell.slot
         else:
             assert False
     except KeyError:
         return Object.getattr(self, name)
Example #37
0
 def getattr(self, index):
     if index == u"arity":
         return space.Integer(self.arity)
     if index == u"default":
         return self.default
     if index == u"doc":
         return self.doc
     if index == u"size":  # Used for ensuring that the gc+sleep can
         a = len(self.multimethod_table)  # bite into the weak references.
         return Integer(a)
     return Object.getattr(self, index)
Example #38
0
 def getattr(self, index):
     try:
         return self.cells[index]
     except KeyError as e:
         try:
             method = self.custom_interface.methods[index]
         except KeyError as e:
             return Object.getattr(self, index)
         if isinstance(method, Property):
             return method.getter.call([self])
         else:
             return BoundMethod(self, index, method)
Example #39
0
 def getattr(self, index):
     try:
         return self.cells[index]
     except KeyError as e:
         try:
             method = self.custom_interface.methods[index]
         except KeyError as e:
             return Object.getattr(self, index)
         if isinstance(method, Property):
             return method.getter.call([self])
         else:
             return BoundMethod(self, index, method)
Example #40
0
 def getattr(self, name):
     map = jit.promote(self.map)
     index = map.getindex(name)
     if index != -1:
         return self.storage[index]
     else:
         method = self.custom_interface.lookup_method(name)
         if method is None:
             return Object.getattr(self, name)
         elif isinstance(method, Property):
             return method.getter.call([self])
         else:
             return BoundMethod(self, name, method)
Example #41
0
 def getattr(self, name):
     try:
         cell = jit.promote(self.lookup(name))
         while isinstance(cell, ShadowCell):
             if cell.link is None:
                 return cell.slot
             cell = cell.link
         if isinstance(cell, FrozenCell):
             return cell.slot
         elif isinstance(cell, MutableCell):
             return cell.slot
         else:
             assert False
     except KeyError:
         return Object.getattr(self, name)
Example #42
0
 def getattr(self, name):
     if name == u'length':
         return numbers.Integer(len(self.string))
     return Object.getattr(self, name)
Example #43
0
 def getattr(self, name):
     if name == u"get":
         return self.getter
     if name == u"set":
         return self.setter
     return Object.getattr(self, name)
Example #44
0
 def listattr(self):
     listing = Object.listattr(self)
     listing.append(space.String(u"doc"))
     listing.append(space.String(u"loc"))
     listing.append(space.String(u"spec"))
     return listing
Example #45
0
 def setattr(self, name, value):
     if name == u"traceback":
         self.traceback = value
     return Object.setattr(self, name, value)
Example #46
0
 def getattr(self, name):
     if name == u"traceback":
         return self.traceback
     return Object.getattr(self, name)
Example #47
0
 def getattr(self, name):
     if name == u"doc":
         return self.doc
     else:
         return Object.getattr(self, name)
Example #48
0
 def listattr(self):
     listing = Object.listattr(self)
     listing.append(space.String(u"doc"))
     return listing
Example #49
0
 def getattr(self, name):
     if name == u'length':
         return Integer(len(self.data))
     return Object.getattr(self, name)
Example #50
0
 def setattr(self, index, value):
     if index == u"default":
         self.default = value
         return value
     return Object.setattr(self, index, value)
Example #51
0
 def getattr(self, index):
     if index == u"default":
         return self.default
     return Object.getattr(self, index)
Example #52
0
 def getattr(self, name):
     if name == u'length':
         return numbers.Integer(self.length)
     return Object.getattr(self, name)
Example #53
0
 def listattr(self):
     listing = Object.listattr(self)
     for name in self.cells:
         listing.append(space.String(name))
     return listing