This document is for an old version of Python that is no longer supported. You should upgrade and read the Python documentation for the current stable release.

# CObjects

Warning

The CObject API is deprecated as of Python 2.7. Please switch to the new Capsules API.

`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.