Update of /cvsroot/pure-data/externals/grill/py/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22721/source
Modified Files: clmeth.cpp modmeth.cpp pybase.cpp pybase.h pyext.h pysymbol.cpp Log Message: __str__ method for pyext, to enable print self calls added message bundle functionality (pyext.Bundle class) enable symbol binding for all callables (not only functions and methods) small optimizations and fixes enable optimization of Python code in reease build _isthreaded is now a data member instead of a method more safety for calls where association python-pd has already been removed fixes for pthreads V2
Index: clmeth.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/clmeth.cpp,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** clmeth.cpp 21 Sep 2005 10:52:33 -0000 1.26 --- clmeth.cpp 12 Dec 2005 00:18:42 -0000 1.27 *************** *** 211,218 **** } else ! val = PySequence_GetSlice(args,2,sz); // new ref #endif
! int o = PyInt_AsLong(outl); if(o >= 1 && o <= ext->Outlets()) { // offset outlet by signal outlets --- 211,218 ---- } else ! val = PyTuple_GetSlice(args,2,sz); // new ref #endif
! int o = PyInt_AS_LONG(outl); if(o >= 1 && o <= ext->Outlets()) { // offset outlet by signal outlets
Index: pyext.h =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/pyext.h,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** pyext.h 21 Sep 2005 10:52:33 -0000 1.29 --- pyext.h 12 Dec 2005 00:18:42 -0000 1.30 *************** *** 45,48 **** --- 45,50 ---- int Outlets() const { return outlets; }
+ static pyext *GetThis(PyObject *self); + protected:
*************** *** 88,93 **** virtual PyObject *GetSig(int ix,bool in);
- static pyext *GetThis(PyObject *self); - private: static void Setup(t_classid); --- 90,93 ----
Index: modmeth.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/modmeth.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** modmeth.cpp 9 Jul 2005 13:03:34 -0000 1.21 --- modmeth.cpp 12 Dec 2005 00:18:42 -0000 1.22 *************** *** 119,122 **** --- 119,123 ---- PyObject *val;
+ #if 0 bool tp = sz == 2 && *************** *** 127,133 **** --- 128,144 ---- if(!tp) val = PySequence_GetSlice(args,1,sz); // new ref + #else + if(sz == 2) { + val = PyTuple_GET_ITEM(args,1); // borrow reference + Py_INCREF(val); + } + else + val = PySequence_GetSlice(args,1,sz); // new ref + #endif
AtomListStatic<16> lst; const t_symbol *sym = GetPyArgs(lst,val); + Py_DECREF(val); + if(sym) { bool ok = Forward(recv,sym,lst.Count(),lst.Atoms()); *************** *** 136,152 **** post("py/pyext - Receiver doesn't exist"); #endif } ! else if(PyErr_Occurred()) PyErr_Print(); else post("py/pyext - No data to send"); ! ! if(!tp) Py_DECREF(val); } else post("py/pyext - Send name is invalid"); ! ! Py_INCREF(Py_None); ! return Py_None; }
--- 147,172 ---- post("py/pyext - Receiver doesn't exist"); #endif + Py_INCREF(Py_None); + return Py_None; } ! /* ! else if(PyErr_Occurred()) PyErr_Print(); else post("py/pyext - No data to send"); ! */ ! else { ! FLEXT_ASSERT(PyErr_Occurred()); ! return NULL; ! } } + /* else post("py/pyext - Send name is invalid"); ! */ ! else { ! PyErr_SetString(PyExc_ValueError,"py/pyext - Send name is invalid"); ! return NULL; ! } }
Index: pysymbol.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/pysymbol.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** pysymbol.cpp 9 Jul 2005 13:03:34 -0000 1.3 --- pysymbol.cpp 12 Dec 2005 00:18:42 -0000 1.4 *************** *** 37,42 **** else if(PyString_Check(arg)) ((pySymbol *)self)->sym = flext::MakeSymbol(PyString_AS_STRING(arg)); ! else ret = -1; Py_DECREF(arg);
--- 37,44 ---- else if(PyString_Check(arg)) ((pySymbol *)self)->sym = flext::MakeSymbol(PyString_AS_STRING(arg)); ! else { ! PyErr_SetString(PyExc_TypeError,"string or symbol argument expected"); ret = -1; + } Py_DECREF(arg);
Index: pybase.h =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/pybase.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** pybase.h 26 Sep 2005 13:59:59 -0000 1.9 --- pybase.h 12 Dec 2005 00:18:42 -0000 1.10 *************** *** 15,18 **** --- 15,19 ---- #include "pysymbol.h" #include "pybuffer.h" + #include "pybundle.h"
class pybase
Index: pybase.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/pybase.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** pybase.cpp 6 Dec 2005 21:54:32 -0000 1.12 --- pybase.cpp 12 Dec 2005 00:18:42 -0000 1.13 *************** *** 95,98 **** --- 95,99 ---- void initsymbol(); void initsamplebuffer(); + void initbundle();
void pybase::lib_setup() *************** *** 187,190 **** --- 188,195 ---- PyModule_AddObject(module_obj,"Buffer",(PyObject *)&pySamplebuffer_Type);
+ // add message bundle type + initbundle(); + PyModule_AddObject(module_obj,"Bundle",(PyObject *)&pyBundle_Type); + // -------------------------------------------------------------