aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/py/source/modmeth.cpp
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2004-09-20 04:06:08 +0000
committerThomas Grill <xovo@users.sourceforge.net>2004-09-20 04:06:08 +0000
commit3fb8afa21cd68ee74088aaef7dc425b24f0e37a5 (patch)
tree086bb84d5fb01778e32a6be5d7154df13ea017e1 /externals/grill/py/source/modmeth.cpp
parentee6334102ae0ca06143d5acc90644bef1da92acb (diff)
""
svn path=/trunk/; revision=2047
Diffstat (limited to 'externals/grill/py/source/modmeth.cpp')
-rw-r--r--externals/grill/py/source/modmeth.cpp61
1 files changed, 57 insertions, 4 deletions
diff --git a/externals/grill/py/source/modmeth.cpp b/externals/grill/py/source/modmeth.cpp
index 0fe0cc6a..ac95e01e 100644
--- a/externals/grill/py/source/modmeth.cpp
+++ b/externals/grill/py/source/modmeth.cpp
@@ -19,10 +19,15 @@ PyMethodDef py::func_tbl[] =
{ "_priority", py::py_priority, METH_VARARGS,"Set priority of current thread" },
#endif
- { "_samplerate", py::py_samplerate, 0,"Get system sample rate" },
- { "_blocksize", py::py_blocksize, 0,"Get system block size" },
- { "_inchannels", py::py_inchannels, 0,"Get number of audio in channels" },
- { "_outchannels", py::py_outchannels, 0,"Get number of audio out channels" },
+ { "_samplerate", py::py_samplerate, METH_NOARGS,"Get system sample rate" },
+ { "_blocksize", py::py_blocksize, METH_NOARGS,"Get system block size" },
+ { "_inchannels", py::py_inchannels, METH_NOARGS,"Get number of audio in channels" },
+ { "_outchannels", py::py_outchannels, METH_NOARGS,"Get number of audio out channels" },
+
+#if FLEXT_SYS == FLEXT_SYS_PD
+ { "_getvalue", py::py_getvalue, METH_VARARGS,"Get value of a 'value' object" },
+ { "_setvalue", py::py_setvalue, METH_VARARGS,"Set value of a 'value' object" },
+#endif
{NULL, NULL, 0, NULL} // sentinel
};
@@ -39,6 +44,8 @@ const C *py::py_doc =
"_blocksize(): Get current blocksize\n"
"_inchannels(): Get number of audio in channels\n"
"_outchannels(): Get number of audio out channels\n"
+ "_getvalue(name): Get value of a 'value' object\n"
+ "_setvalue(name,float): Set value of a 'value' object\n"
;
@@ -186,5 +193,51 @@ PyObject *py::py_priority(PyObject *self,PyObject *args)
}
#endif
+#if FLEXT_SYS == FLEXT_SYS_PD
+PyObject *py::py_getvalue(PyObject *self,PyObject *args)
+{
+ FLEXT_ASSERT(PyTuple_Check(args));
+
+ PyObject *ret;
+ PyObject *name = PyTuple_GetItem(args,0); // borrowed reference
+
+ if(name && PyString_Check(name)) {
+ const t_symbol *sym = MakeSymbol(PyString_AsString(name));
+
+ float f;
+ if(value_getfloat(const_cast<t_symbol *>(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<t_symbol *>(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