Multiple pointers
Carey Evans
careye at spamcop.net
Sun Jan 6 05:02:48 EST 2002
wilfartg at hotmail.com (Geoffrey Wilfart) writes:
> I would like to export to Python a C function that takes pointers of
> pointers as arguments, and fills them.
[...]
> void my_function(char ***arg), associated to:
>
> a = [[]]
> wrapper(a)
Actually, I'd create a new list from within wrapper(), and return it.
With functions like PyList_SET_ITEM, this is actually considerably
clearer than modifying an existing list.
I'm assuming that the size of the data is known beforehand, since
you're not passing any parameters to my_function() to say how big each
list is. In that case, this code fragment should get you started.
my_function(data);
list = PyList_New(ROWS);
if (list == NULL)
return NULL;
for (i = 0; i < ROWS; i++) {
PyObject *sublist = PyList_New(COLS);
if (sublist == NULL) {
Py_DECREF(list);
return NULL;
}
PyList_SET_ITEM(list, i, sublist);
for (j = 0; j < COLS; j++) {
PyObject *string = PyString_FromString(data[i][j]);
if (string == NULL) {
Py_DECREF(list);
return NULL;
}
PyList_SET_ITEM(sublist, j, string);
}
}
return list;
--
Carey Evans http://home.clear.net.nz/pages/c.evans/
Cavem canus.
More information about the Python-list
mailing list