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