Я действительно новичок в C -> взаимодействии с Python и в настоящее время пишу небольшое приложение на C, которое будет читать файл (используя Python для его анализа), а затем использовать проанализированную информацию для выполнения небольших фрагментов Python. В настоящий момент я чувствую, что заново изобретаю колеса, например, эту функцию:
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;
}
Я бы действительно хотел сделать это более простым и интеллектуальным способом, менее подверженным утечкам памяти и ошибкам.
Все комментарии и предложения приветствуются.