aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/py/source/clmeth.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/clmeth.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/clmeth.cpp')
-rw-r--r--externals/grill/py/source/clmeth.cpp37
1 files changed, 27 insertions, 10 deletions
diff --git a/externals/grill/py/source/clmeth.cpp b/externals/grill/py/source/clmeth.cpp
index 3f856f57..a8e1ceb7 100644
--- a/externals/grill/py/source/clmeth.cpp
+++ b/externals/grill/py/source/clmeth.cpp
@@ -124,6 +124,10 @@ PyObject* pyext::pyext_getattr(PyObject *,PyObject *args)
pyext *ext = GetThis(self);
if(ext)
ret = PyLong_FromLong(ext->shouldexit?1:0);
+ else {
+ Py_INCREF(Py_True);
+ ret = Py_True;
+ }
}
// post("pyext::getattr %s",sname);
}
@@ -188,23 +192,20 @@ PyObject *pyext::pyext_outlet(PyObject *,PyObject *args)
ext->ToOutList(o-1,lst);
else
ext->ToOutAtom(o-1,*lst.Atoms());
+ ok = true;
}
else
- post("pyext: outlet index out of range");
-
- ok = true;
+ PyErr_SetString(PyExc_ValueError,"pyext - _outlet: index out of range");
}
else
- post("py/pyext - No data to send");
+ PyErr_SetString(PyExc_ValueError,"pyext - _outlet: invalid arguments");
if(!tp) Py_DECREF(val);
}
-
- if(!ok) {
+ else
PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outlet(self,outlet,args...)");
- return NULL;
- }
+ if(!ok) return NULL;
Py_INCREF(Py_None);
return Py_None;
}
@@ -219,12 +220,16 @@ PyObject *pyext::pyext_detach(PyObject *,PyObject *args)
int val;
if(!PyArg_ParseTuple(args, "Oi:pyext_detach",&self,&val)) {
// handle error
- PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _detach(self,[0/1])");
+ PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _detach(self,[0/1/2])");
+ return NULL;
+ }
+ else if(val < 0 || val > 2) {
+ PyErr_SetString(PyExc_ValueError,"pyext - _detach must be in the range 0..2");
return NULL;
}
else {
pyext *ext = GetThis(self);
- ext->detach = val != 0;
+ ext->detach = val;
}
Py_INCREF(Py_None);
@@ -241,6 +246,10 @@ PyObject *pyext::pyext_stop(PyObject *,PyObject *args)
PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _stop(self,{wait time})");
return NULL;
}
+ else if(val < 0) {
+ PyErr_SetString(PyExc_ValueError,"pyext - _stop time must be >= 0");
+ return NULL;
+ }
else {
pyext *ext = GetThis(self);
int cnt;
@@ -332,6 +341,10 @@ PyObject *pyext::pyext_invec(PyObject *,PyObject *args)
PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _invec(self,inlet)");
return NULL;
}
+ else if(val < 0) {
+ PyErr_SetString(PyExc_ValueError,"pyext - _invec: index out of range");
+ return NULL;
+ }
else {
pyext *ext = GetThis(self);
PyObject *b = ext->GetSig(val,true);
@@ -351,6 +364,10 @@ PyObject *pyext::pyext_outvec(PyObject *,PyObject *args)
PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outvec(self,inlet)");
return NULL;
}
+ else if(val < 0) {
+ PyErr_SetString(PyExc_ValueError,"pyext - _outvec: index out of range");
+ return NULL;
+ }
else {
pyext *ext = GetThis(self);
PyObject *b = ext->GetSig(val,false);