diff options
author | Tim Peters <tim.peters@gmail.com> | 2001-08-18 20:18:49 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2001-08-18 20:18:49 (GMT) |
commit | aa32070f4d7b7151974e70b407b0f0dc2a836313 (patch) | |
tree | 20ea4d8e13d5dfa5f861f37be3963cd2a1874dd2 /Modules | |
parent | 95618b5bc98ca9f30ed9dd2e4382fd737bbbbc6c (diff) | |
download | cpython-aa32070f4d7b7151974e70b407b0f0dc2a836313.zip cpython-aa32070f4d7b7151974e70b407b0f0dc2a836313.tar.gz cpython-aa32070f4d7b7151974e70b407b0f0dc2a836313.tar.bz2 |
Expose the CO_xxx flags via the "new" module (re-solving a problem "the
right way"). Fiddle __future__.py to use them.
Jeremy's pyassem.py may also want to use them (by-hand duplication of
magic numbers is brittle), but leaving that to his judgment.
Beef up __future__'s test to verify the exported feature names appear
correct.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/newmodule.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/Modules/newmodule.c b/Modules/newmodule.c index 7b91fb8..d1869e5 100644 --- a/Modules/newmodule.c +++ b/Modules/newmodule.c @@ -220,9 +220,38 @@ char new_doc[] = \n\ You need to know a great deal about the interpreter to use this!"; +static void +insertint(PyObject *d, char *name, int value) +{ + PyObject *v = PyInt_FromLong((long) value); + if (v == NULL) { + /* Don't bother reporting this error */ + PyErr_Clear(); + } + else { + PyDict_SetItemString(d, name, v); + Py_DECREF(v); + } +} + DL_EXPORT(void) initnew(void) { - Py_InitModule4("new", new_methods, new_doc, (PyObject *)NULL, - PYTHON_API_VERSION); + PyObject *m; + PyObject *d; + + m = Py_InitModule4("new", new_methods, new_doc, (PyObject *)NULL, + PYTHON_API_VERSION); + d = PyModule_GetDict(m); + +#define ADDSYM(TOKEN) insertint(d, #TOKEN, TOKEN) + ADDSYM(CO_OPTIMIZED); + ADDSYM(CO_NEWLOCALS); + ADDSYM(CO_VARARGS); + ADDSYM(CO_VARKEYWORDS); + ADDSYM(CO_NESTED); + ADDSYM(CO_GENERATOR); + ADDSYM(CO_GENERATOR_ALLOWED); + ADDSYM(CO_FUTURE_DIVISION); +#undef ADDSYM } |