bpy_internal_import.c should build with py2.3 now, also gave bpy_internal_import...
authorCampbell Barton <ideasman42@gmail.com>
Thu, 16 Apr 2009 06:24:47 +0000 (06:24 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 16 Apr 2009 06:24:47 +0000 (06:24 +0000)
source/blender/python/BPY_interface.c
source/blender/python/api2_2x/bpy_internal_import.c
source/blender/python/api2_2x/bpy_internal_import.h
source/gameengine/Ketsji/KX_PythonInit.cpp

index 3b539be7a95aa4b66a0546a6e4cd31cda933afcf..ea3d6a5416241f6227a11fc60f39894d1b415bcd 100644 (file)
@@ -1276,7 +1276,7 @@ static int bpy_pydriver_create_dict(void)
         * Users can add their own functions to this module. */
        if (G.f&G_DOSCRIPTLINKS) {
                int found; /* not used but needed as an arg */
-               mod = importText("pydrivers", &found); /* can also use PyImport_Import() */
+               mod = bpy_text_import("pydrivers", &found); /* can also use PyImport_Import() */
                if (mod) {
                        PyDict_SetItemString(d, "pydrivers", mod);
                        PyDict_SetItemString(d, "p", mod);
@@ -2831,7 +2831,7 @@ static void DoAllScriptsFromList( ListBase * list, short event )
 static void init_ourImport( void )
 {
        PyObject *m, *d;
-       PyObject *import = PyCFunction_New( bpy_import, NULL );
+       PyObject *import = PyCFunction_New( bpy_import_meth, NULL );
 
        m = PyImport_AddModule( "__builtin__" );
        d = PyModule_GetDict( m );
@@ -2842,7 +2842,7 @@ static void init_ourImport( void )
 static void init_ourReload( void )
 {
        PyObject *m, *d;
-       PyObject *reload = PyCFunction_New( bpy_reload, NULL );
+       PyObject *reload = PyCFunction_New( bpy_reload_meth, NULL );
 
        m = PyImport_AddModule( "__builtin__" );
        d = PyModule_GetDict( m );
index a62ae689f59054eb251c007212d1437bb37baf32..1e1454dcd5c90f4d67b05bdc8c9af3c50650758c 100644 (file)
@@ -56,7 +56,7 @@ void bpy_import_main_set(struct Main *maggie)
 }
 
 
-PyObject *importText( char *name, int *found )
+PyObject *bpy_text_import( char *name, int *found )
 {
        Text *text;
        char txtname[22]; /* 21+NULL */
@@ -103,7 +103,7 @@ PyObject *importText( char *name, int *found )
  * find in-memory module and recompile
  */
 
-PyObject *reimportText( PyObject *module, int *found )
+PyObject *bpy_text_reimport( PyObject *module, int *found )
 {
        Text *text;
        char *txtname;
@@ -172,13 +172,13 @@ static PyObject *blender_import( PyObject * self, PyObject * args,  PyObject * k
        int dummy_val; /* what does this do?*/
        static char *kwlist[] = {"name", "globals", "locals", "fromlist", "level", 0};
        
-       if( !PyArg_ParseTupleAndKeywords( args, kw, "s|OOOi:bpy_import", kwlist,
+       if( !PyArg_ParseTupleAndKeywords( args, kw, "s|OOOi:bpy_import_meth", kwlist,
                               &name, &globals, &locals, &fromlist, &dummy_val) )
                return NULL;
 #else
        static char *kwlist[] = {"name", "globals", "locals", "fromlist", 0};
        
-       if( !PyArg_ParseTupleAndKeywords( args, kw, "s|OOO:bpy_import", kwlist,
+       if( !PyArg_ParseTupleAndKeywords( args, kw, "s|OOO:bpy_import_meth", kwlist,
                               &name, &globals, &locals, &fromlist ) )
                return NULL;
 #endif
@@ -192,7 +192,7 @@ static PyObject *blender_import( PyObject * self, PyObject * args,  PyObject * k
        PyErr_Fetch( &exception, &err, &tb );   /* get the python error incase we cant import as blender text either */
        
        /* importing from existing modules failed, see if we have this module as blender text */
-       newmodule = importText( name, &found );
+       newmodule = bpy_text_import( name, &found );
        
        if( newmodule ) {/* found module as blender text, ignore above exception */
                PyErr_Clear(  );
@@ -228,7 +228,7 @@ static PyObject *blender_reload( PyObject * self, PyObject * args )
        int found= 0;
        
        /* check for a module arg */
-       if( !PyArg_ParseTuple( args, "O:bpy_reload", &module ) )
+       if( !PyArg_ParseTuple( args, "O:bpy_reload_meth", &module ) )
                return NULL;
 
        /* try reimporting from file */
@@ -239,7 +239,7 @@ static PyObject *blender_reload( PyObject * self, PyObject * args )
        /* no file, try importing from memory */
        PyErr_Fetch( &exception, &err, &tb );   /*restore for probable later use */
 
-       newmodule = reimportText( module, &found );
+       newmodule = bpy_text_reimport( module, &found );
        if( newmodule ) {/* found module as blender text, ignore above exception */
                PyErr_Clear(  );
                Py_XDECREF( exception );
@@ -262,8 +262,8 @@ static PyObject *blender_reload( PyObject * self, PyObject * args )
        return newmodule;
 }
 
-PyMethodDef bpy_import[] = { {"bpy_import", blender_import, METH_KEYWORDS, "blenders import"} };
-PyMethodDef bpy_reload[] = { {"bpy_reload", blender_reload, METH_VARARGS, "blenders reload"} };
+PyMethodDef bpy_import_meth[] = { {"bpy_import_meth", blender_import, METH_KEYWORDS, "blenders import"} };
+PyMethodDef bpy_reload_meth[] = { {"bpy_reload_meth", blender_reload, METH_VARARGS, "blenders reload"} };
 
 
 /* Clear user modules.
@@ -284,20 +284,25 @@ PyMethodDef bpy_reload[] = { {"bpy_reload", blender_reload, METH_VARARGS, "blend
 #endif
 
 
-void importClearUserModules(void)
+void bpy_text_clear_modules(void)
 {
-       PyObject *modules= PySys_GetObject("modules");  
+       PyObject *modules= PySys_GetObject("modules");
        
        char *fname;
        char *file_extension;
        
        /* looping over the dict */
        PyObject *key, *value;
-       Py_ssize_t pos = 0;
+       int pos = 0;
        
        /* new list */
-       PyObject *list= PyList_New(0);
-       
+       PyObject *list;
+
+       if (modules==NULL)
+               return; /* should never happen but just incase */
+
+       list= PyList_New(0);
+
        /* go over sys.modules and remove anything with a 
         * sys.modukes[x].__file__ thats ends with a .py and has no path
         */
index 9d4404066365892d72e2c5a446067f5f663a6a76..137818bb0dba42c48097c3d12e2280f9a850971c 100644 (file)
 #include "compile.h"           /* for the PyCodeObject */
 #include "eval.h"              /* for PyEval_EvalCode */
 
-PyObject *importText( char *name, int *found );
-PyObject *reimportText( PyObject *module, int *found );
-void importClearUserModules( void ); /* Clear user modules */
-extern PyMethodDef bpy_import[];
-extern PyMethodDef bpy_reload[];
+PyObject*      bpy_text_import( char *name, int *found );
+PyObject*      bpy_text_reimport( PyObject *module, int *found );
+void           bpy_text_clear_modules( void ); /* Clear user modules */
+extern PyMethodDef bpy_import_meth[];
+extern PyMethodDef bpy_reload_meth[];
 
 /* The game engine has its own Main struct, if this is set search this rather then G.main */
 struct Main *bpy_import_main_get(void);
index eafb7fc0cb85110ea1489e3ba664058c95d3d576..7643a043a7c5d7216f31eba3ba3d69dea24bd897 100644 (file)
@@ -1244,7 +1244,7 @@ PyObject *KXpy_import(PyObject *self, PyObject *args)
        }
        
        /* Import blender texts as python modules */
-       m= importText(name, &found);
+       m= bpy_text_import(name, &found);
        if (m)
                return m;
        
@@ -1267,10 +1267,10 @@ PyObject *KXpy_reload(PyObject *self, PyObject *args) {
        PyObject *newmodule = NULL;
 
        /* check for a module arg */
-       if( !PyArg_ParseTuple( args, "O:bpy_reload", &module ) )
+       if( !PyArg_ParseTuple( args, "O:bpy_reload_meth", &module ) )
                return NULL;
        
-       newmodule= reimportText( module, &found );
+       newmodule= bpy_text_reimport( module, &found );
        if (newmodule)
                return newmodule;
        
@@ -1353,8 +1353,8 @@ void setSandbox(TPythonSecurityLevel level)
        */
        default:
                        /* Allow importing internal text, from bpy_internal_import.py */
-                       PyDict_SetItemString(d, "reload", item=PyCFunction_New(bpy_reload, NULL));              Py_DECREF(item);
-                       PyDict_SetItemString(d, "__import__", item=PyCFunction_New(bpy_import, NULL));  Py_DECREF(item);
+                       PyDict_SetItemString(d, "reload", item=PyCFunction_New(bpy_reload_meth, NULL));         Py_DECREF(item);
+                       PyDict_SetItemString(d, "__import__", item=PyCFunction_New(bpy_import_meth, NULL));     Py_DECREF(item);
                break;
        }
 }
@@ -1440,7 +1440,7 @@ static void clearGameModules()
        PyErr_Clear(); // incase some of these were alredy removed.
        
        /* clear user defined modules */
-       importClearUserModules();
+       bpy_text_clear_modules();
 }
 
 void exitGamePythonScripting()