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

Rick L. Ratzel rick.ratzel at scd.magma-da.com
Thu May 20 17:37:30 EDT 2004


    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[i] = PyFloat_AsDouble(tupleItem);
    }
...


Jinming Xu wrote:
> 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/
> 
> 



More information about the Python-list mailing list