aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/py/source/modmeth.cpp
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2005-01-11 04:59:27 +0000
committerThomas Grill <xovo@users.sourceforge.net>2005-01-11 04:59:27 +0000
commitf1558e3a9297c6a4fefa9d399a7c9d067d859aa3 (patch)
treed06d5c6cb9badc428a2ed4d3352f7bad6bfbf1f7 /externals/grill/py/source/modmeth.cpp
parentead9ba14ab569e5644e2deeffc436c31b53ea141 (diff)
added symbol type
fixed incorrect unbinding of instance methods fixes for symbol type little restructuring svn path=/trunk/; revision=2489
Diffstat (limited to 'externals/grill/py/source/modmeth.cpp')
-rw-r--r--externals/grill/py/source/modmeth.cpp36
1 files changed, 23 insertions, 13 deletions
diff --git a/externals/grill/py/source/modmeth.cpp b/externals/grill/py/source/modmeth.cpp
index 88e3290a..cf4dca88 100644
--- a/externals/grill/py/source/modmeth.cpp
+++ b/externals/grill/py/source/modmeth.cpp
@@ -107,16 +107,19 @@ PyObject *py::py_send(PyObject *,PyObject *args)
// should always be a tuple
FLEXT_ASSERT(PyTuple_Check(args));
- PyObject *name = PyTuple_GetItem(args,0); // borrowed reference
- if(name && PyString_Check(name)) {
- const t_symbol *recv = MakeSymbol(PyString_AsString(name));
- int sz = PySequence_Size(args);
+ const int sz = PyTuple_GET_SIZE(args);
+
+ const t_symbol *recv;
+ if(
+ sz >= 1 &&
+ (recv = pyObject_AsSymbol(PyTuple_GET_ITEM(args,0))) != NULL
+ ) {
PyObject *val;
bool tp =
sz == 2 &&
PySequence_Check(
- val = PyTuple_GetItem(args,1) // borrowed ref
+ val = PyTuple_GET_ITEM(args,1) // borrowed ref
);
if(!tp)
@@ -168,12 +171,14 @@ PyObject *py::py_getvalue(PyObject *self,PyObject *args)
{
FLEXT_ASSERT(PyTuple_Check(args));
+ const int sz = PyTuple_GET_SIZE(args);
+ const t_symbol *sym;
PyObject *ret;
- PyObject *name = PyTuple_GetItem(args,0); // borrowed reference
-
- if(name && PyString_Check(name)) {
- const t_symbol *sym = MakeSymbol(PyString_AsString(name));
+ if(
+ sz == 1 &&
+ (sym = pyObject_AsSymbol(PyTuple_GET_ITEM(args,0))) != NULL
+ ) {
float f;
if(value_getfloat(const_cast<t_symbol *>(sym),&f)) {
post("py/pyext - Could not get value '%s'",GetString(sym));
@@ -193,10 +198,15 @@ 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));
+ const int sz = PyTuple_GET_SIZE(args);
+ const t_symbol *sym;
+ PyObject *val; // borrowed reference
+
+ if(
+ sz == 2 &&
+ (sym = pyObject_AsSymbol(PyTuple_GET_ITEM(args,0))) != NULL &&
+ PyNumber_Check(val = PyTuple_GET_ITEM(args,1))
+ ) {
float f = (float)PyFloat_AsDouble(val);
if(value_setfloat(const_cast<t_symbol *>(sym),f))