[PD-cvs] externals/grill/py/source py.cpp, 1.33, 1.34 pyargs.cpp, 1.22, 1.23 pybase.cpp, 1.7, 1.8 pybase.h, 1.7, 1.8 pymeth.cpp, 1.5, 1.6

Thomas Grill xovo at users.sourceforge.net
Thu Aug 11 17:01:02 CEST 2005


Update of /cvsroot/pure-data/externals/grill/py/source
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14249/source

Modified Files:
	py.cpp pyargs.cpp pybase.cpp pybase.h pymeth.cpp 
Log Message:
oops, include libraries for editing the scripts
some optimizations and py reload fix
open editor for module file on "edit" message (or click)
open editor for script under OS X
added cygwin support


Index: pybase.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/py/source/pybase.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** pybase.h	1 Aug 2005 11:58:01 -0000	1.7
--- pybase.h	11 Aug 2005 15:00:58 -0000	1.8
***************
*** 54,58 ****
      void AddCurrentPath(flext_base *o);
  	void GetModulePath(const char *mod,char *dir,int len);
- 	void AddToPath(const char *dir);
  	void SetArgs();
  
--- 54,57 ----
***************
*** 149,153 ****
      }
  
- //    virtual bool thrcall(void *data) = 0;
      virtual void callpy(PyObject *fun,PyObject *args) = 0;
  
--- 148,151 ----
***************
*** 169,177 ****
      static ThrCond qucond;
      static PyThreadState *pythrsys;
- 
-     static PyThreadState *FindThreadState();
-     static void FreeThreadState();
- #else
-     static PyThreadState *FindThreadState() { return NULL; }
  #endif
  
--- 167,170 ----
***************
*** 183,190 ****
  public:
  
  #ifdef FLEXT_THREADS
! 	ThrMutex mutex;
! 	inline void Lock() { mutex.Unlock(); }
! 	inline void Unlock() { mutex.Unlock(); }
  
      // this is especially needed when one py/pyext object calls another one
--- 176,184 ----
  public:
  
+ 	static void AddToPath(const char *dir);
+ 
  #ifdef FLEXT_THREADS
!     static PyThreadState *FindThreadState();
!     static void FreeThreadState();
  
      // this is especially needed when one py/pyext object calls another one
***************
*** 210,218 ****
          if(old != pythrsys || !--lockcount) PyEval_ReleaseLock();
      }
- 
  #else
- 	inline void Lock() {}
- 	inline void Unlock() {}
- 
  	static PyThreadState *PyLock(PyThreadState * = NULL) { return NULL; }
  	static PyThreadState *PyLockSys() { return NULL; }
--- 204,208 ----

Index: pybase.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/py/source/pybase.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** pybase.cpp	1 Aug 2005 11:58:01 -0000	1.7
--- pybase.cpp	11 Aug 2005 15:00:58 -0000	1.8
***************
*** 201,205 ****
      , pymsg(false)
  {
!     PyThreadState *state = PyLockSys();
  	Py_INCREF(module_obj);
      PyUnlock(state);
--- 201,205 ----
      , pymsg(false)
  {
!     PyThreadState *state = PyLock();
  	Py_INCREF(module_obj);
      PyUnlock(state);
***************
*** 208,212 ****
  pybase::~pybase()
  {
!     PyThreadState *state = PyLockSys();
     	Py_XDECREF(module_obj);
      PyUnlock(state);
--- 208,212 ----
  pybase::~pybase()
  {
!     PyThreadState *state = PyLock();
     	Py_XDECREF(module_obj);
      PyUnlock(state);
***************
*** 356,360 ****
  		}
      }
! #elif FLEXT_OS == FLEXT_OS_LINUX
  #endif
  }
--- 356,377 ----
  		}
      }
