]> granicus.if.org Git - python/commitdiff
Instead of importing graminit.h whenever one of the three grammar 'root'
authorGuido van Rossum <guido@python.org>
Wed, 7 May 1997 17:46:13 +0000 (17:46 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 7 May 1997 17:46:13 +0000 (17:46 +0000)
symbols is needed, define these in Python.h with a Py_ prefix.

Include/Python.h
Modules/cPickle.c
Python/bltinmodule.c
Python/ceval.c
Python/compile.c
Python/import.c
Python/pythonrun.c

index d13003db288c0af05d0ad2604578708e8492fea5..3be66323994cafa3501a117d0fdfdaef71c735e8 100644 (file)
@@ -112,4 +112,10 @@ PERFORMANCE OF THIS SOFTWARE.
 
 #include "pyfpe.h"
 
+/* These definitions much match corresponding definitions in graminit.h.
+   There's code in compile.c that checks that they are the same. */
+#define Py_single_input 256
+#define Py_file_input 257
+#define Py_eval_input 258
+
 #endif /* !Py_PYTHON_H */
index c592f3bce53b96798095c3251f0d0421e9055c1f..abe7d67ebc41ce92141cf05d2c64ae1ea92d508e 100644 (file)
@@ -58,7 +58,6 @@ static char cPickle_module_documentation[] =
 
 #include "Python.h"
 #include "cStringIO.h"
-#include "graminit.h"
 #include "mymath.h"
 
 #include <errno.h>
@@ -1883,7 +1882,7 @@ PyImport_ImportModuleNi(char *module_name)
             return NULL;
 
     if (!(import = 
-        PyRun_String(import_str, eval_input, eval_dict, eval_dict))) {
+        PyRun_String(import_str, Py_eval_input, eval_dict, eval_dict))) {
         free(import_str);
         return NULL;
     }
