aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/py/source/clmeth.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/py/source/clmeth.cpp')
-rw-r--r--externals/grill/py/source/clmeth.cpp59
1 files changed, 54 insertions, 5 deletions
diff --git a/externals/grill/py/source/clmeth.cpp b/externals/grill/py/source/clmeth.cpp
index 6062eda9..cfd8604a 100644
--- a/externals/grill/py/source/clmeth.cpp
+++ b/externals/grill/py/source/clmeth.cpp
@@ -29,6 +29,9 @@ PyMethodDef pyext::meth_tbl[] =
{ "_stop", pyext::pyext_stop, METH_VARARGS,"Stop running threads" },
#endif
{ "_isthreaded", pyext::pyext_isthreaded, METH_O,"Query whether threading is enabled" },
+
+ { "_invec", pyext::pyext_invec, METH_VARARGS,"Get input vector" },
+ { "_outvec", pyext::pyext_outvec, METH_VARARGS,"Get output vector" },
{NULL, NULL, 0, NULL} /* Sentinel */
};
@@ -36,7 +39,7 @@ PyMethodDef pyext::attr_tbl[] =
{
{ "__setattr__", pyext::pyext_setattr, METH_VARARGS,"Set class attribute" },
{ "__getattr__", pyext::pyext_getattr, METH_VARARGS,"Get class attribute" },
- { NULL, NULL,0,NULL },
+ { NULL, NULL,0,NULL },
};
@@ -174,6 +177,9 @@ PyObject *pyext::pyext_outlet(PyObject *,PyObject *args)
if(lst) {
int o = PyInt_AsLong(outl);
if(o >= 1 && o <= ext->Outlets()) {
+ // offset outlet by signal outlets
+ o += ext->sigoutlets;
+
// by using the queue there is no immediate call of the next object
// deadlock would occur if this was another py/pyext object!
if(lst->Count() && IsSymbol((*lst)[0]))
@@ -195,7 +201,10 @@ PyObject *pyext::pyext_outlet(PyObject *,PyObject *args)
if(!tp) Py_DECREF(val);
}
- if(!ok) post("pyext - Syntax: _outlet(self,outlet,args...)");
+ if(!ok) {
+ PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outlet(self,outlet,args...)");
+ return NULL;
+ }
Py_INCREF(Py_None);
return Py_None;
@@ -211,7 +220,8 @@ PyObject *pyext::pyext_detach(PyObject *,PyObject *args)
int val;
if(!PyArg_ParseTuple(args, "Oi:pyext_detach",&self,&val)) {
// handle error
- post("pyext - Syntax: _detach(self,[0/1])");
+ PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _detach(self,[0/1])");
+ return NULL;
}
else {
pyext *ext = GetThis(self);
@@ -229,7 +239,8 @@ PyObject *pyext::pyext_stop(PyObject *,PyObject *args)
int val = -1;
if(!PyArg_ParseTuple(args, "O|i:pyext_stop",&self,&val)) {
// handle error
- post("pyext - Syntax: _stop(self,{wait time}");
+ PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _stop(self,{wait time})");
+ return NULL;
}
else {
pyext *ext = GetThis(self);
@@ -305,12 +316,50 @@ PyObject *pyext::pyext_tocanvas(PyObject *,PyObject *args)
if(!tp) Py_DECREF(val);
}
- if(!ok) post("pyext - Syntax: _tocanvas(self,args...)");
+ if(!ok) {
+ PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _tocanvas(self,args...)");
+ return NULL;
+ }
Py_INCREF(Py_None);
return Py_None;
}
#endif
+PyObject *pyext::pyext_invec(PyObject *,PyObject *args)
+{
+ PyObject *self;
+ int val = -1;
+ if(!PyArg_ParseTuple(args, "O|i:pyext_invec",&self,&val)) {
+ // handle error
+ PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _invec(self,inlet)");
+ return NULL;
+ }
+ else {
+ pyext *ext = GetThis(self);
+ PyObject *b = ext->GetSig(val,true);
+ if(b) return b;
+ }
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+PyObject *pyext::pyext_outvec(PyObject *,PyObject *args)
+{
+ PyObject *self;
+ int val = -1;
+ if(!PyArg_ParseTuple(args, "O|i:pyext_outvec",&self,&val)) {
+ // handle error
+ PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outvec(self,inlet)");
+ return NULL;
+ }
+ else {
+ pyext *ext = GetThis(self);
+ PyObject *b = ext->GetSig(val,false);
+ if(b) return b;
+ }
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}