Форум сайта python.su
Насколько я понял, можно легко преобразовать стандартные типы при помощи функции Py_BuildValue.
Вопрос: как передать в Питоновский код указатель на void, т.е на произвольный тип, и чтобы потом Питоновский код отдал этот указатель обратно в С++ код.
В строке формата Py_BuildValue есть что-то похожее, что мне нужно:
O& (object)
Convert anything to a Python object through a converter function. The function is called with anything (which should be compatible with void *) as its argument and should return a “new” Python object, or NULL if an error occurred.
но непонятно, что за функция converter и т.д.
Приводить указатель к типу int мне кажется небезопасно, а привлекать ctypes для этого - еще больший гемор.
Как правильно сделать?
Офлайн
Нашел решение
Специально для этого используется тип PyCObject (или PyCapsule в последних версиях), и функция, создающая этот тип
PyObject* PyCObject_FromVoidPtr( void* cobj, void (*destr)(void *))
Вопрос снят.
Офлайн