[PYTHON IMAGE-SIG] passing tuple to c and back
Dirk Engelmann
Dirk.Engelmann@iwr.uni-heidelberg.de
Wed, 12 Feb 1997 16:16:13 +0100 (MET)
Hi,
I would like to pass a tuple from python to a C-array.
Then after some calculations in C a tuple should be returned to the
calling python program.
I tried to do like this:
The Python calling sequence looks like
x = ( 1, 2, 3 )
y = c_module( x )
print y
The C-module makes some trouble.
(my attempts to pass simple objects as intergers and floats
are OK)
PySequence_SetItem(vec, i, newobj) returns -1 , obviously
vec is not a seqence object ?!
Is there any proposition to get it working?
Thanks for help!
regards,
Dirk Engelmann
--------------------------------------------------------------
Here is the module in C:
static PyObject *c_module( PyObject *self, PyObject *args )
{
PyObject *vec, *obj[N],*newobj ;
int x[N];
int i, n;
if ( !PyArg_ParseTuple( args, "O", &vec ) )
return NULL;
if (!PySequence_Check(vec))
return NULL;
n=PyObject_Length(vec);
for (i = 0; i < n; i++)
{
obj[i] = PySequence_GetItem(vec, i);
PyArg_Parse(obj[i],"i",&x[i]);
}
/* here: insert calculations on x */
for (i = 0; i < n; i++)
{
newobj = PyFloat_FromDouble( x[i] );
PySequence_SetItem(vec, i, newobj);
}
return Py_BuildValue("O",vec);
}
_______________
IMAGE-SIG - SIG on Image Processing with Python
send messages to: image-sig@python.org
administrivia to: image-sig-request@python.org
_______________