mirror of https://github.com/python/cpython
41 lines
785 B
Python
41 lines
785 B
Python
from bgenOutput import *
|
|
|
|
class GeneratorGroup:
|
|
|
|
def __init__(self, prefix):
|
|
self.prefix = prefix
|
|
self.generators = []
|
|
|
|
def add(self, g, dupcheck=0):
|
|
if dupcheck:
|
|
if g in self.generators:
|
|
print 'DUP', g.name
|
|
return
|
|
g.setprefix(self.prefix)
|
|
self.generators.append(g)
|
|
|
|
def generate(self):
|
|
for g in self.generators:
|
|
g.generate()
|
|
Output()
|
|
Output("static PyMethodDef %s_methods[] = {", self.prefix)
|
|
IndentLevel()
|
|
for g in self.generators:
|
|
g.reference()
|
|
Output("{NULL, NULL, 0}")
|
|
DedentLevel()
|
|
Output("};")
|
|
|
|
|
|
def _test():
|
|
void = None
|
|
from bgenGenerator import FunctionGenerator
|
|
group = GeneratorGroup("spam")
|
|
eggs = FunctionGenerator(void, "eggs")
|
|
group.add(eggs)
|
|
print "/* START */"
|
|
group.generate()
|
|
|
|
if __name__ == "__main__":
|
|
_test()
|