Skip to content

Commit

Permalink
Added optional suppport for storage modifiers (virtual/static/inline/…
Browse files Browse the repository at this point in the history
…etc)

and conditional generation of objects and methods.
  • Loading branch information
jackjansen committed Jun 29, 2005
1 parent b6216dd commit d4128f3
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
15 changes: 13 additions & 2 deletions Tools/bgen/bgen/bgenGenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,27 @@

class BaseFunctionGenerator:

def __init__(self, name, condition=None):
def __init__(self, name, condition=None, callname=None, modifiers=None):
if DEBUG: print "<--", name
self.name = name
self.callname = name
if callname:
self.callname = callname
else:
self.callname = name
self.prefix = name
self.objecttype = "PyObject" # Type of _self argument to function
self.condition = condition
self.modifiers = modifiers

def setprefix(self, prefix):
self.prefix = prefix

def checkgenerate(self):
return True

def generate(self):
if not self.checkgenerate():
return
if DEBUG: print "-->", self.name
if self.condition:
Output()
Expand All @@ -51,6 +60,8 @@ def functiontrailer(self):
OutRbrace()

def reference(self, name = None):
if not self.checkgenerate():
return
if name is None:
name = self.name
docstring = self.docstring()
Expand Down
3 changes: 3 additions & 0 deletions Tools/bgen/bgen/bgenObjectDefinition.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,9 @@ def outputTypeObjectInitializer(self):
Output("if (PyType_Ready(&%s) < 0) return;", self.typename)
Output("""Py_INCREF(&%s);""", self.typename)
Output("PyModule_AddObject(m, \"%s\", (PyObject *)&%s);", self.name, self.typename);
self.outputTypeObjectInitializerCompat()

def outputTypeObjectInitializerCompat(self):
Output("/* Backward-compatible name */")
Output("""Py_INCREF(&%s);""", self.typename);
Output("PyModule_AddObject(m, \"%sType\", (PyObject *)&%s);", self.name, self.typename);
Expand Down
4 changes: 4 additions & 0 deletions Tools/bgen/bgen/scantools.py
Original file line number Diff line number Diff line change
Expand Up @@ -620,11 +620,15 @@ def generate(self, tp, name, arglist, modifiers=[]):
(atype, aname, amode))
if self.greydictnames.has_key(name):
self.specfile.write(" condition=%r,\n"%(self.greydictnames[name],))
self.generatemodifiers(classname, name, modifiers)
self.specfile.write(")\n")
self.specfile.write("%s.append(f)\n\n" % listname)

def destination(self, type, name, arglist):
return "FunctionGenerator", "functions"

def generatemodifiers(self, classname, name, modifiers):
pass

def blacklisted(self, type, name):
if type in self.blacklisttypes:
Expand Down

0 comments on commit d4128f3

Please sign in to comment.