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.
