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]))
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
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])
def iter(self): try: method = self.custom_interface.methods[u"+iter"] except KeyError as error: return Object.iter(self) else: return method.call([self])
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])
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])
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])
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)
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]))
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)
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)
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])
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)
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)
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)
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)
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)
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)
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
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
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)
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)
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
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)
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)
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)
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)
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)
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)
def getattr(self, name): if name == u'length': return numbers.Integer(len(self.string)) return Object.getattr(self, name)
def getattr(self, name): if name == u"get": return self.getter if name == u"set": return self.setter return Object.getattr(self, name)
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
def setattr(self, name, value): if name == u"traceback": self.traceback = value return Object.setattr(self, name, value)
def getattr(self, name): if name == u"traceback": return self.traceback return Object.getattr(self, name)
def getattr(self, name): if name == u"doc": return self.doc else: return Object.getattr(self, name)
def listattr(self): listing = Object.listattr(self) listing.append(space.String(u"doc")) return listing
def getattr(self, name): if name == u'length': return Integer(len(self.data)) return Object.getattr(self, name)
def setattr(self, index, value): if index == u"default": self.default = value return value return Object.setattr(self, index, value)
def getattr(self, index): if index == u"default": return self.default return Object.getattr(self, index)
def getattr(self, name): if name == u'length': return numbers.Integer(self.length) return Object.getattr(self, name)
def listattr(self): listing = Object.listattr(self) for name in self.cells: listing.append(space.String(name)) return listing