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