
CObjects
********

Refer to *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.
