[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.144.117.164: ~ $

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Capsules &mdash; Python 2.7.5 documentation</title>
    
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '2.7.5',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/sidebar.js"></script>
    <link rel="search" type="application/opensearchdescription+xml"
          title="Search within Python 2.7.5 documentation"
          href="../_static/opensearch.xml"/>
    <link rel="author" title="About these documents" href="../about.html" />
    <link rel="copyright" title="Copyright" href="../copyright.html" />
    <link rel="top" title="Python 2.7.5 documentation" href="../index.html" />
    <link rel="up" title="Concrete Objects Layer" href="concrete.html" />
    <link rel="next" title="CObjects" href="cobject.html" />
    <link rel="prev" title="Weak Reference Objects" href="weakref.html" />
    <link rel="shortcut icon" type="image/png" href="../_static/py.png" />
    <script type="text/javascript" src="../_static/copybutton.js"></script>
    
 

  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="cobject.html" title="CObjects"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="weakref.html" title="Weak Reference Objects"
             accesskey="P">previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="http://www.python.org/">Python</a> &raquo;</li>
        <li>
          <a href="../index.html">Python 2.7.5 documentation</a> &raquo;
        </li>

          <li><a href="index.html" >Python/C API Reference Manual</a> &raquo;</li>
          <li><a href="concrete.html" accesskey="U">Concrete Objects Layer</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="capsules">
<span id="id1"></span><h1>Capsules<a class="headerlink" href="#capsules" title="Permalink to this headline">¶</a></h1>
<p id="index-0">Refer to <a class="reference internal" href="../extending/extending.html#using-capsules"><em>Providing a C API for an Extension Module</em></a> for more information on using these objects.</p>
<dl class="type">
<dt id="PyCapsule">
<tt class="descname">PyCapsule</tt><a class="headerlink" href="#PyCapsule" title="Permalink to this definition">¶</a></dt>
<dd><p>This subtype of <a class="reference internal" href="structures.html#PyObject" title="PyObject"><tt class="xref c c-type docutils literal"><span class="pre">PyObject</span></tt></a> represents an opaque value, useful for C
extension modules who need to pass an opaque value (as a <tt class="xref c c-type docutils literal"><span class="pre">void*</span></tt>
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.</p>
</dd></dl>

<dl class="type">
<dt id="PyCapsule_Destructor">
<tt class="descname">PyCapsule_Destructor</tt><a class="headerlink" href="#PyCapsule_Destructor" title="Permalink to this definition">¶</a></dt>
<dd><p>The type of a destructor callback for a capsule.  Defined as:</p>
<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">PyCapsule_Destructor</span><span class="p">)(</span><span class="n">PyObject</span> <span class="o">*</span><span class="p">);</span>
</pre></div>
</div>
<p>See <a class="reference internal" href="#PyCapsule_New" title="PyCapsule_New"><tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_New()</span></tt></a> for the semantics of PyCapsule_Destructor
callbacks.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_CheckExact">
int <tt class="descname">PyCapsule_CheckExact</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*p</em><big>)</big><a class="headerlink" href="#PyCapsule_CheckExact" title="Permalink to this definition">¶</a></dt>
<dd><p>Return true if its argument is a <a class="reference internal" href="#PyCapsule" title="PyCapsule"><tt class="xref c c-type docutils literal"><span class="pre">PyCapsule</span></tt></a>.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_New">
<a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a>* <tt class="descname">PyCapsule_New</tt><big>(</big>void<em>&nbsp;*pointer</em>, const char<em>&nbsp;*name</em>, <a class="reference internal" href="#PyCapsule_Destructor" title="PyCapsule_Destructor">PyCapsule_Destructor</a><em>&nbsp;destructor</em><big>)</big><a class="headerlink" href="#PyCapsule_New" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Create a <a class="reference internal" href="#PyCapsule" title="PyCapsule"><tt class="xref c c-type docutils literal"><span class="pre">PyCapsule</span></tt></a> encapsulating the <em>pointer</em>.  The <em>pointer</em>
argument may not be <em>NULL</em>.</p>
<p>On failure, set an exception and return <em>NULL</em>.</p>
<p>The <em>name</em> string may either be <em>NULL</em> or a pointer to a valid C string.  If
non-<em>NULL</em>, this string must outlive the capsule.  (Though it is permitted to
free it inside the <em>destructor</em>.)</p>
<p>If the <em>destructor</em> argument is not <em>NULL</em>, it will be called with the
capsule as its argument when it is destroyed.</p>
<p>If this capsule will be stored as an attribute of a module, the <em>name</em> should
be specified as <tt class="docutils literal"><span class="pre">modulename.attributename</span></tt>.  This will enable other modules
to import the capsule using <a class="reference internal" href="#PyCapsule_Import" title="PyCapsule_Import"><tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_Import()</span></tt></a>.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_GetPointer">
void* <tt class="descname">PyCapsule_GetPointer</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*capsule</em>, const char<em>&nbsp;*name</em><big>)</big><a class="headerlink" href="#PyCapsule_GetPointer" title="Permalink to this definition">¶</a></dt>
<dd><p>Retrieve the <em>pointer</em> stored in the capsule.  On failure, set an exception
and return <em>NULL</em>.</p>
<p>The <em>name</em> parameter must compare exactly to the name stored in the capsule.
If the name stored in the capsule is <em>NULL</em>, the <em>name</em> passed in must also
be <em>NULL</em>.  Python uses the C function <tt class="xref c c-func docutils literal"><span class="pre">strcmp()</span></tt> to compare capsule
names.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_GetDestructor">
<a class="reference internal" href="#PyCapsule_Destructor" title="PyCapsule_Destructor">PyCapsule_Destructor</a> <tt class="descname">PyCapsule_GetDestructor</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*capsule</em><big>)</big><a class="headerlink" href="#PyCapsule_GetDestructor" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the current destructor stored in the capsule.  On failure, set an
exception and return <em>NULL</em>.</p>
<p>It is legal for a capsule to have a <em>NULL</em> destructor.  This makes a <em>NULL</em>
return code somewhat ambiguous; use <a class="reference internal" href="#PyCapsule_IsValid" title="PyCapsule_IsValid"><tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_IsValid()</span></tt></a> or
<a class="reference internal" href="exceptions.html#PyErr_Occurred" title="PyErr_Occurred"><tt class="xref c c-func docutils literal"><span class="pre">PyErr_Occurred()</span></tt></a> to disambiguate.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_GetContext">
void* <tt class="descname">PyCapsule_GetContext</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*capsule</em><big>)</big><a class="headerlink" href="#PyCapsule_GetContext" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the current context stored in the capsule.  On failure, set an
exception and return <em>NULL</em>.</p>
<p>It is legal for a capsule to have a <em>NULL</em> context.  This makes a <em>NULL</em>
return code somewhat ambiguous; use <a class="reference internal" href="#PyCapsule_IsValid" title="PyCapsule_IsValid"><tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_IsValid()</span></tt></a> or
<a class="reference internal" href="exceptions.html#PyErr_Occurred" title="PyErr_Occurred"><tt class="xref c c-func docutils literal"><span class="pre">PyErr_Occurred()</span></tt></a> to disambiguate.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_GetName">
const char* <tt class="descname">PyCapsule_GetName</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*capsule</em><big>)</big><a class="headerlink" href="#PyCapsule_GetName" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the current name stored in the capsule.  On failure, set an exception
and return <em>NULL</em>.</p>
<p>It is legal for a capsule to have a <em>NULL</em> name.  This makes a <em>NULL</em> return
code somewhat ambiguous; use <a class="reference internal" href="#PyCapsule_IsValid" title="PyCapsule_IsValid"><tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_IsValid()</span></tt></a> or
<a class="reference internal" href="exceptions.html#PyErr_Occurred" title="PyErr_Occurred"><tt class="xref c c-func docutils literal"><span class="pre">PyErr_Occurred()</span></tt></a> to disambiguate.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_Import">
void* <tt class="descname">PyCapsule_Import</tt><big>(</big>const char<em>&nbsp;*name</em>, int<em>&nbsp;no_block</em><big>)</big><a class="headerlink" href="#PyCapsule_Import" title="Permalink to this definition">¶</a></dt>
<dd><p>Import a pointer to a C object from a capsule attribute in a module.  The
<em>name</em> parameter should specify the full name to the attribute, as in
<tt class="docutils literal"><span class="pre">module.attribute</span></tt>.  The <em>name</em> stored in the capsule must match this
string exactly.  If <em>no_block</em> is true, import the module without blocking
(using <a class="reference internal" href="import.html#PyImport_ImportModuleNoBlock" title="PyImport_ImportModuleNoBlock"><tt class="xref c c-func docutils literal"><span class="pre">PyImport_ImportModuleNoBlock()</span></tt></a>).  If <em>no_block</em> is false,
import the module conventionally (using <a class="reference internal" href="import.html#PyImport_ImportModule" title="PyImport_ImportModule"><tt class="xref c c-func docutils literal"><span class="pre">PyImport_ImportModule()</span></tt></a>).</p>
<p>Return the capsule&#8217;s internal <em>pointer</em> on success.  On failure, set an
exception and return <em>NULL</em>.  However, if <a class="reference internal" href="#PyCapsule_Import" title="PyCapsule_Import"><tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_Import()</span></tt></a> failed to
import the module, and <em>no_block</em> was true, no exception is set.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_IsValid">
int <tt class="descname">PyCapsule_IsValid</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*capsule</em>, const char<em>&nbsp;*name</em><big>)</big><a class="headerlink" href="#PyCapsule_IsValid" title="Permalink to this definition">¶</a></dt>
<dd><p>Determines whether or not <em>capsule</em> is a valid capsule.  A valid capsule is
non-<em>NULL</em>, passes <a class="reference internal" href="#PyCapsule_CheckExact" title="PyCapsule_CheckExact"><tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_CheckExact()</span></tt></a>, has a non-<em>NULL</em> pointer
stored in it, and its internal name matches the <em>name</em> parameter.  (See
<a class="reference internal" href="#PyCapsule_GetPointer" title="PyCapsule_GetPointer"><tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_GetPointer()</span></tt></a> for information on how capsule names are
compared.)</p>
<p>In other words, if <a class="reference internal" href="#PyCapsule_IsValid" title="PyCapsule_IsValid"><tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_IsValid()</span></tt></a> returns a true value, calls to
any of the accessors (any function starting with <tt class="xref c c-func docutils literal"><span class="pre">PyCapsule_Get()</span></tt>) are
guaranteed to succeed.</p>
<p>Return a nonzero value if the object is valid and matches the name passed in.
Return 0 otherwise.  This function will not fail.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_SetContext">
int <tt class="descname">PyCapsule_SetContext</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*capsule</em>, void<em>&nbsp;*context</em><big>)</big><a class="headerlink" href="#PyCapsule_SetContext" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the context pointer inside <em>capsule</em> to <em>context</em>.</p>
<p>Return 0 on success.  Return nonzero and set an exception on failure.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_SetDestructor">
int <tt class="descname">PyCapsule_SetDestructor</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*capsule</em>, <a class="reference internal" href="#PyCapsule_Destructor" title="PyCapsule_Destructor">PyCapsule_Destructor</a><em>&nbsp;destructor</em><big>)</big><a class="headerlink" href="#PyCapsule_SetDestructor" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the destructor inside <em>capsule</em> to <em>destructor</em>.</p>
<p>Return 0 on success.  Return nonzero and set an exception on failure.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_SetName">
int <tt class="descname">PyCapsule_SetName</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*capsule</em>, const char<em>&nbsp;*name</em><big>)</big><a class="headerlink" href="#PyCapsule_SetName" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the name inside <em>capsule</em> to <em>name</em>.  If non-<em>NULL</em>, the name must
outlive the capsule.  If the previous <em>name</em> stored in the capsule was not
<em>NULL</em>, no attempt is made to free it.</p>
<p>Return 0 on success.  Return nonzero and set an exception on failure.</p>
</dd></dl>

