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/clmeth.cpp | |
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/clmeth.cpp')
-rw-r--r-- | externals/grill/py/source/clmeth.cpp | 37 |
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); |