Mercurial > cpython-lru_cache-weakref
view Modules/symtablemodule.c @ 66295:4e512a949b60 3.1
Merged revisions 86580 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r86580 | senthil.kumaran | 2010-11-21 01:02:50 +0800 (Sun, 21 Nov 2010) | 3 lines
Fix issue10377 - Output from pstats - it is just secs (i.e, wallclock time) and not CPU time.
........
| author | Senthil Kumaran <orsenthil@gmail.com> |
|---|---|
| date | Sat, 20 Nov 2010 17:08:19 +0000 |
| parents | f197407bdba2 |
| children | 3c9232a684ae |
line wrap: on
line source
#include "Python.h" #include "code.h" #include "compile.h" #include "Python-ast.h" #include "symtable.h" static PyObject * symtable_symtable(PyObject *self, PyObject *args) { struct symtable *st; PyObject *t; char *str; char *filename; char *startstr; int start; if (!PyArg_ParseTuple(args, "sss:symtable", &str, &filename, &startstr)) return NULL; if (strcmp(startstr, "exec") == 0) start = Py_file_input; else if (strcmp(startstr, "eval") == 0) start = Py_eval_input; else if (strcmp(startstr, "single") == 0) start = Py_single_input; else { PyErr_SetString(PyExc_ValueError, "symtable() arg 3 must be 'exec' or 'eval' or 'single'"); return NULL; } st = Py_SymtableString(str, filename, start); if (st == NULL) return NULL; t = st->st_blocks; Py_INCREF(t); PyMem_Free((void *)st->st_future); PySymtable_Free(st); return t; } static PyMethodDef symtable_methods[] = { {"symtable", symtable_symtable, METH_VARARGS, PyDoc_STR("Return symbol and scope dictionaries" " used internally by compiler.")}, {NULL, NULL} /* sentinel */ }; static struct PyModuleDef symtablemodule = { PyModuleDef_HEAD_INIT, "_symtable", NULL, -1, symtable_methods, NULL, NULL, NULL, NULL }; PyMODINIT_FUNC PyInit__symtable(void) { PyObject *m; m = PyModule_Create(&symtablemodule); if (m == NULL) return NULL; PyModule_AddIntConstant(m, "USE", USE); PyModule_AddIntConstant(m, "DEF_GLOBAL", DEF_GLOBAL); PyModule_AddIntConstant(m, "DEF_LOCAL", DEF_LOCAL); PyModule_AddIntConstant(m, "DEF_PARAM", DEF_PARAM); PyModule_AddIntConstant(m, "DEF_STAR", DEF_STAR); PyModule_AddIntConstant(m, "DEF_DOUBLESTAR", DEF_DOUBLESTAR); PyModule_AddIntConstant(m, "DEF_INTUPLE", DEF_INTUPLE); PyModule_AddIntConstant(m, "DEF_FREE", DEF_FREE); PyModule_AddIntConstant(m, "DEF_FREE_GLOBAL", DEF_FREE_GLOBAL); PyModule_AddIntConstant(m, "DEF_FREE_CLASS", DEF_FREE_CLASS); PyModule_AddIntConstant(m, "DEF_IMPORT", DEF_IMPORT); PyModule_AddIntConstant(m, "DEF_BOUND", DEF_BOUND); PyModule_AddIntConstant(m, "TYPE_FUNCTION", FunctionBlock); PyModule_AddIntConstant(m, "TYPE_CLASS", ClassBlock); PyModule_AddIntConstant(m, "TYPE_MODULE", ModuleBlock); PyModule_AddIntConstant(m, "OPT_IMPORT_STAR", OPT_IMPORT_STAR); PyModule_AddIntConstant(m, "OPT_TOPLEVEL", OPT_TOPLEVEL); PyModule_AddIntConstant(m, "LOCAL", LOCAL); PyModule_AddIntConstant(m, "GLOBAL_EXPLICIT", GLOBAL_EXPLICIT); PyModule_AddIntConstant(m, "GLOBAL_IMPLICIT", GLOBAL_IMPLICIT); PyModule_AddIntConstant(m, "FREE", FREE); PyModule_AddIntConstant(m, "CELL", CELL); PyModule_AddIntConstant(m, "SCOPE_OFF", SCOPE_OFFSET); PyModule_AddIntConstant(m, "SCOPE_MASK", SCOPE_MASK); if (PyErr_Occurred()) { Py_DECREF(m); m = 0; } return m; }