<dl class="function">
<dt id="PyCapsule_SetPointer">
int <tt class="descname">PyCapsule_SetPointer</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*capsule</em>, void<em>&nbsp;*pointer</em><big>)</big><a class="headerlink" href="#PyCapsule_SetPointer" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the void pointer inside <em>capsule</em> to <em>pointer</em>.  The pointer may not be
<em>NULL</em>.</p>
<p>Return 0 on success.  Return nonzero and set an exception on failure.</p>
</dd></dl>

</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h4>Previous topic</h4>
  <p class="topless"><a href="weakref.html"
                        title="previous chapter">Weak Reference Objects</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="cobject.html"
                        title="next chapter">CObjects</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
  <li><a href="../bugs.html">Report a Bug</a></li>
  <li><a href="../_sources/c-api/capsule.txt"
         rel="nofollow">Show Source</a></li>
</ul>

<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="cobject.html" title="CObjects"
             >next</a> |</li>
        <li class="right" >
          <a href="weakref.html" title="Weak Reference Objects"
             >previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="http://www.python.org/">Python</a> &raquo;</li>
        <li>
          <a href="../index.html">Python 2.7.5 documentation</a> &raquo;
        </li>

          <li><a href="index.html" >Python/C API Reference Manual</a> &raquo;</li>
          <li><a href="concrete.html" >Concrete Objects Layer</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
    &copy; <a href="../copyright.html">Copyright</a> 1990-2019, Python Software Foundation.
    <br />
    The Python Software Foundation is a non-profit corporation.
    <a href="http://www.python.org/psf/donations/">Please donate.</a>
    <br />
    Last updated on Jul 03, 2019.
    <a href="../bugs.html">Found a bug</a>?
    <br />
    Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
    </div>

  </body>
