def invoke_method(self, argv, suppress_default): self = jit.promote(self) if len(argv) < self.arity: raise OldError(u"expected at least %d arguments, got %d" % (self.arity, len(argv))) method = self.fetch_method(argv, suppress_default) if method is None: vec = [] for i in range(self.arity): vec.append(space.get_interface(argv[i])) names = [] for i in range(self.arity): names.append(vec[i].name) raise OldError(u"no method for [" + u' '.join(names) + u"]") return method.call(argv)
def repr(self): return u"<%s>" % space.get_interface(self).name
def Interface_init_is_cast(obj): return space.get_interface(obj)
def invoke_method(self, argv, suppress_default): self = jit.promote(self) if len(argv) < self.arity: raise OldError(u"expected at least %d arguments, got %d" % (self.arity, len(argv))) if self.arity == 1: method = self.get_method(jit.promote(space.get_interface(argv[0]))) elif self.arity == 2: method = self.get_method( jit.promote(space.get_interface(argv[0])), jit.promote(space.get_interface(argv[1]))) elif self.arity == 3: method = self.get_method( jit.promote(space.get_interface(argv[0])), jit.promote(space.get_interface(argv[1])), jit.promote(space.get_interface(argv[2]))) elif self.arity == 4: method = self.get_method( jit.promote(space.get_interface(argv[0])), jit.promote(space.get_interface(argv[1])), jit.promote(space.get_interface(argv[2])), jit.promote(space.get_interface(argv[3]))) else: vec = [] for i in range(self.arity): vec.append(space.get_interface(argv[i])) method = self.methods.get(vec, None) if method is None: vec = [] for i in range(self.arity): vec.append(space.get_interface(argv[i])) if self.default is null or suppress_default: names = [] for i in range(self.arity): names.append(vec[i].name) raise OldError(u"no method for ["+u' '.join(names)+u"]") return self.default.call(argv) return method.call(argv)
def invoke_method(self, argv, suppress_default): self = jit.promote(self) if len(argv) < self.arity: raise OldError(u"expected at least %d arguments, got %d" % (self.arity, len(argv))) if self.arity == 1: method = self.get_method(jit.promote(space.get_interface(argv[0]))) elif self.arity == 2: method = self.get_method(jit.promote(space.get_interface(argv[0])), jit.promote(space.get_interface(argv[1]))) elif self.arity == 3: method = self.get_method(jit.promote(space.get_interface(argv[0])), jit.promote(space.get_interface(argv[1])), jit.promote(space.get_interface(argv[2]))) elif self.arity == 4: method = self.get_method(jit.promote(space.get_interface(argv[0])), jit.promote(space.get_interface(argv[1])), jit.promote(space.get_interface(argv[2])), jit.promote(space.get_interface(argv[3]))) else: vec = [] for i in range(self.arity): vec.append(space.get_interface(argv[i])) method = self.methods.get(vec, None) if method is None: vec = [] for i in range(self.arity): vec.append(space.get_interface(argv[i])) if self.default is null or suppress_default: names = [] for i in range(self.arity): names.append(vec[i].name) raise OldError(u"no method for [" + u' '.join(names) + u"]") return self.default.call(argv) return method.call(argv)
def get_interface(self, obj, version): interface = space.get_interface(obj) return self.get_impl(interface, version)