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 getattr(self, name): if name == u"doc": return self.doc elif name == u"loc": unit = self.function.unit trace = TraceEntry(0, unit.sources, self.function.sourcemap, unit.path) name, col0, lno0, col1, lno1 = trace.pc_location() start = space.Exnihilo() start.setattr(u"col", space.Integer(col0)) start.setattr(u"lno", space.Integer(lno0)) stop = space.Exnihilo() stop.setattr(u"col", space.Integer(col1)) stop.setattr(u"lno", space.Integer(lno1)) obj = space.Exnihilo() obj.setattr(u"source", name) obj.setattr(u"start", start) obj.setattr(u"stop", stop) return obj elif name == u"spec": spec = space.Exnihilo() spec.setattr(u'argc', space.Integer(rffi.r_long(self.function.argc))) spec.setattr( u'optional', space.Integer( rffi.r_long(self.function.topc - self.function.argc))) spec.setattr(u'is_variadic', space.boolean(self.function.flags & 1 == 1)) spec.setattr(u'varnames', self.function.varnames) return spec else: return space.Object.getattr(self, name)
def getattr(self, name): if name == u"closure": return self.closure elif name == u"is_generator": return space.boolean(self.closure.function.flags & 2 != 0) elif name == u"excs": return self.excs_l elif name == u"regc": return space.Integer(rffi.r_long(self.closure.function.regc)) elif name == u"localc": return space.Integer(rffi.r_long(self.closure.function.localc)) elif name == u"length": return space.Integer(len(self.closure.function.block)) elif name == u"module": return self.closure.frame.module return space.Object.getattr(self, name)
def getattr(self, name): if name == u"doc": return self.doc elif name == u"loc": return sourceloc_introspection(0, self.function) elif name == u"spec": spec = space.Exnihilo() spec.setattr(u'argc', space.Integer(rffi.r_long(self.function.argc))) spec.setattr( u'optional', space.Integer( rffi.r_long(self.function.topc - self.function.argc))) spec.setattr(u'is_variadic', space.boolean(self.function.flags & 1 == 1)) spec.setattr(u'varnames', self.function.varnames) return spec elif name == u"code": return Introspection(self) else: return space.Object.getattr(self, name)
def String_endswith(self, postfix): return space.boolean( self.string.endswith(postfix.string))
def String_startswith(self, prefix): return space.boolean( self.string.startswith(prefix.string))