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() |