The module generator now tells its object generators about the module name (through the new setmodulename() method). If the module name has been set the object generators output it as part of the tp_name field for the object type.
This commit is contained in:
parent
b2fb202bc2
commit
5801a2d8e3
|
@ -19,6 +19,7 @@ class Module(GeneratorGroup):
|
|||
def addobject(self, od):
|
||||
self.generators.append(od)
|
||||
self.typeobjects.append(od)
|
||||
od.setmodulename(self.name)
|
||||
|
||||
def generate(self):
|
||||
OutHeader1("Module " + self.name)
|
||||
|
|
|
@ -22,6 +22,7 @@ class ObjectDefinition(GeneratorGroup):
|
|||
self.typename = name + '_Type'
|
||||
self.argref = "" # set to "*" if arg to <type>_New should be pointer
|
||||
self.static = "static " # set to "" to make <type>_New and <type>_Convert public
|
||||
self.modulename = None
|
||||
|
||||
def add(self, g, dupcheck=0):
|
||||
g.setselftype(self.objecttype, self.itselftype)
|
||||
|
@ -31,6 +32,9 @@ class ObjectDefinition(GeneratorGroup):
|
|||
# In case we are referenced from a module
|
||||
pass
|
||||
|
||||
def setmodulename(self, name):
|
||||
self.modulename = name
|
||||
|
||||
def generate(self):
|
||||
# XXX This should use long strings and %(varname)s substitution!
|
||||
|
||||
|
@ -166,7 +170,10 @@ class ObjectDefinition(GeneratorGroup):
|
|||
IndentLevel()
|
||||
Output("PyObject_HEAD_INIT(NULL)")
|
||||
Output("0, /*ob_size*/")
|
||||
Output("\"%s\", /*tp_name*/", self.name)
|
||||
if self.modulename:
|
||||
Output("\"%s.%s\", /*tp_name*/", self.modulename, self.name)
|
||||
else:
|
||||
Output("\"%s\", /*tp_name*/", self.name)
|
||||
Output("sizeof(%s), /*tp_basicsize*/", self.objecttype)
|
||||
Output("0, /*tp_itemsize*/")
|
||||
Output("/* methods */")
|
||||
|
|
Loading…
Reference in New Issue