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/main.h | |
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/main.h')
-rw-r--r-- | externals/grill/py/source/main.h | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/externals/grill/py/source/main.h b/externals/grill/py/source/main.h index b828f47b..23a9ccb0 100644 --- a/externals/grill/py/source/main.h +++ b/externals/grill/py/source/main.h @@ -15,17 +15,24 @@ WARRANTIES, see the file, "license.txt," in this distribution. #include "pysymbol.h" #include "pybuffer.h" #include <flcontainers.h> +#include <string> #if FLEXT_OS == FLEXT_LINUX || FLEXT_OS == FLEXT_IRIX #include <unistd.h> #endif +#if FLEXT_SYS == FLEXT_SYS_PD && (!defined (PD_MINOR_VERSION) || PD_MINOR_VERSION < 37) +#error PD version >= 0.37 required, please upgrade! +#endif + #define PY__VERSION "0.2.0pre" #define PYEXT_MODULE "pyext" // name for module #define PYEXT_CLASS "_class" // name for base class +#define REGNAME "_registry" + #define PY_STOP_WAIT 100 // ms #define PY_STOP_TICK 1 // ms @@ -67,7 +74,8 @@ protected: void mg_dir(AtomList &lst) { m__dir(module); } void m_doc() { m__doc(dict); } - PyObject *module,*dict; // inherited user class module and associated dictionary + std::string modname; // module name + PyObject *module,*dict; // object module and associated dictionary static const char *py_doc; @@ -78,14 +86,29 @@ protected: void GetModulePath(const char *mod,char *dir,int len); void AddToPath(const char *dir); void SetArgs(); + + // reload module and all connected objects + void Reload(); + bool ImportModule(const char *name); void UnimportModule(); bool ReloadModule(); - void Register(const char *reg); - void Unregister(const char *reg); - void Reregister(const char *reg); - virtual bool Reload() = 0; + // Get module registry + PyObject *GetRegistry(const char *regname); + // Set module registry + void SetRegistry(const char *regname,PyObject *reg); + + // Register object + void Register(PyObject *reg); + // Unregister object + void Unregister(PyObject *reg); + + virtual void LoadModule() = 0; + virtual void UnloadModule() = 0; + + virtual void Load() = 0; + virtual void Unload() = 0; void OpenEditor(); void Respond(bool b); @@ -199,7 +222,7 @@ public: inline void Lock() {} inline void Unlock() {} - inline PyThreadState *PyLock(PyThreadState *) { return NULL; } + inline PyThreadState *PyLock(PyThreadState * = NULL) { return NULL; } inline PyThreadState *PyLockSys() { return NULL; } inline void PyUnlock(PyThreadState *st) {} #endif |