@@ -2223,7 +2222,7 @@ load_string(Unpicklerobject *self) {
         UNLESS(eval_dict = Py_BuildValue("{s{}}", "__builtins__"))
             goto finally;
 
-    UNLESS(str = PyRun_String(s, eval_input, eval_dict, eval_dict))
+    UNLESS(str = PyRun_String(s, Py_eval_input, eval_dict, eval_dict))
         goto finally;
 
     if (PyList_Append(self->stack, str) < 0)
@@ -3870,6 +3869,10 @@ initcPickle() {
 
 /****************************************************************************
  $Log$
+ Revision 2.5  1997/05/07 17:46:13  guido
+ Instead of importing graminit.h whenever one of the three grammar 'root'
+ symbols is needed, define these in Python.h with a Py_ prefix.
+
  Revision 2.4  1997/04/09 17:47:47  guido
  Give PyErr_Format a new name and make it static.
 
index 2461904ade1084d0ee3579c82c0679fa9ea880b9..7c46286ce23e056b2547401c6e8d239dc77aa38a 100644 (file)
@@ -34,7 +34,6 @@ PERFORMANCE OF THIS SOFTWARE.
 #include "Python.h"
 
 #include "node.h"
-#include "graminit.h"
 #include "compile.h"
 #include "eval.h"
 
@@ -283,11 +282,11 @@ builtin_compile(self, args)
        if (!PyArg_ParseTuple(args, "sss:compile", &str, &filename, &startstr))
                return NULL;
        if (strcmp(startstr, "exec") == 0)
-               start = file_input;
+               start = Py_file_input;
        else if (strcmp(startstr, "eval") == 0)
-               start = eval_input;
+               start = Py_eval_input;
        else if (strcmp(startstr, "single") == 0)
-               start = single_input;
+               start = Py_single_input;
        else {
                PyErr_SetString(PyExc_ValueError,
                   "compile() mode must be 'exec' or 'eval' or 'single'");
@@ -521,7 +520,7 @@ builtin_eval(self, args)
        }
        while (*str == ' ' || *str == '\t')
                str++;
-       return PyRun_String(str, eval_input, globals, locals);
+       return PyRun_String(str, Py_eval_input, globals, locals);
 }
 
 static PyObject *
@@ -558,7 +557,7 @@ builtin_execfile(self, args)
                PyErr_SetFromErrno(PyExc_IOError);
                return NULL;
        }
-       res = PyRun_File(fp, filename, file_input, globals, locals);
+       res = PyRun_File(fp, filename, Py_file_input, globals, locals);
        Py_BEGIN_ALLOW_THREADS
        fclose(fp);
        Py_END_ALLOW_THREADS
@@ -882,7 +881,7 @@ builtin_input(self, args)
                                         PyEval_GetBuiltins()) != 0)
                        return NULL;
        }
-       res = PyRun_String(str, eval_input, globals, locals);
+       res = PyRun_String(str, Py_eval_input, globals, locals);
        Py_DECREF(line);
        return res;
 }
index 58f0a8c326e221473194e044f45021292a23a9d3..e23ea7251b76e01302d5b4d894b766ecf1dbcd8b 100644 (file)
@@ -43,7 +43,6 @@ PERFORMANCE OF THIS SOFTWARE.
 #include "frameobject.h"
 #include "eval.h"
 #include "opcode.h"
-#include "graminit.h"
 
 #include <ctype.h>
 
@@ -2637,7 +2636,8 @@ exec_statement(f, prog, globals, locals)
        if (PyFile_Check(prog)) {
                FILE *fp = PyFile_AsFile(prog);
                char *name = PyString_AsString(PyFile_Name(prog));
-               if (PyRun_File(fp, name, file_input, globals, locals) == NULL)
+               if (PyRun_File(fp, name, Py_file_input,
+                              globals, locals) == NULL)
                        return -1;
                return 0;
        }
@@ -2647,7 +2647,7 @@ exec_statement(f, prog, globals, locals)
                                "embedded '\\0' in exec string");
                return -1;
        }
-       v = PyRun_String(s, file_input, globals, locals);
+       v = PyRun_String(s, Py_file_input, globals, locals);
        if (v == NULL)
                return -1;
        Py_DECREF(v);
index 9d6d395e00248eb43c9c31a58d0c18e579739dc3..9525aa0932e3693cab6c48f90e2460429c729713 100644 (file)
@@ -58,6 +58,20 @@ PERFORMANCE OF THIS SOFTWARE.
 
 #include <ctype.h>
 
+/* Three symbols from graminit.h are also defined in Python.h, with
+   Py_ prefixes to their names.  Python.h can't include graminit.h
+   (which defines too many confusing symbols), but we can check here
+   that they haven't changed (which is very unlikely, but possible). */
+#if Py_single_input != single_input
+#error "single_input has changed -- update Py_single_input in Python.h"
+#endif
+#if Py_file_input != file_input
+#error "file_input has changed -- update Py_file_input in Python.h"
+#endif
+#if Py_eval_input != eval_input
+#error "eval_input has changed -- update Py_eval_input in Python.h"
+#endif
+
 int Py_OptimizeFlag = 0;
 
 #define OP_DELETE 0
index ea6440a2c90a101089065ff5e19423a7d85980cc..f2d80401d6acf73d0b4dc6a31a839f7035c2c9f0 100644 (file)
@@ -35,7 +35,6 @@ PERFORMANCE OF THIS SOFTWARE.
 
 #include "node.h"
 #include "token.h"
-#include "graminit.h"
 #include "errcode.h"
 #include "marshal.h"
 #include "compile.h"
@@ -43,8 +42,6 @@ PERFORMANCE OF THIS SOFTWARE.
 #include "osdefs.h"
 #include "importdl.h"
 #ifdef macintosh
-/* 'argument' is a grammar symbol, but also used in some mac header files */
-#undef argument
 #include "macglue.h"
 #endif
 
@@ -317,7 +314,7 @@ parse_source_module(pathname, fp)
        PyCodeObject *co;
        node *n;
 
-       n = PyParser_SimpleParseFile(fp, pathname, file_input);
+       n = PyParser_SimpleParseFile(fp, pathname, Py_file_input);
        if (n == NULL)
                return NULL;
        co = PyNode_Compile(n, pathname);
index 8bb7565fb6b40a8d3bd8cc60c8852364ff4da2f5..138bc3f82efd2e6bd70d1ebc4bc468a3c21baf19 100644 (file)
@@ -36,7 +36,6 @@ PERFORMANCE OF THIS SOFTWARE.
 #include "grammar.h"
 #include "node.h"
 #include "parsetok.h"
-#include "graminit.h"
 #undef argument /* Avoid conflict on Mac */
 #include "errcode.h"
 #include "compile.h"
@@ -237,7 +236,7 @@ PyRun_InteractiveOne(fp, filename)
        }
        Py_BEGIN_ALLOW_THREADS
        n = PyParser_ParseFile(fp, filename, &_PyParser_Grammar,
-                              single_input, ps1, ps2, &err);
+                              Py_single_input, ps1, ps2, &err);
        Py_END_ALLOW_THREADS
        Py_XDECREF(v);
        Py_XDECREF(w);
@@ -296,7 +295,7 @@ PyRun_SimpleFile(fp, filename)
                        Py_OptimizeFlag = 1;
                v = run_pyc_file(fp, filename, d, d);
        } else {
-               v = PyRun_File(fp, filename, file_input, d, d);
+               v = PyRun_File(fp, filename, Py_file_input, d, d);
        }
        if (v == NULL) {
                PyErr_Print();
@@ -316,7 +315,7 @@ PyRun_SimpleString(command)
        if (m == NULL)
                return -1;
        d = PyModule_GetDict(m);
-       v = PyRun_String(command, file_input, d, d);
+       v = PyRun_String(command, Py_file_input, d, d);
        if (v == NULL) {
                PyErr_Print();
                return -1;