/Tools/bgen/bgen/bgenGeneratorGroup.py

http://unladen-swallow.googlecode.com/ · Python · 40 lines · 33 code · 7 blank · 0 comment · 5 complexity · 1384b78dda372603d36876242a245c07 MD5 · raw file

  1. from bgenOutput import *
  2. class GeneratorGroup:
  3. def __init__(self, prefix):
  4. self.prefix = prefix
  5. self.generators = []
  6. def add(self, g, dupcheck=0):
  7. if dupcheck:
  8. if g in self.generators:
  9. print 'DUP', g.name
  10. return
  11. g.setprefix(self.prefix)
  12. self.generators.append(g)
  13. def generate(self):
  14. for g in self.generators:
  15. g.generate()
  16. Output()
  17. Output("static PyMethodDef %s_methods[] = {", self.prefix)
  18. IndentLevel()
  19. for g in self.generators:
  20. g.reference()
  21. Output("{NULL, NULL, 0}")
  22. DedentLevel()
  23. Output("};")
  24. def _test():
  25. void = None
  26. from bgenGenerator import FunctionGenerator
  27. group = GeneratorGroup("spam")
  28. eggs = FunctionGenerator(void, "eggs")
  29. group.add(eggs)
  30. print "/* START */"
  31. group.generate()
  32. if __name__ == "__main__":
  33. _test()