/Tools/framer/framer/template.py
http://unladen-swallow.googlecode.com/ · Python · 102 lines · 80 code · 20 blank · 2 comment · 0 complexity · 9e1f249c16afcf279bc38b0a72a30b1e MD5 · raw file
- """framer's C code templates.
- Templates use the following variables:
- FileName: name of the file that contains the C source code
- ModuleName: name of the module, as in "import ModuleName"
- ModuleDocstring: C string containing the module doc string
- """
- module_start = '#include "Python.h"'
- member_include = '#include "structmember.h"'
- module_doc = """\
- PyDoc_STRVAR(%(ModuleName)s_doc,
- %(ModuleDocstring)s);
- """
- methoddef_start = """\
- static struct PyMethodDef %(MethodDefName)s[] = {"""
- methoddef_def = """\
- {"%(PythonName)s", (PyCFunction)%(CName)s, %(MethType)s},"""
- methoddef_def_doc = """\
- {"%(PythonName)s", (PyCFunction)%(CName)s, %(MethType)s,
- %(DocstringVar)s},"""
- methoddef_end = """\
- {NULL, NULL}
- };
- """
- memberdef_start = """\
- #define OFF(X) offsetof(%(StructName)s, X)
- static struct PyMemberDef %(MemberDefName)s[] = {"""
- memberdef_def_doc = """\
- {"%(PythonName)s", %(Type)s, OFF(%(CName)s), %(Flags)s,
- %(Docstring)s},"""
- memberdef_def = """\
- {"%(PythonName)s", %(Type)s, OFF(%(CName)s), %(Flags)s},"""
- memberdef_end = """\
- {NULL}
- };
- #undef OFF
- """
- dealloc_func = """static void
- %(name)s(PyObject *ob)
- {
- }
- """
- docstring = """\
- PyDoc_STRVAR(%(DocstringVar)s,
- %(Docstring)s);
- """
- funcdef_start = """\
- static PyObject *
- %(name)s(%(args)s)
- {"""
- funcdef_end = """\
- }
- """
- varargs = """\
- if (!PyArg_ParseTuple(args, \"%(ArgParse)s:%(PythonName)s\",
- %(ArgTargets)s))
- return NULL;"""
- module_init_start = """\
- PyMODINIT_FUNC
- init%(ModuleName)s(void)
- {
- PyObject *mod;
- mod = Py_InitModule3("%(ModuleName)s", %(MethodDefName)s,
- %(ModuleName)s_doc);
- if (mod == NULL)
- return;
- """
- type_init_type = " %(CTypeName)s.ob_type = &PyType_Type;"
- module_add_type = """\
- if (!PyObject_SetAttrString(mod, "%(TypeName)s",
- (PyObject *)&%(CTypeName)s))
- return;
- """
- type_struct_start = """\
- static PyTypeObject %(CTypeName)s = {
- PyObject_HEAD_INIT(0)"""
- type_struct_end = """\
- };
- """