return tuple from C to python (extending python)
rogue_pedro at yahoo.com
Wed Oct 25 01:14:16 CEST 2006
> Hi all, I want to make python call some C functions, process them and
> return them.
> Ok, I got all the wrapper functions and everything setup right. Here
> is my problem. What I need to do is to return a tuple from C to
> To go about doing this, I first create a tuple object in C doing the
> PyObject* toRet;
> toRet = PyTuple_New(num_addr);
> then, in a for loop, i assign values to the tuple as follows:
> for ( i = 0; i < num_addr; i++ )
> printf("%d\n", dat[i]);
> PyTuple_SET_ITEM(toRet, i, (PyObject*)dat[i] );
> (dat is declared as follows: unsigned int* dat; )
> then, i say return toRet at the end of my C function.
> when I try to print the tuple in python, it says the memory address
> 0x.... could not be written, and I can see a part of the tuple
> printout, which is as follows:
> ( <nil>,
> then i get my error.
> can someone please help me with this?
> thanks a lot!
> -- Kiran
I have not done a great deal of extension work with python, however, I
do not believe you can simply cast an int (or pointer to int, which is
what you say dat is declared as, unless my C is /really/ rusty) to
I think you need to do something like Py_BuildValue("i", 123), but see
http://docs.python.org/ext/buildValue.html for more info.
More information about the Python-list