def __init__(self, py_class, **kwds): super(ExtensionType, self).__init__(**kwds) assert isinstance(py_class, type), "Must be a new-style class" self.name = py_class.__name__ self.py_class = py_class self.symtab = {} # attr_name -> attr_type self.methods = [] # (method_name, func_signature) self.methoddict = {} # method_name -> (func_signature, vtab_index) self.vtab_offset = extension_types.compute_vtab_offset(py_class) self.attr_offset = extension_types.compute_attrs_offset(py_class) self.attribute_struct = None self.vtab_type = None self.parent_attr_struct = None self.parent_vtab_type = None
def compute_offsets(self, py_class): from numba import extension_types self.vtab_offset = extension_types.compute_vtab_offset(py_class) self.attr_offset = extension_types.compute_attrs_offset(py_class)