0
我真的很新C - > Python交互,目前我正在用C編寫一個小應用程序,它將讀取一個文件(使用Python解析它),然後使用解析的信息執行小的Python片段。此刻,我感覺很像我重塑車輪,比如該功能:尋找更智能的方式將Python列表轉換爲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;
}
我真的想這樣做的更簡單/更聰明的方式不易內存泄漏和錯誤。
所有的意見和建議表示讚賞。
是啊,這似乎是一個真正偉大的解決方案:)謝謝! – Hobblin 2010-03-29 03:00:08