diff options
author | Thomas Grill <xovo@users.sourceforge.net> | 2005-04-18 15:11:43 +0000 |
---|---|---|
committer | Thomas Grill <xovo@users.sourceforge.net> | 2005-04-18 15:11:43 +0000 |
commit | 14719fd1f8cc2384398168788357930e29bde5c4 (patch) | |
tree | 8e7abc2070a13d6a40abd9a1d46b5c4688329249 /externals/grill/py/source/py.cpp | |
parent | f61347eda1d8f25fa6eb6542bd7eea32d894b6b2 (diff) |
check for PD version
better reload handling, but still far fom perfect
fixed minor other issues
fixed buglet
fixing strange gcc behavior
updates for DSP processing
better argument checking
svn path=/trunk/; revision=2781
Diffstat (limited to 'externals/grill/py/source/py.cpp')
-rw-r--r-- | externals/grill/py/source/py.cpp | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/externals/grill/py/source/py.cpp b/externals/grill/py/source/py.cpp index 93309b37..f91d13b6 100644 --- a/externals/grill/py/source/py.cpp +++ b/externals/grill/py/source/py.cpp @@ -29,8 +29,8 @@ protected: void m_help(); - void m_reload(); - void m_reload_(int argc,const t_atom *argv) { args(argc,argv); m_reload(); } + void m_reload() { Reload(); } + void m_reload_(int argc,const t_atom *argv) { args(argc,argv); Reload(); } void m_set(int argc,const t_atom *argv); void m_dir_() { m__dir(function); } void m_doc_() { m__doc(function); } @@ -48,7 +48,11 @@ protected: PyObject *function; bool withfunction; - virtual bool Reload(); + virtual void LoadModule(); + virtual void UnloadModule(); + + virtual void Load(); + virtual void Unload(); bool SetFunction(const char *func); bool ResetFunction(); @@ -165,7 +169,7 @@ pyobj::pyobj(int argc,const t_atom *argv): PyErr_SetString(PyExc_ValueError,"Invalid module name"); } - Register("_py"); + Register(GetRegistry(REGNAME)); if(argc >= 2) { const char *fn = GetAString(argv[1]); @@ -183,7 +187,7 @@ pyobj::pyobj(int argc,const t_atom *argv): pyobj::~pyobj() { PyThreadState *state = PyLockSys(); - Unregister("_py"); + Unregister(GetRegistry(REGNAME)); Report(); PyUnlock(state); } @@ -201,21 +205,6 @@ bool pyobj::CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv) return false; } -void pyobj::m_reload() -{ - PyThreadState *state = PyLockSys(); - - Unregister("_py"); - - ReloadModule(); - Reregister("_py"); - Register("_py"); - SetFunction(funname?GetString(funname):NULL); - - Report(); - PyUnlock(state); -} - void pyobj::m_set(int argc,const t_atom *argv) { PyThreadState *state = PyLockSys(); @@ -228,7 +217,7 @@ void pyobj::m_set(int argc,const t_atom *argv) if(sn) { if(!module || !strcmp(sn,PyModule_GetName(module))) { ImportModule(sn); - Register("_py"); + Register(GetRegistry(REGNAME)); } } else @@ -316,10 +305,23 @@ bool pyobj::SetFunction(const char *func) } -bool pyobj::Reload() +void pyobj::LoadModule() +{ + SetFunction(funname?GetString(funname):NULL); +} + +void pyobj::UnloadModule() +{ +} + +void pyobj::Load() { ResetFunction(); - return true; +} + +void pyobj::Unload() +{ + SetFunction(NULL); } bool pyobj::callpy(PyObject *fun,PyObject *args) |