[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.12.152.100: ~ $
.. highlightlang:: c

.. _capsules:

Capsules
--------

.. index:: object: Capsule

Refer to :ref:`using-capsules` for more information on using these objects.


.. 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*.  However, if :c:func:`PyCapsule_Import` failed to
   import the module, and *no_block* was true, no exception is set.

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

Filemanager

Name Type Size Permission Actions
abstract.txt File 702 B 0644
allocation.txt File 4.63 KB 0644
arg.txt File 25.33 KB 0644
bool.txt File 1.27 KB 0644
buffer.txt File 22.15 KB 0644
bytearray.txt File 2.13 KB 0644
capsule.txt File 5.67 KB 0644
cell.txt File 1.89 KB 0644
class.txt File 1.81 KB 0644
cobject.txt File 1.83 KB 0644
code.txt File 1.59 KB 0644
codec.txt File 4.5 KB 0644
complex.txt File 3.98 KB 0644
concrete.txt File 1.92 KB 0644
conversion.txt File 6.92 KB 0644
datetime.txt File 6.26 KB 0644
descriptor.txt File 1.27 KB 0644
dict.txt File 7.4 KB 0644
exceptions.txt File 29.17 KB 0644
file.txt File 6.02 KB 0644
float.txt File 3.29 KB 0644
function.txt File 2.36 KB 0644
gcsupport.txt File 6.12 KB 0644
gen.txt File 919 B 0644
import.txt File 10.95 KB 0644
index.txt File 578 B 0644
init.txt File 47.74 KB 0644
int.txt File 4.47 KB 0644
intro.txt File 27.8 KB 0644
iter.txt File 1.21 KB 0644
iterator.txt File 1.75 KB 0644
list.txt File 6.21 KB 0644
long.txt File 8.45 KB 0644
mapping.txt File 2.81 KB 0644
marshal.txt File 3.88 KB 0644
memory.txt File 8.39 KB 0644
method.txt File 2.05 KB 0644
module.txt File 3.76 KB 0644
none.txt File 689 B 0644
number.txt File 11.64 KB 0644
objbuffer.txt File 2.46 KB 0644
object.txt File 16.54 KB 0644
objimpl.txt File 305 B 0644
refcounting.txt File 2.87 KB 0644
reflection.txt File 1.53 KB 0644
sequence.txt File 8.18 KB 0644
set.txt File 6.41 KB 0644
slice.txt File 2.62 KB 0644
string.txt File 15.05 KB 0644
structures.txt File 12.09 KB 0644
sys.txt File 5.58 KB 0644
tuple.txt File 5.36 KB 0644
type.txt File 2.48 KB 0644
typeobj.txt File 61.98 KB 0644
unicode.txt File 43.95 KB 0644
utilities.txt File 415 B 0644
veryhigh.txt File 13.04 KB 0644
weakref.txt File 2.75 KB 0644