⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bgenmodule.py

📁 reduced python source for embedded apps
💻 PY
字号:
from bgenOutput import *from bgenGeneratorGroup import GeneratorGroupclass Module(GeneratorGroup):	def __init__(self, name, prefix = None,		     includestuff = None,		     finalstuff = None,		     initstuff = None,		     variablestuff = None):		GeneratorGroup.__init__(self, prefix or name)		self.name = name		self.includestuff = includestuff		self.initstuff = initstuff		self.finalstuff = finalstuff		self.variablestuff = variablestuff		self.typeobjects = []	def addobject(self, od):		self.generators.append(od)		self.typeobjects.append(od)	def generate(self):		OutHeader1("Module " + self.name)		Output("#include \"Python.h\"")		Output()		if self.includestuff:			Output()			Output("%s", self.includestuff)		self.declareModuleVariables()		GeneratorGroup.generate(self)				if self.finalstuff:			Output()			Output("%s", self.finalstuff)		Output()		Output("void init%s()", self.name)		OutLbrace()		Output("PyObject *m;")		Output("PyObject *d;")		Output()		if self.initstuff:			Output("%s", self.initstuff)			Output()		Output("m = Py_InitModule(\"%s\", %s_methods);",		       self.name, self.prefix)		Output("d = PyModule_GetDict(m);")		self.createModuleVariables()		OutRbrace()		OutHeader1("End module " + self.name)	def declareModuleVariables(self):		self.errorname = self.prefix + "_Error"		Output("static PyObject *%s;", self.errorname)	def createModuleVariables(self):		Output("""%s = %s;""", self.errorname, self.exceptionInitializer())		Output("""if (%s == NULL ||""", self.errorname)		Output("""    PyDict_SetItemString(d, "Error", %s) != 0)""",		                                               self.errorname)		IndentLevel()		Output("""Py_FatalError("can't initialize %s.Error");""",		                                           self.name)		DedentLevel()		for tp in self.typeobjects:			tp.outputTypeObjectInitializer()		if self.variablestuff:			Output("%s", self.variablestuff)			Output()	def exceptionInitializer(self):		return """PyErr_NewException("%s.Error", NULL, NULL)""" % self.namedef _test():	from bgenGenerator import Generator	m = Module("spam", "", "#include <stdio.h>")	g = Generator(None, "bacon")	m.add(g)	m.generate()if __name__ == "__main__":	_test()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -