diff options
author | Thomas Grill <xovo@users.sourceforge.net> | 2007-07-06 21:44:56 +0000 |
---|---|---|
committer | Thomas Grill <xovo@users.sourceforge.net> | 2007-07-06 21:44:56 +0000 |
commit | 3922cb5abcd451238047713829456e50f94dade2 (patch) | |
tree | 990cb81fcccfc5bbe3807442401615ec76b66d44 /externals/grill/py/source/modmeth.cpp | |
parent | d58dd27f1324e4d33a3f09637b2c06198dd27df4 (diff) |
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
Diffstat (limited to 'externals/grill/py/source/modmeth.cpp')
-rw-r--r-- | externals/grill/py/source/modmeth.cpp | 32 |
1 files changed, 31 insertions, 1 deletions
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 |