<!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>Old Buffer Protocol — Python v3.2.2 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: '3.2.2', 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 v3.2.2 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 v3.2.2 documentation" href="../index.html" /> <link rel="up" title="Abstract Objects Layer" href="abstract.html" /> <link rel="next" title="Concrete Objects Layer" href="concrete.html" /> <link rel="prev" title="Buffer Protocol" href="buffer.html" /> <link rel="shortcut icon" type="image/png" href="../_static/py.png" /> </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="concrete.html" title="Concrete Objects Layer" accesskey="N">next</a> |</li> <li class="right" > <a href="buffer.html" title="Buffer Protocol" accesskey="P">previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="../index.html">Python v3.2.2 documentation</a> »</li> <li><a href="index.html" >Python/C API Reference Manual</a> »</li> <li><a href="abstract.html" accesskey="U">Abstract Objects Layer</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="old-buffer-protocol"> <h1>Old Buffer Protocol<a class="headerlink" href="#old-buffer-protocol" title="Permalink to this headline">¶</a></h1> <p class="deprecated"> <span class="versionmodified">Deprecated since version 3.0.</span></p> <p>These functions were part of the “old buffer protocol” API in Python 2. In Python 3, this protocol doesn’t exist anymore but the functions are still exposed to ease porting 2.x code. They act as a compatibility wrapper around the <a class="reference internal" href="buffer.html#bufferobjects"><em>new buffer protocol</em></a>, but they don’t give you control over the lifetime of the resources acquired when a buffer is exported.</p> <p>Therefore, it is recommended that you call <a class="reference internal" href="buffer.html#PyObject_GetBuffer" title="PyObject_GetBuffer"><tt class="xref c c-func docutils literal"><span class="pre">PyObject_GetBuffer()</span></tt></a> (or the <tt class="docutils literal"><span class="pre">y*</span></tt> or <tt class="docutils literal"><span class="pre">w*</span></tt> <a class="reference internal" href="arg.html#arg-parsing"><em>format codes</em></a> with the <a class="reference internal" href="arg.html#PyArg_ParseTuple" title="PyArg_ParseTuple"><tt class="xref c c-func docutils literal"><span class="pre">PyArg_ParseTuple()</span></tt></a> family of functions) to get a buffer view over an object, and <a class="reference internal" href="buffer.html#PyBuffer_Release" title="PyBuffer_Release"><tt class="xref c c-func docutils literal"><span class="pre">PyBuffer_Release()</span></tt></a> when the buffer view can be released.</p> <dl class="function"> <dt id="PyObject_AsCharBuffer"> int <tt class="descname">PyObject_AsCharBuffer</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em> *obj</em>, const char<em> **buffer</em>, Py_ssize_t<em> *buffer_len</em><big>)</big><a class="headerlink" href="#PyObject_AsCharBuffer" title="Permalink to this definition">¶</a></dt> <dd><p>Returns a pointer to a read-only memory location usable as character-based input. The <em>obj</em> argument must support the single-segment character buffer interface. On success, returns <tt class="docutils literal"><span class="pre">0</span></tt>, sets <em>buffer</em> to the memory location and <em>buffer_len</em> to the buffer length. Returns <tt class="docutils literal"><span class="pre">-1</span></tt> and sets a <a class="reference internal" href="../library/exceptions.html#TypeError" title="TypeError"><tt class="xref py py-exc docutils literal"><span class="pre">TypeError</span></tt></a> on error.</p> </dd></dl> <dl class="function"> <dt id="PyObject_AsReadBuffer"> int <tt class="descname">PyObject_AsReadBuffer</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em> *obj</em>, const void<em> **buffer</em>, Py_ssize_t<em> *buffer_len</em><big>)</big><a class="headerlink" href="#PyObject_AsReadBuffer" title="Permalink to this definition">¶</a></dt> <dd><p>Returns a pointer to a read-only memory location containing arbitrary data. The <em>obj</em> argument must support the single-segment readable buffer interface. On success, returns <tt class="docutils literal"><span class="pre">0</span></tt>, sets <em>buffer</em> to the memory location and <em>buffer_len</em> to the buffer length. Returns <tt class="docutils literal"><span class="pre">-1</span></tt> and sets a <a class="reference internal" href="../library/exceptions.html#TypeError" title="TypeError"><tt class="xref py py-exc docutils literal"><span class="pre">TypeError</span></tt></a> on error.</p> </dd></dl> <dl class="function"> <dt id="PyObject_CheckReadBuffer"> int <tt class="descname">PyObject_CheckReadBuffer</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em> *o</em><big>)</big><a class="headerlink" href="#PyObject_CheckReadBuffer" title="Permalink to this definition">¶</a></dt> <dd><p>Returns <tt class="docutils literal"><span class="pre">1</span></tt> if <em>o</em> supports the single-segment readable buffer interface. Otherwise returns <tt class="docutils literal"><span class="pre">0</span></tt>.</p> </dd></dl> <dl class="function"> <dt id="PyObject_AsWriteBuffer"> int <tt class="descname">PyObject_AsWriteBuffer</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em> *obj</em>, void<em> **buffer</em>, Py_ssize_t<em> *buffer_len</em><big>)</big><a class="headerlink" href="#PyObject_AsWriteBuffer" title="Permalink to this definition">¶</a></dt> <dd><p>Returns a pointer to a writable memory location. The <em>obj</em> argument must support the single-segment, character buffer interface. On success, returns <tt class="docutils literal"><span class="pre">0</span></tt>, sets <em>buffer</em> to the memory location and <em>buffer_len</em> to the buffer length. Returns <tt class="docutils literal"><span class="pre">-1</span></tt> and sets a <a class="reference internal" href="../library/exceptions.html#TypeError" title="TypeError"><tt class="xref py py-exc docutils literal"><span class="pre">TypeError</span></tt></a> on error.</p> </dd></dl> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h4>Previous topic</h4> <p class="topless"><a href="buffer.html" title="previous chapter">Buffer Protocol</a></p> <h4>Next topic</h4> <p class="topless"><a href="concrete.html" title="next chapter">Concrete Objects Layer</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/objbuffer.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" size="18" /> <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="concrete.html" title="Concrete Objects Layer" >next</a> |</li> <li class="right" > <a href="buffer.html" title="Buffer Protocol" >previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="../index.html">Python v3.2.2 documentation</a> »</li> <li><a href="index.html" >Python/C API Reference Manual</a> »</li> <li><a href="abstract.html" >Abstract Objects Layer</a> »</li> </ul> </div> <div class="footer"> © <a href="../copyright.html">Copyright</a> 1990-2011, 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 Sep 04, 2011. <a href="../bugs.html">Found a bug</a>? <br /> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7. </div> </body> </html>