mirror of https://github.com/python/cpython
Minor tweaks, to allow some (out-of-tree, until successful) tinkering
with C++.
This commit is contained in:
parent
52a14c3cdc
commit
bf7255fffb
|
@ -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",
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue