Je suis vraiment nouveau à l'interaction C -> Python et j'écris actuellement une petite application en C qui va lire un fichier (en utilisant Python pour l'analyser) puis en utilisant les informations analysées pour exécuter de petits snippets Python. En ce moment, je me sens très bien comme je suis réinventer la roue, par exemple cette fonction:Vous cherchez une façon plus intelligente de convertir une liste Python en GList?
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;
}
Je voudrais vraiment faire cela d'une manière plus facile/plus intelligent moins sujette à des fuites de mémoire et les erreurs.
Tous les commentaires et suggestions sont appréciés.
Ouais, qui ressemble à une solution vraiment super :) Merci! – Hobblin