aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/py/source/pyext.h
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/py/source/pyext.h')
-rw-r--r--externals/grill/py/source/pyext.h63
1 files changed, 50 insertions, 13 deletions
diff --git a/externals/grill/py/source/pyext.h b/externals/grill/py/source/pyext.h
index f94b2f19..3c6a86b5 100644
--- a/externals/grill/py/source/pyext.h
+++ b/externals/grill/py/source/pyext.h
@@ -13,14 +13,14 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#include "main.h"
-class pyext:
- public py
+class pyext
+ : public pybase
+ , public flext_dsp
{
- FLEXT_HEADER_S(pyext,py,Setup)
+ FLEXT_HEADER_S(pyext,flext_dsp,Setup)
public:
- pyext(int argc,const t_atom *argv);
- ~pyext();
+ pyext(int argc,const t_atom *argv,bool sig = false);
static PyObject *pyext__doc__(PyObject *,PyObject *args);
static PyObject *pyext__init__(PyObject *,PyObject *args);
@@ -38,21 +38,35 @@ public:
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; }
protected:
- virtual bool m_method_(int n,const t_symbol *s,int argc,const t_atom *argv);
+
+ virtual bool Init();
+ 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();
void m_reload_(int argc,const t_atom *argv);
void ms_args(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); }
- virtual void m_help();
void m_get(const t_symbol *s);
void m_set(int argc,const t_atom *argv);
@@ -60,23 +74,27 @@ protected:
const t_symbol *methname;
PyObject *pyobj;
int inlets,outlets;
+ int siginlets,sigoutlets;
+
+ virtual void Reload();
+ virtual bool DoInit();
+ virtual void DoExit();
+
+ virtual PyObject *GetSig(int ix,bool in);
+
+ static pyext *GetThis(PyObject *self);
private:
static void Setup(t_classid);
- static pyext *GetThis(PyObject *self);
void SetThis();
void ClearBinding();
bool MakeInstance();
- bool DoInit();
- void DoExit();
void InitInOut(int &inlets,int &outlets);
AtomList args;
- virtual void Reload();
-
static PyObject *class_obj,*class_dict;
static PyMethodDef attr_tbl[],meth_tbl[];
static const char *pyext_doc;
@@ -89,6 +107,7 @@ private:
bool call(const char *meth,int inlet,const t_symbol *s,int argc,const t_atom *argv);
+ virtual bool thrcall(void *data);
virtual bool callpy(PyObject *fun,PyObject *args);
static bool stcallpy(PyObject *fun,PyObject *args);
@@ -96,7 +115,9 @@ private:
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_)
@@ -108,6 +129,22 @@ private:
FLEXT_CALLBACK_S(m_get)
FLEXT_CALLBACK_V(m_set)
+
+ // callbacks
+ FLEXT_ATTRVAR_I(detach)
+ FLEXT_ATTRVAR_B(respond)
+ FLEXT_CALLBACK_V(m_stop)
+ FLEXT_CALLBACK(m_dir)
+ FLEXT_CALLGET_V(mg_dir)
+ FLEXT_CALLBACK(m_doc)
+
+#ifdef FLEXT_THREADS
+ FLEXT_CALLBACK_T(tick)
+ FLEXT_THREAD(threadworker)
+ FLEXT_THREAD_X(work_wrapper)
+#else
+ FLEXT_CALLBACK_X(work_wrapper)
+#endif
};
#endif