diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2005-06-10 10:46:40 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2005-06-10 10:46:40 (GMT) |
commit | bf7255fffb5dda1b9541892cc40412bb6bbd4409 (patch) | |
tree | 75fe46c5ccac984d591aba2ba1132303f880ba3c /Tools/bgen | |
parent | 52a14c3cdc551d1eb45d2c2de13dd96f41635c86 (diff) | |
download | cpython-bf7255fffb5dda1b9541892cc40412bb6bbd4409.zip cpython-bf7255fffb5dda1b9541892cc40412bb6bbd4409.tar.gz cpython-bf7255fffb5dda1b9541892cc40412bb6bbd4409.tar.bz2 |
Minor tweaks, to allow some (out-of-tree, until successful) tinkering
with C++.
Diffstat (limited to 'Tools/bgen')
-rw-r--r-- | Tools/bgen/bgen/bgenGenerator.py | 10 | ||||
-rw-r--r-- | Tools/bgen/bgen/bgenObjectDefinition.py | 16 |
2 files changed, 15 insertions, 11 deletions
diff --git a/Tools/bgen/bgen/bgenGenerator.py b/Tools/bgen/bgen/bgenGenerator.py index e1f240c..471c5fa 100644 --- a/Tools/bgen/bgen/bgenGenerator.py +++ b/Tools/bgen/bgen/bgenGenerator.py @@ -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", diff --git a/Tools/bgen/bgen/bgenObjectDefinition.py b/Tools/bgen/bgen/bgenObjectDefinition.py index 72e2678..ffdd544 100644 --- a/Tools/bgen/bgen/bgenObjectDefinition.py +++ b/Tools/bgen/bgen/bgenObjectDefinition.py @@ -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) |