def getruntime(self, expected_type): if expected_type == ootype.Class: rinstance = getinstancerepr(self.rtyper, self.classdef) return ootype.runtimeClass(rinstance.lowleveltype) else: assert ootype.isSubclass(expected_type, META) meta = self.get_meta_instance(cast_to_root_meta=False) return ootype.ooupcast(expected_type, meta)
def get_meta_instance(self, cast_to_root_meta=True): if self.lowleveltype == ootype.Class: raise TyperError("no meta-instance for class %r" % (self.classdef, )) if self.meta_instance is None: self.meta_instance = ootype.new(self.lowleveltype) self.setup_meta_instance(self.meta_instance, self) meta_instance = self.meta_instance if cast_to_root_meta: meta_instance = ootype.ooupcast(META, meta_instance) return meta_instance
def get_meta_instance(self, cast_to_root_meta=True): if self.lowleveltype == ootype.Class: raise TyperError("no meta-instance for class %r" % (self.classdef,)) if self.meta_instance is None: self.meta_instance = ootype.new(self.lowleveltype) self.setup_meta_instance(self.meta_instance, self) meta_instance = self.meta_instance if cast_to_root_meta: meta_instance = ootype.ooupcast(META, meta_instance) return meta_instance
def upcast(self, result): return ootype.ooupcast(self.lowleveltype, result)
def op_ooupcast(INST, inst): return ootype.ooupcast(INST, inst)
def cast_exception(self, TYPE, value): return ootype.ooupcast(TYPE, value)
def convert_pbc(self, pbc): if ootype.typeOf(pbc) != PBCROOT: pbc = ootype.ooupcast(PBCROOT, pbc) return pbc