Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d4128f3

Browse files
committed
Added optional suppport for storage modifiers (virtual/static/inline/etc)
and conditional generation of objects and methods.
1 parent b6216dd commit d4128f3

3 files changed

Lines changed: 20 additions & 2 deletions

File tree

Tools/bgen/bgen/bgenGenerator.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,27 @@
1515

1616
class BaseFunctionGenerator:
1717

18-
def __init__(self, name, condition=None):
18+
def __init__(self, name, condition=None, callname=None, modifiers=None):
1919
if DEBUG: print "<--", name
2020
self.name = name
21-
self.callname = name
21+
if callname:
22+
self.callname = callname
23+
else:
24+
self.callname = name
2225
self.prefix = name
2326
self.objecttype = "PyObject" # Type of _self argument to function
2427
self.condition = condition
28+
self.modifiers = modifiers
2529

2630
def setprefix(self, prefix):
2731
self.prefix = prefix
2832

33+
def checkgenerate(self):
34+
return True
35+
2936
def generate(self):
37+
if not self.checkgenerate():
38+
return
3039
if DEBUG: print "-->", self.name
3140
if self.condition:
3241
Output()
@@ -51,6 +60,8 @@ def functiontrailer(self):
5160
OutRbrace()
5261

5362
def reference(self, name = None):
63+
if not self.checkgenerate():
64+
return
5465
if name is None:
5566
name = self.name
5667
docstring = self.docstring()

Tools/bgen/bgen/bgenObjectDefinition.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,9 @@ def outputTypeObjectInitializer(self):
219219
Output("if (PyType_Ready(&%s) < 0) return;", self.typename)
220220
Output("""Py_INCREF(&%s);""", self.typename)
221221
Output("PyModule_AddObject(m, \"%s\", (PyObject *)&%s);", self.name, self.typename);
222+
self.outputTypeObjectInitializerCompat()
223+
224+
def outputTypeObjectInitializerCompat(self):
222225
Output("/* Backward-compatible name */")
223226
Output("""Py_INCREF(&%s);""", self.typename);
224227
Output("PyModule_AddObject(m, \"%sType\", (PyObject *)&%s);", self.name, self.typename);

Tools/bgen/bgen/scantools.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,11 +620,15 @@ def generate(self, tp, name, arglist, modifiers=[]):
620620
(atype, aname, amode))
621621
if self.greydictnames.has_key(name):
622622
self.specfile.write(" condition=%r,\n"%(self.greydictnames[name],))
623+
self.generatemodifiers(classname, name, modifiers)
623624
self.specfile.write(")\n")
624625
self.specfile.write("%s.append(f)\n\n" % listname)
625626

626627
def destination(self, type, name, arglist):
627628
return "FunctionGenerator", "functions"
629+
630+
def generatemodifiers(self, classname, name, modifiers):
631+
pass
628632

629633
def blacklisted(self, type, name):
630634
if type in self.blacklisttypes:

0 commit comments

Comments
 (0)