From 3922cb5abcd451238047713829456e50f94dade2 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Fri, 6 Jul 2007 21:44:56 +0000 Subject: adapting to new flext lockfree structures much better detach method handling (one thread for all object instances) use PyGILState_\*() functionality (enabled with PY_USE_GIL) ooops, fixing typo fixing numpy initialization quirks pyext._init is now called after __init__ enabled use of inofficial PD functionality for search and help path access (#define PY_USE_INOFFICIAL) added sketch for new pye (Python expression) object buffer protocol adapted for Python 2.5 svn path=/trunk/; revision=7903 --- externals/grill/py/source/modmeth.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'externals/grill/py/source/modmeth.cpp') diff --git a/externals/grill/py/source/modmeth.cpp b/externals/grill/py/source/modmeth.cpp index 52f5b964..039eb6cc 100644 --- a/externals/grill/py/source/modmeth.cpp +++ b/externals/grill/py/source/modmeth.cpp @@ -23,6 +23,9 @@ PyMethodDef pybase::func_tbl[] = { "_samplerate", pybase::py_samplerate, METH_NOARGS,"Get system sample rate" }, { "_blocksize", pybase::py_blocksize, METH_NOARGS,"Get system block size" }, + { "_searchpaths", pybase::py_searchpaths, METH_NOARGS,"Get system search paths" }, + { "_helppaths", pybase::py_helppaths, METH_NOARGS,"Get system help paths" }, + #if FLEXT_SYS == FLEXT_SYS_PD { "_getvalue", pybase::py_getvalue, METH_VARARGS,"Get value of a 'value' object" }, { "_setvalue", pybase::py_setvalue, METH_VARARGS,"Set value of a 'value' object" }, @@ -51,7 +54,6 @@ const char *pybase::py_doc = "_tuple(args...): Make a tuple from args\n" ; - #ifdef FLEXT_THREADS void pybase::tick(void *) { @@ -111,6 +113,34 @@ PyObject *pybase::py_blocksize(PyObject *self,PyObject *args) return PyLong_FromLong(sys_getblksize()); } +PyObject *pybase::py_searchpaths(PyObject *self,PyObject *args) +{ +#if FLEXT_SYS == FLEXT_SYS_PD && defined(PY_USE_INOFFICIAL) + PyObject *ret = PyList_New(0); + char *dir; + for(int i = 0; (dir = namelist_get(sys_searchpath,i)) != NULL; ++i) + PyList_Append(ret,PyString_FromString(dir)); + return ret; +#else + Py_INCREF(Py_None); + return Py_None; +#endif +} + +PyObject *pybase::py_helppaths(PyObject *self,PyObject *args) +{ +#if FLEXT_SYS == FLEXT_SYS_PD && defined(PY_USE_INOFFICIAL) + PyObject *ret = PyList_New(0); + char *dir; + for(int i = 0; (dir = namelist_get(sys_helppath,i)) != NULL; ++i) + PyList_Append(ret,PyString_FromString(dir)); + return ret; +#else + Py_INCREF(Py_None); + return Py_None; +#endif +} + PyObject *pybase::py_send(PyObject *,PyObject *args) { // should always be a tuple -- cgit v1.2.1