]> granicus.if.org Git - python/commitdiff
PEP 227 implementation
authorJeremy Hylton <jeremy@alum.mit.edu>
Thu, 25 Jan 2001 20:07:56 +0000 (20:07 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Thu, 25 Jan 2001 20:07:56 +0000 (20:07 +0000)
Track changes to PyFrame_New() and PyFuntion_New().

Modules/newmodule.c
Modules/pyexpat.c

index 21b82ef824de3cf0ea2052ac856acd81732a064c..06b7d823b8cb65515903f658731aede63e8503fb 100644 (file)
@@ -101,7 +101,7 @@ new_function(PyObject* unused, PyObject* args)
 }
 
 static char new_code_doc[] =
-"Create a code object from (ARGCOUNT, NLOCALS, STACKSIZE, FLAGS, CODESTRING, CONSTANTS, NAMES, VARNAMES, FILENAME, NAME, FIRSTLINENO, LNOTAB).";
+"Create a code object from (ARGCOUNT, NLOCALS, STACKSIZE, FLAGS, CODESTRING, CONSTANTS, NAMES, VARNAMES, FREEVARS, CELLVARS, FILENAME, NAME, FIRSTLINENO, LNOTAB).";
 
 static PyObject *
 new_code(PyObject* unused, PyObject* args)
@@ -114,18 +114,22 @@ new_code(PyObject* unused, PyObject* args)
        PyObject* consts;
        PyObject* names;
        PyObject* varnames;
+       PyObject* freevars;
+       PyObject* cellvars;
        PyObject* filename;
        PyObject* name;
        int firstlineno;
        PyObject* lnotab;
        PyBufferProcs *pb;
 
-       if (!PyArg_ParseTuple(args, "iiiiOO!O!O!SSiS:code",
+       if (!PyArg_ParseTuple(args, "iiiiOO!O!O!O!O!SSiS:code",
                              &argcount, &nlocals, &stacksize, &flags,
                              &code,
                              &PyTuple_Type, &consts,
                              &PyTuple_Type, &names,
                              &PyTuple_Type, &varnames,
+                             &PyTuple_Type, &freevars,
+                             &PyTuple_Type, &cellvars,
                              &filename, &name,
                              &firstlineno, &lnotab))
                return NULL;
@@ -143,7 +147,8 @@ new_code(PyObject* unused, PyObject* args)
 
        return (PyObject *)PyCode_New(argcount, nlocals, stacksize, flags,
                                      code, consts, names, varnames,
-                                     filename, name, firstlineno, lnotab);
+                                     freevars, cellvars, filename, name,
+                                     firstlineno, lnotab); 
 }
 
 static char new_module_doc[] =
index cbe0a6eea965db5260cfecb7130dbf49980aacdc..6778a9ca92de1cd6f95eec7651ec43cd0f093690 100644 (file)
@@ -257,6 +257,8 @@ getcode(enum HandlerTypes slot, char* func_name, int lineno)
                        nulltuple,      /* consts */
                        nulltuple,      /* names */
                        nulltuple,      /* varnames */
+                       nulltuple,      /* freevars */
+                       nulltuple,      /* cellvars */
                        filename,       /* filename */
                        name,           /* name */
                        lineno,         /* firstlineno */
@@ -288,7 +290,9 @@ call_with_frame(PyCodeObject *c, PyObject* func, PyObject* args)
                        tstate,                 /*back*/
                        c,                      /*code*/
                        tstate->frame->f_globals,       /*globals*/
-                       NULL);                  /*locals*/
+                       NULL,                   /*locals*/
+                       0,
+                       NULL);                  /* closure */
        if (f == NULL)
                return NULL;
        tstate->frame = f;