/usr/share/doc/python2-docs/html/_sources/c-api
NameSizeModeActions
abstract.rst.txt7020644editdlrm
allocation.rst.txt47960644editdlrm
arg.rst.txt260040644editdlrm
bool.rst.txt13040644editdlrm
buffer.rst.txt229650644editdlrm
bytearray.rst.txt21810644editdlrm
capsule.rst.txt57410644editdlrm
cell.rst.txt19400644editdlrm
class.rst.txt18660644editdlrm
cobject.rst.txt18700644editdlrm
code.rst.txt16350644editdlrm
codec.rst.txt46430644editdlrm
complex.rst.txt40790644editdlrm
concrete.rst.txt19630644editdlrm
conversion.rst.txt70920644editdlrm
datetime.rst.txt64130644editdlrm
descriptor.rst.txt12960644editdlrm
dict.rst.txt77570644editdlrm
exceptions.rst.txt353040644editdlrm
file.rst.txt61980644editdlrm
float.rst.txt33710644editdlrm
function.rst.txt24210644editdlrm
gcsupport.rst.txt65870644editdlrm
gen.rst.txt9200644editdlrm
import.rst.txt112210644editdlrm
index.rst.txt5780644editdlrm
init.rst.txt491600644editdlrm
int.rst.txt45780644editdlrm
intro.rst.txt284730644editdlrm
iter.rst.txt13900644editdlrm
iterator.rst.txt17960644editdlrm
list.rst.txt63620644editdlrm
long.rst.txt79870644editdlrm
mapping.rst.txt28740644editdlrm
marshal.rst.txt39850644editdlrm
memory.rst.txt115560644editdlrm
method.rst.txt20990644editdlrm
module.rst.txt38670644editdlrm
none.rst.txt6970644editdlrm
number.rst.txt119390644editdlrm
objbuffer.rst.txt25160644editdlrm
object.rst.txt174910644editdlrm
objimpl.rst.txt3050644editdlrm
refcounting.rst.txt29340644editdlrm
reflection.rst.txt15670644editdlrm
sequence.rst.txt87160644editdlrm
set.rst.txt65880644editdlrm
slice.rst.txt29790644editdlrm
string.rst.txt154220644editdlrm
structures.rst.txt149660644editdlrm
sys.rst.txt57140644editdlrm
tuple.rst.txt54910644editdlrm
type.rst.txt27610644editdlrm
typeobj.rst.txt669360644editdlrm
unicode.rst.txt451260644editdlrm
utilities.rst.txt4150644editdlrm
veryhigh.rst.txt133630644editdlrm
weakref.rst.txt28200644editdlrm
Edit: /usr/share/doc/python2-docs/html/_sources/c-api/capsule.rst.txt (5741B)
.. highlightlang:: c .. _capsules: Capsules -------- .. index:: object: Capsule Refer to :ref:`using-capsules` for more information on using these objects. .. versionadded:: 2.7 .. c:type:: PyCapsule This subtype of :c:type:`PyObject` represents an opaque value, useful for C extension modules who need to pass an opaque value (as a :c:type:`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. .. c:type:: PyCapsule_Destructor The type of a destructor callback for a capsule. Defined as:: typedef void (*PyCapsule_Destructor)(PyObject *); See :c:func:`PyCapsule_New` for the semantics of PyCapsule_Destructor callbacks. .. c:function:: int PyCapsule_CheckExact(PyObject *p) Return true if its argument is a :c:type:`PyCapsule`. .. c:function:: PyObject* PyCapsule_New(void *pointer, const char *name, PyCapsule_Destructor destructor) Create a :c:type:`PyCapsule` encapsulating the *pointer*. The *pointer* argument may not be *NULL*. On failure, set an exception and return *NULL*. The *name* string may either be *NULL* or a pointer to a valid C string. If non-*NULL*, this string must outlive the capsule. (Though it is permitted to free it inside the *destructor*.) If the *destructor* argument is not *NULL*, it will be called with the capsule as its argument when it is destroyed. If this capsule will be stored as an attribute of a module, the *name* should be specified as ``modulename.attributename``. This will enable other modules to import the capsule using :c:func:`PyCapsule_Import`. .. c:function:: void* PyCapsule_GetPointer(PyObject *capsule, const char *name) Retrieve the *pointer* stored in the capsule. On failure, set an exception and return *NULL*. The *name* parameter must compare exactly to the name stored in the capsule. If the name stored in the capsule is *NULL*, the *name* passed in must also be *NULL*. Python uses the C function :c:func:`strcmp` to compare capsule names. .. c:function:: PyCapsule_Destructor PyCapsule_GetDestructor(PyObject *capsule) Return the current destructor stored in the capsule. On failure, set an exception and return *NULL*. It is legal for a capsule to have a *NULL* destructor. This makes a *NULL* return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:`PyErr_Occurred` to disambiguate. .. c:function:: void* PyCapsule_GetContext(PyObject *capsule) Return the current context stored in the capsule. On failure, set an exception and return *NULL*. It is legal for a capsule to have a *NULL* context. This makes a *NULL* return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:`PyErr_Occurred` to disambiguate. .. c:function:: const char* PyCapsule_GetName(PyObject *capsule) Return the current name stored in the capsule. On failure, set an exception and return *NULL*. It is legal for a capsule to have a *NULL* name. This makes a *NULL* return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:`PyErr_Occurred` to disambiguate. .. c:function:: void* PyCapsule_Import(const char *name, int no_block) Import a pointer to a C object from a capsule attribute in a module. The *name* parameter should specify the full name to the attribute, as in ``module.attribute``. The *name* stored in the capsule must match this string exactly. If *no_block* is true, import the module without blocking (using :c:func:`PyImport_ImportModuleNoBlock`). If *no_block* is false, import the module conventionally (using :c:func:`PyImport_ImportModule`). Return the capsule's internal *pointer* on success. On failure, set an exception and return *NULL*. .. c:function:: int PyCapsule_IsValid(PyObject *capsule, const char *name) Determines whether or not *capsule* is a valid capsule. A valid capsule is non-*NULL*, passes :c:func:`PyCapsule_CheckExact`, has a non-*NULL* pointer stored in it, and its internal name matches the *name* parameter. (See :c:func:`PyCapsule_GetPointer` for information on how capsule names are compared.) In other words, if :c:func:`PyCapsule_IsValid` returns a true value, calls to any of the accessors (any function starting with :c:func:`PyCapsule_Get`) are guaranteed to succeed. Return a nonzero value if the object is valid and matches the name passed in. Return ``0`` otherwise. This function will not fail. .. c:function:: int PyCapsule_SetContext(PyObject *capsule, void *context) Set the context pointer inside *capsule* to *context*. Return ``0`` on success. Return nonzero and set an exception on failure. .. c:function:: int PyCapsule_SetDestructor(PyObject *capsule, PyCapsule_Destructor destructor) Set the destructor inside *capsule* to *destructor*. Return ``0`` on success. Return nonzero and set an exception on failure. .. c:function:: int PyCapsule_SetName(PyObject *capsule, const char *name) Set the name inside *capsule* to *name*. If non-*NULL*, the name must outlive the capsule. If the previous *name* stored in the capsule was not *NULL*, no attempt is made to free it. Return ``0`` on success. Return nonzero and set an exception on failure. .. c:function:: int PyCapsule_SetPointer(PyObject *capsule, void *pointer) Set the void pointer inside *capsule* to *pointer*. The pointer may not be *NULL*. Return ``0`` on success. Return nonzero and set an exception on failure.