Looking for a smarter way to convert a Python list to a GList?
Posted
by Kingdom of Fish
on Stack Overflow
See other posts from Stack Overflow
or by Kingdom of Fish
Published on 2010-03-29T02:12:37Z
Indexed on
2010/03/29
2:23 UTC
Read the original article
Hit count: 449
I'm really new to C -> Python interaction and am currently writing a small app in C which will read a file (using Python to parse it) and then using the parsed information to execute small Python snippets. At the moment I'm feeling very much like I'm reinventing wheels, for example this function:
typedef gpointer (list_func)(PyObject *obj);
GList *pylist_to_glist(list_func func, PyObject *pylist)
{
GList *result = NULL;
if (func == NULL)
{
fprintf(stderr, "No function definied for coverting PyObject.\n");
}
else if (PyList_Check(pylist))
{
PyObject *pIter = PyObject_GetIter(pylist);
PyObject *pItem;
while ((pItem = PyIter_Next(pIter)))
{
gpointer obj = func(pItem);
if (obj != NULL) result = g_list_append(result, obj);
else fprintf(stderr, "Could not convert PyObject to C object.\n");
Py_DECREF(pItem);
}
Py_DECREF(pIter);
}
return result;
}
I would really like to do this in a easier/smarter way less prone to memory leaks and errors.
All comments and suggestions are appreciated.
© Stack Overflow or respective owner