How to convert a Python Tuple into a C/C++ array?

J

Jinming Xu

Hello everyone,

While embedding my C++ program with Python, I am impeded by the conversion
from a Python Tuple to a C++ array. I hope to get some assistance from you
guys.

I have a sequence of float numbers to be passed from Python to C++, with
indefinite size. So I chose to use Tuple on the Python side. Since
PyArg_ParseTuple() has no appropriate format to parse Tuple (The Tuple I am
saying is not the Tuple of arguments) of arbitray size, I simply passed the
tuple as follows

PyObject* myTuple;
if(!PyArg_ParseTuple(args,"O",&myTuple))
return NULL;

Now I have the pointer, myTuple, to the Tuple passed in. How can I convert
the the entired tuple, myTuple pointing to, into a float array, or convert
an individual element into a C/C++ float number? Are there any conversion
functions?

Any suggestions or hints will be deeply appreciated!

Thanks in advance!

Jinming

_________________________________________________________________
Express yourself with the new version of MSN Messenger! Download today -
it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
 
R

Rick L. Ratzel

Here is one way to do it (untested...consider it pseudo-code):

....
my_array = (double*) malloc(sizeof(double) * PyTuple_Size(pyObj));

tupleSize = PyTuple_Size(pyObj);

for( i=0; i < tupleSize; i++ ) {
tupleItem = PyTuple_GetItem(pyObj, i);

if( !PyFloat_Check(tupleItem) ) {
printf("Error: tuple contains a non-float value");
exit(1);
}
my_array = PyFloat_AsDouble(tupleItem);
}
....
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Staff online

Members online

Forum statistics

Threads
473,767
Messages
2,569,571
Members
45,045
Latest member
DRCM

Latest Threads

Top