From 3fb8afa21cd68ee74088aaef7dc425b24f0e37a5 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Mon, 20 Sep 2004 04:06:08 +0000 Subject: "" svn path=/trunk/; revision=2047 --- externals/grill/py/py.vcproj | 2 +- externals/grill/py/readme.txt | 2 ++ externals/grill/py/source/main.cpp | 9 ++++-- externals/grill/py/source/main.h | 4 +++ externals/grill/py/source/modmeth.cpp | 61 ++++++++++++++++++++++++++++++++--- externals/grill/py/source/py.cpp | 2 +- externals/grill/py/source/pyargs.cpp | 4 ++- 7 files changed, 74 insertions(+), 10 deletions(-) (limited to 'externals') diff --git a/externals/grill/py/py.vcproj b/externals/grill/py/py.vcproj index a8c1eaf2..e4ba34b2 100644 --- a/externals/grill/py/py.vcproj +++ b/externals/grill/py/py.vcproj @@ -292,7 +292,7 @@ Name="VCCustomBuildTool"/> (sym),&f)) { + post("py/pyext - Could not get value '%s'",GetString(sym)); + Py_INCREF(ret = Py_None); + } + else + ret = PyFloat_FromDouble(f); + } + else { + post("py/pyext - Syntax: _getvalue [name]"); + Py_INCREF(ret = Py_None); + } + return ret; +} + +PyObject *py::py_setvalue(PyObject *self,PyObject *args) +{ + FLEXT_ASSERT(PyTuple_Check(args)); + + PyObject *name = PyTuple_GetItem(args,0); // borrowed reference + PyObject *val = PyTuple_GetItem(args,1); // borrowed reference + if(name && val && PyString_Check(name) && PyNumber_Check(val)) { + const t_symbol *sym = MakeSymbol(PyString_AsString(name)); + float f = (float)PyFloat_AsDouble(val); + + if(value_setfloat(const_cast(sym),f)) + post("py/pyext - Could not set value '%s'",GetString(sym)); + } + else + post("py/pyext - Syntax: _setvalue [name] [value]"); + + Py_INCREF(Py_None); + return Py_None; +} +#endif diff --git a/externals/grill/py/source/py.cpp b/externals/grill/py/source/py.cpp index 4690fb50..6883bfad 100644 --- a/externals/grill/py/source/py.cpp +++ b/externals/grill/py/source/py.cpp @@ -321,7 +321,7 @@ BL pyobj::work(const t_symbol *s,I argc,const t_atom *argv) if(rargs) { // call to outlet _outside_ the Mutex lock! // otherwise (if not detached) deadlock will occur - ToOutList(0,*rargs); + if(rargs->Count()) ToOutList(0,*rargs); delete rargs; } diff --git a/externals/grill/py/source/pyargs.cpp b/externals/grill/py/source/pyargs.cpp index 69e403b0..64bcf275 100644 --- a/externals/grill/py/source/pyargs.cpp +++ b/externals/grill/py/source/pyargs.cpp @@ -107,7 +107,9 @@ flext::AtomList *py::GetPyArgs(PyObject *pValue,PyObject **self) rargc = PySequence_Size(pValue); tp = sequ; } - else { + else if(pValue == Py_None) + Py_DECREF(pValue); + else { rargc = 1; tp = atom; } -- cgit v1.2.1