Thanks for the solution! Farshid Lashkari wrote: > [EMAIL PROTECTED] wrote: > > Hi, > > I want to pass something like this to a C function via the Python C > > API. > > mytuple = (("string_one", 1.2, 1.3), ("string_two", 1.4, 1.5), ......, > > ....., ) > > This tuple is dynamic in size, it needs to be 3 X N dimensions. each > > tuple in the > > tuple array is of the form (string, float, float) as described above > > > > so from python: > > > > mytuple = (("string_one", 1.2, 1.3), ("string_two", 1.4, 1.5)) > > api.myCFunction(mytuple) > > > > The C api: > > static PyObject *myCFunction(PyObject *self, PyObject *args) > > { > > > > if (!PyArg_ParseTuple(args, "O", ..... ?????????????) { > > printf(" error in PyArg_ParseTuple!\n"); > > return Py_None; > > } > > > > Thanks. > > > > > Just loop through each item in the arguments and parse the sub-tuple. > Here is some sample code that doesn't do any error checking: > > static PyObject *myCFunction(PyObject *self, PyObject *args) > { > int numItems, i; > PyObject *tuple; > > numItems = PyTuple_Size(args); > > for(i = 0; i < numItems; ++i) > { > tuple = PyTuple_GetItem(args,i); > if(!PyArg_ParseTuple(tuple,"sff",...) { > //handle error > Py_RETURN_NONE; > } > } > } > > Also, you need to INCREF Py_None before you return it. Or you can use > the macro used in the sample code above. > > -Farshid
-- http://mail.python.org/mailman/listinfo/python-list