! #else
!     // thanks to Tim Blechmann
! 
!     char *editor = getenv("EDITOR");
! 
!     if(!editor || !strcmp(editor, "/usr/bin/nano") || !strcmp(editor, "/usr/bin/pico") || !strcmp(editor, "/usr/bin/vi")) {
!         // no environment variable or console text editor found ... use idle instead (should have come with Python)
!         editor = "idle";
!     }
! 
!     pid_t child = fork();  
!     if(!child) {
!         char cmd[80];
!         strcpy(cmd,editor);
!         strcat(cmd," ");
!         strcat(cmd,fname);
!         execl("/bin/sh", "sh", "-c", cmd, (char *) NULL);
!     }
  #endif
  }
***************
*** 540,544 ****
  void pybase::Reload()
  {
! 	PyThreadState *state = PyLockSys();
  
  	PyObject *reg = GetRegistry(REGNAME);
--- 557,561 ----
  void pybase::Reload()
  {
! 	PyThreadState *state = PyLock();
  
  	PyObject *reg = GetRegistry(REGNAME);
***************
*** 671,674 ****
--- 688,692 ----
  #if 0
      // want to use that, but exception keeps a reference to the object
+     // might be a Python bug!
      PyErr_Print();
  #else
***************
*** 777,784 ****
      return true;
  }
- 
- /*
- PY_EXPORT PyThreadState *py_Lock(PyThreadState *st = NULL) { return pybase::PyLock(st?st:pybase::FindThreadState()); }
- PY_EXPORT PyThreadState *py_LockSys() { return pybase::PyLockSys(); }
- PY_EXPORT void py_Unlock(PyThreadState *st) { pybase::PyUnlock(st); }
- */
--- 795,796 ----

Index: py.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/py/source/py.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -C2 -d -r1.33 -r1.34
*** py.cpp	1 Aug 2005 11:58:01 -0000	1.33
--- py.cpp	11 Aug 2005 15:00:58 -0000	1.34
***************
*** 155,164 ****
                  funnm = MakeSymbol(pt+1);
                  *pt = 0;
- 
- #if 0
-                 if(!*modnm) 
-                     // if module name is empty set it to __builtin__
-                     strcpy(modnm,"__builtin__");
- #endif
              }
  
--- 155,158 ----
***************
*** 338,342 ****
  void pyobj::Unload()
  {
!     SetFunction(NULL);
  }
  
--- 332,337 ----
  void pyobj::Unload()
  {
! //    SetFunction(NULL);
!     function = NULL; // just clear the PyObject, not the function name
  }
  
***************
*** 355,359 ****
          return flext_base::CbMethodResort(n,s,argc,argv);
  
!     PyThreadState *state = PyLock();
  
      bool ret = false;
--- 350,354 ----
          return flext_base::CbMethodResort(n,s,argc,argv);
  
!     PyThreadState *state = PyLockSys();
  
      bool ret = false;

Index: pymeth.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/py/source/pymeth.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** pymeth.cpp	1 Aug 2005 11:58:01 -0000	1.5
--- pymeth.cpp	11 Aug 2005 15:00:58 -0000	1.6
***************
*** 367,371 ****
          return flext_base::CbMethodResort(n,s,argc,argv);
  
!     PyThreadState *state = PyLock();
  
      bool ret = false;
--- 367,371 ----
          return flext_base::CbMethodResort(n,s,argc,argv);
  
!     PyThreadState *state = PyLockSys();
  
      bool ret = false;

Index: pyargs.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/py/source/pyargs.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** pyargs.cpp	1 Aug 2005 11:58:01 -0000	1.22
--- pyargs.cpp	11 Aug 2005 15:00:58 -0000	1.23
***************
*** 19,23 ****
          return pySymbol_FromSymbol(flext::GetSymbol(at));
  #if 1
!     else if(flext::CanbeInt(at) || flext::CanbeFloat(at)) {
          // if a number can be an integer... let it be an integer!
          int ival = flext::GetAInt(at);
--- 19,23 ----
          return pySymbol_FromSymbol(flext::GetSymbol(at));
  #if 1
!     else if(flext::CanbeFloat(at)) {
          // if a number can be an integer... let it be an integer!
          int ival = flext::GetAInt(at);





More information about the Pd-cvs mailing list