From 14719fd1f8cc2384398168788357930e29bde5c4 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Mon, 18 Apr 2005 15:11:43 +0000 Subject: 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 --- externals/grill/py/source/py.cpp | 48 +++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 23 deletions(-) (limited to 'externals/grill/py/source/py.cpp') 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) -- cgit v1.2.1