diff options
Diffstat (limited to 'externals/grill/py/source/pyext.h')
-rw-r--r-- | externals/grill/py/source/pyext.h | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/externals/grill/py/source/pyext.h b/externals/grill/py/source/pyext.h deleted file mode 100644 index acfef40d..00000000 --- a/externals/grill/py/source/pyext.h +++ /dev/null @@ -1,158 +0,0 @@ -/* -py/pyext - python external object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef __PYEXT_H -#define __PYEXT_H - -#include "pybase.h" - -class pyext - : public pybase - , public flext_dsp -{ - FLEXT_HEADER_S(pyext,flext_dsp,Setup) - -public: - pyext(int argc,const t_atom *argv,bool sig = false); - - static PyObject *pyext__str__(PyObject *,PyObject *args); - - static PyObject *pyext_outlet(PyObject *,PyObject *args); -#if FLEXT_SYS == FLEXT_SYS_PD - static PyObject *pyext_tocanvas(PyObject *,PyObject *args); -#endif - - static PyObject *pyext_setattr(PyObject *,PyObject *args); - static PyObject *pyext_getattr(PyObject *,PyObject *args); - - static PyObject *pyext_detach(PyObject *,PyObject *args); - static PyObject *pyext_stop(PyObject *,PyObject *args); - static PyObject *pyext_isthreaded(PyObject *,PyObject *); - - static PyObject *pyext_inbuf(PyObject *,PyObject *args); - static PyObject *pyext_invec(PyObject *,PyObject *args); - static PyObject *pyext_outbuf(PyObject *,PyObject *args); - static PyObject *pyext_outvec(PyObject *,PyObject *args); - - int Inlets() const { return inlets; } - int Outlets() const { return outlets; } - - static pyext *GetThis(PyObject *self); - -protected: - - virtual bool Init(); - virtual bool Finalize(); - virtual void Exit(); - - virtual bool CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv); - virtual void CbClick(); - virtual bool CbDsp(); - - virtual void DumpOut(const t_symbol *sym,int argc,const t_atom *argv); - - bool work(int n,const t_symbol *s,int argc,const t_atom *argv); - - void m_help(); - - void m_reload() { Reload(); } - void m_reload_(int argc,const t_atom *argv) { initargs(argc,argv); Reload(); } - void ms_initargs(const AtomList &a) { m_reload_(a.Count(),a.Atoms()); } - void m_dir_() { m__dir(pyobj); } - void mg_dir_(AtomList &lst) { GetDir(pyobj,lst); } - void m_doc_() { m__doc(((PyInstanceObject *)pyobj)->in_class->cl_dict); } - - void m_get(const t_symbol *s); - void m_set(int argc,const t_atom *argv); - - const t_symbol *methname; - PyObject *pyobj; - int inlets,outlets; - int siginlets,sigoutlets; - - flext::AtomList initargs; - - virtual void LoadModule(); - virtual void UnloadModule(); - - virtual void Load(); - virtual void Unload(); - - virtual bool DoInit(); - virtual void DoExit(); - - virtual PyObject *GetSig(int ix,bool in); - -private: - static void Setup(t_classid); - - void SetThis(); - void ClearThis(); - - void ClearBinding(); - bool MakeInstance(); - bool InitInOut(int &inlets,int &outlets); - - static PyObject *class_obj,*class_dict; - static PyMethodDef attr_tbl[],meth_tbl[]; - static const char *pyext_doc; - - // -------- bind stuff ------------------ - static PyObject *pyext_bind(PyObject *,PyObject *args); - static PyObject *pyext_unbind(PyObject *,PyObject *args); - - // --------------------------- - - bool call(const char *meth,int inlet,const t_symbol *s,int argc,const t_atom *argv); - - virtual void callpy(PyObject *fun,PyObject *args); - static bool stcallpy(PyObject *fun,PyObject *args); - -#ifndef PY_USE_GIL - ThrState pythr; -#endif - -private: - static bool boundmeth(flext_base *,t_symbol *sym,int argc,t_atom *argv,void *data); - - FLEXT_CALLBACK(m_help) - - FLEXT_CALLBACK(m_reload) - FLEXT_CALLBACK_V(m_reload_) - FLEXT_CALLBACK(m_dir_) - FLEXT_CALLGET_V(mg_dir_) - FLEXT_CALLBACK(m_doc_) - - FLEXT_ATTRGET_V(initargs) - FLEXT_CALLSET_V(ms_initargs) - - FLEXT_CALLBACK_S(m_get) - FLEXT_CALLBACK_V(m_set) - - // callbacks - FLEXT_ATTRVAR_I(detach) - FLEXT_ATTRVAR_B(pymsg) - FLEXT_ATTRVAR_B(respond) - - FLEXT_CALLBACK_V(m_stop) - FLEXT_CALLBACK(m_dir) - FLEXT_CALLGET_V(mg_dir) - FLEXT_CALLBACK(m_doc) - - FLEXT_CALLBACK(CbClick) - -#ifdef FLEXT_THREADS - FLEXT_CALLBACK_T(tick) -#endif -}; - -#endif |