18cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossumfrom bgenOutput import * 28cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossum 38cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossumclass GeneratorGroup: 48cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossum 52cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen def __init__(self, prefix): 62cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen self.prefix = prefix 72cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen self.generators = [] 88cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossum 92cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen def add(self, g, dupcheck=0): 102cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen if dupcheck: 112cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen if g in self.generators: 122cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen print 'DUP', g.name 132cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen return 142cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen g.setprefix(self.prefix) 152cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen self.generators.append(g) 168cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossum 172cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen def generate(self): 182cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen for g in self.generators: 192cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen g.generate() 202cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen Output() 212cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen Output("static PyMethodDef %s_methods[] = {", self.prefix) 222cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen IndentLevel() 232cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen for g in self.generators: 242cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen g.reference() 252cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen Output("{NULL, NULL, 0}") 262cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen DedentLevel() 272cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen Output("};") 288cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossum 298cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossum 308cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossumdef _test(): 312cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen void = None 322cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen from bgenGenerator import FunctionGenerator 332cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen group = GeneratorGroup("spam") 342cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen eggs = FunctionGenerator(void, "eggs") 352cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen group.add(eggs) 362cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen print "/* START */" 372cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen group.generate() 388cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossum 398cfc4bfb9d2c784c0901f8d31b24c49ab905b9aeGuido van Rossumif __name__ == "__main__": 402cf08ab4c2ef9743b35e61414c978555e2c6815dJack Jansen _test() 41