| <!-- Copyright David Abrahams 2006. Distributed under the Boost --> |
| <!-- Software License, Version 1.0. (See accompanying --> |
| <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) --> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
| <link rel="stylesheet" type="text/css" href="../../../../boost.css"> |
| <title>Boost.Python - Extractor Concept</title> |
| </head> |
| <body link="#0000ff" vlink="#800080"> |
| <table border="0" cellpadding="7" cellspacing="0" width="100%" summary= |
| "header"> |
| <tr> |
| <td valign="top" width="300"> |
| <h3><a href="../../../../index.htm"><img height="86" width="277" alt="C++ Boost" src="../../../../boost.png" border="0"></a></h3> |
| </td> |
| <td valign="top"> |
| <h1 align="center"><a href="../index.html">Boost.Python</a></h1> |
| <h2 align="center">Extractor Concept</h2> |
| </td> |
| </tr> |
| </table> |
| <hr> |
| <dl class="page-index"> |
| <dt><a href="#introduction">Introduction</a></dt> |
| <dt><a href="#concept-requirements">Concept Requirements</a></dt> |
| <dl class="page-index"> |
| <dt><a href="#Extractor-concept">Extractor Concept</a></dt> |
| </dl> |
| <dt><a href="#notes">Notes</a></dt> |
| </dl> |
| |
| <h2><a name="introduction"></a>Introduction</h2> |
| |
| <p>An Extractor is a class which Boost.Python can use to extract C++ |
| objects from Python objects, and is typically used by facilities that |
| define <code>from_python</code> conversions for |
| "traditional" Python extension types. |
| |
| <h2><a name="concept-requirements"></a>Concept Requirements</h2> |
| <h3><a name="Extractor-concept"></a>Extractor Concept</h3> |
| |
| <p>In the table below, <code><b>X</b></code> denotes a model of |
| Extractor and <code><b>a</b></code> denotes an instance of a Python |
| object type. |
| |
| <table summary="Extractor expressions" border="1" cellpadding="5"> |
| |
| <tr> |
| <td><b>Expression</b></td> |
| <td><b>Type</b></td> |
| <td><b>Semantics</b></td> |
| </tr> |
| |
| <tr> |
| <td valign="top"><code>X::execute(a)</code></td> |
| <td>non-void |
| <td>Returns the C++ object being extracted. The |
| <code>execute</code> function must not be overloaded. |
| </tr> |
| |
| <tr> |
| <td valign="top"><code>&a.ob_type</code> |
| <td><code><a |
| href="http://www.python.org/doc/2.2/ext/dnt-type-methods.html">PyTypeObject</a>**</code> |
| <td>Points to the <code>ob_type</code> field of an object which is |
| layout-compatible with <code>PyObject</code> |
| </tr> |
| |
| </tr> |
| |
| </table> |
| |
| <h2><a name="notes"></a>Notes</h2> |
| |
| Informally, an Extractor's <code>execute</code> member must be a |
| non-overloaded static function whose single argument is a Python |
| object type. Acceptable Python object types include those publicly (and |
| unambiguously) derived from <code>PyObject</code>, and POD types which |
| are layout-compatible with PyObject. |
| |
| <hr> |
| <p>Revised |
| <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan --> |
| 13 November, 2002 |
| <!--webbot bot="Timestamp" endspan i-checksum="39359" --> |
| </p> |
| <p><i>© Copyright <a href="http://www.boost.org/people/dave_abrahams.htm">Dave |
| Abrahams</a> 2002. </i> |
| |
| <p>Permission to copy, use, modify, sell |
| and distribute this software is granted provided this copyright notice appears |
| in all copies. This software is provided "as is" without express or implied |
| warranty, and with no claim as to its suitability for any purpose. |
| </body> |
| </html> |