Документация Python неофициальный перевод

CObjects

Предупреждение

API CObject устарел с Python 2.7. Пожалуйста, переходите на новый Capsules API.

PyCObject

Этот подтип PyObject представляет собой непрозрачное значение, полезное для C модулей расширения, которым нужно передать непрозрачное значение (в виде void* указателя) через код Python в другой код C. Часто используется, чтобы сделать указатель на функцию C , определённую в одном модуле, доступной для других модулей, так что обычный механизм импорта может использоваться для доступа к C API, определённым в динамически загружаемых модулях.

int PyCObject_Check(PyObject *p)

Возвращает true, если аргумент является объектом PyCObject.

PyObject* PyCObject_FromVoidPtr(void* cobj, void (*destr)(void *))
Возвращаемое значение: новая ссылка.

Создает PyCObject из void * cobj. Функция destr будет вызвана при освобождении объекта, если только она не равна NULL.

PyObject* PyCObject_FromVoidPtrAndDesc(void* cobj, void* desc, void (*destr)(void *, void *))
Возвращаемое значение: новая ссылка.

Создает PyCObject из void * cobj. Функция destr будет вызвана при освобождении объекта. Аргумент desc может использоваться для передачи дополнительных данных колбэка для функции-деструктора.

void* PyCObject_AsVoidPtr(PyObject* self)

Возвращает объект void *, с которым PyCObject self был создан.

void* PyCObject_GetDesc(PyObject* self)

Возвращает описание void *, с которым PyCObject self был создан.

int PyCObject_SetVoidPtr(PyObject* self, void* cobj)

Устанавливает указатель void внутри self в cobj. PyCObject не должен иметь связанного деструктора. Возвращает true при успехе, false при ошибке.