7.5.9 CObjects

Refer to Extending and Embedding the Python Interpreter, section 1.12, ``Providing a C API for an Extension Module,'' for more information on using these objects.

PyCObject
This subtype of PyObject represents an opaque value, useful for C extension modules who need to pass an opaque value (as a void* pointer) through Python code to other C code. It is often used to make a C function pointer defined in one module available to other modules, so the regular import mechanism can be used to access C APIs defined in dynamically loaded modules.

int PyCObject_Check(PyObject *p)
Return true if its argument is a PyCObject.

PyObject* PyCObject_FromVoidPtr(void* cobj, void (*destr)(void *))
Return value: New reference.
Create a PyCObject from the void *cobj. The destr function will be called when the object is reclaimed, unless it is NULL.

PyObject* PyCObject_FromVoidPtrAndDesc(void* cobj, void* desc, void (*destr)(void *, void *))
Return value: New reference.
Create a PyCObject from the void *cobj. The destr function will be called when the object is reclaimed. The desc argument can be used to pass extra callback data for the destructor function.

void* PyCObject_AsVoidPtr(PyObject* self)
Return the object void * that the PyCObject self was created with.

void* PyCObject_GetDesc(PyObject* self)
Return the description void * that the PyCObject self was created with.

int PyCObject_SetVoidPtr(PyObject* self, void* cobj)
Set the void pointer inside self to cobj. The PyCObject must not have an associated destructor. Return true on success, false on failure.

See About this document... for information on suggesting changes.