Pass a tuple (or list) to a C wrapper function
Java and Swing
codecraig at gmail.com
Thu Oct 13 09:10:47 EDT 2005
Fredrik,
...I tried using your code...
static long *get_long_array(PyObject *data, int *data_size) {
int i, size;
long* out;
PyObject* seq;
seq = PySequence_Fast(data, "expected a sequence");
if (!seq)
return NULL;
size = PySequence_Size(seq);
if (size < 0)
return NULL;
if (data_size)
*data_size = size;
out = (long*) PyMem_Malloc(size * sizeof(long));
if (!out) {
Py_DECREF(seq);
PyErr_NoMemory();
return NULL;
}
for (i = 0; i < size; i++)
out[i] = PyInt_AsLong(PySequence_Fast_GET_ITEM(seq, i));
Py_DECREF(seq);
if (PyErr_Occurred()) {
PyMem_Free(out);
out = NULL;
}
return out;
}
and I get this error..
C:\project\myapp.c(549) : error C2040: 'get_long_array' : 'long
*(struct _object *,int *)' differs in levels of indirection from 'int
()'
any idea?
Fredrik Lundh wrote:
> Jeremy Moles wrote:
>
> > Probably what you want to do though is just keep the tuple as is and
> > iterate over it using the PySequence_* protocol:
> >
> > http://docs.python.org/api/sequence.html
>
> I did post a complete and tested example a few days ago, which contained
> code that showed how to do this. a complete waste of time, of course.
>
> </F>
More information about the Python-list
mailing list