Minor tweaks, to allow some (out-of-tree, until successful) tinkering

with C++.
This commit is contained in:
Jack Jansen 2005-06-10 10:46:40 +00:00
parent 52a14c3cdc
commit bf7255fffb
2 changed files with 15 additions and 11 deletions

View File

@ -18,6 +18,7 @@ class BaseFunctionGenerator:
def __init__(self, name, condition=None):
if DEBUG: print "<--", name
self.name = name
self.callname = name
self.prefix = name
self.objecttype = "PyObject" # Type of _self argument to function
self.condition = condition
@ -202,7 +203,7 @@ class FunctionGenerator(BaseFunctionGenerator):
def callit(self):
args = ""
if self.rv:
s = "%s = %s(" % (self.rv.name, self.name)
s = "%s = %s(" % (self.rv.name, self.callname)
else:
s = "%s(" % self.name
sep = ",\n" + ' '*len(s)
@ -214,9 +215,9 @@ class FunctionGenerator(BaseFunctionGenerator):
args = args + s
if self.rv:
Output("%s = %s(%s);",
self.rv.name, self.name, args)
self.rv.name, self.callname, args)
else:
Output("%s(%s);", self.name, args)
Output("%s(%s);", self.callname, args)
def checkit(self):
for arg in self.argumentList:
@ -255,8 +256,7 @@ class MethodGenerator(FunctionGenerator):
self.itself = Variable(t0, "_self->ob_itself", SelfMode)
self.argumentList.append(self.itself)
FunctionGenerator.parseArgumentList(self, args)
def _test():
void = None
eggs = FunctionGenerator(void, "eggs",

View File

@ -44,12 +44,8 @@ class ObjectDefinition(GeneratorGroup):
OutHeader2("Object type " + self.name)
sf = self.static and "static "
Output("%sPyTypeObject %s;", sf, self.typename)
Output()
Output("#define %s_Check(x) ((x)->ob_type == &%s || PyObject_TypeCheck((x), &%s))",
self.prefix, self.typename, self.typename)
Output()
self.outputCheck()
Output("typedef struct %s {", self.objecttype)
IndentLevel()
Output("PyObject_HEAD")
@ -84,6 +80,14 @@ class ObjectDefinition(GeneratorGroup):
OutHeader2("End object type " + self.name)
def outputCheck(self):
sf = self.static and "static "
Output("%sPyTypeObject %s;", sf, self.typename)
Output()
Output("#define %s_Check(x) ((x)->ob_type == &%s || PyObject_TypeCheck((x), &%s))",
self.prefix, self.typename, self.typename)
Output()
def outputMethodChain(self):
Output("%sPyMethodChain %s_chain = { %s_methods, %s };",
self.static, self.prefix, self.prefix, self.basechain)