</html>

Filemanager

Name Type Size Permission Actions
abstract.html File 7.09 KB 0644
allocation.html File 16.94 KB 0644
arg.html File 55.63 KB 0644
bool.html File 9.24 KB 0644
buffer.html File 43.94 KB 0644
bytearray.html File 13.03 KB 0644
capsule.html File 19.04 KB 0644
cell.html File 10.36 KB 0644
class.html File 10.48 KB 0644
cobject.html File 11.06 KB 0644
code.html File 10.79 KB 0644
codec.html File 18.94 KB 0644
complex.html File 19.01 KB 0644
concrete.html File 15.16 KB 0644
conversion.html File 20.98 KB 0644
datetime.html File 23.48 KB 0644
descriptor.html File 10.97 KB 0644
dict.html File 29.9 KB 0644
exceptions.html File 75.95 KB 0644
file.html File 21.85 KB 0644
float.html File 15.85 KB 0644
function.html File 13.16 KB 0644
gcsupport.html File 20.25 KB 0644
gen.html File 7.92 KB 0644
import.html File 32.45 KB 0644
index.html File 12.55 KB 0644
init.html File 96.34 KB 0644
int.html File 18.31 KB 0644
intro.html File 62.21 KB 0644
iter.html File 9.16 KB 0644
iterator.html File 10.9 KB 0644
list.html File 22.27 KB 0644
long.html File 31.93 KB 0644
mapping.html File 14.41 KB 0644
marshal.html File 14.77 KB 0644
memory.html File 23.17 KB 0644
method.html File 12.47 KB 0644
module.html File 15.33 KB 0644
none.html File 7.39 KB 0644
number.html File 43.95 KB 0644
objbuffer.html File 11.26 KB 0644
object.html File 51.97 KB 0644
objimpl.html File 6.9 KB 0644
refcounting.html File 11.86 KB 0644
reflection.html File 9.82 KB 0644
sequence.html File 28.3 KB 0644
set.html File 28.22 KB 0644
slice.html File 11.19 KB 0644
string.html File 33.52 KB 0644
structures.html File 30.79 KB 0644
sys.html File 19.18 KB 0644
tuple.html File 19.49 KB 0644
type.html File 12.86 KB 0644
typeobj.html File 150.06 KB 0644
unicode.html File 105.59 KB 0644
utilities.html File 7.23 KB 0644
veryhigh.html File 40.2 KB 0644
weakref.html File 12.48 KB 0644