aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/py/source/py.cpp
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2005-04-18 15:11:43 +0000
committerThomas Grill <xovo@users.sourceforge.net>2005-04-18 15:11:43 +0000
commit14719fd1f8cc2384398168788357930e29bde5c4 (patch)
tree8e7abc2070a13d6a40abd9a1d46b5c4688329249 /externals/grill/py/source/py.cpp
parentf61347eda1d8f25fa6eb6542bd7eea32d894b6b2 (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.cpp48
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)