| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| |
| <!-- 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 name="generator" content= |
| "HTML Tidy for Cygwin (vers 1st April 2002), see www.w3.org"> |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
| <link rel="stylesheet" type="text/css" href="../boost.css"> |
| |
| <title>Boost.Python - <boost/python/def.hpp></title> |
| </head> |
| |
| <body> |
| <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">Header <boost/python/def.hpp></h2> |
| </td> |
| </tr> |
| </table> |
| <hr> |
| |
| <h2>Contents</h2> |
| |
| <dl class="page-index"> |
| <dt><a href="#introduction">Introduction</a></dt> |
| |
| <dt><a href="#functions">Functions</a></dt> |
| |
| <dd> |
| <dl class="page-index"> |
| <dt><a href="#def-spec">def</a></dt> |
| </dl> |
| </dd> |
| |
| <dt><a href="#examples">Example</a></dt> |
| </dl> |
| <hr> |
| |
| <h2><a name="introduction"></a>Introduction</h2> |
| |
| <p><code><a href="#def-spec">def</a>()</code> is the function which can |
| be used to expose C++ functions and callable objects as Python functions |
| in the current <code><a href="scope.html">scope</a></code>.</p> |
| |
| <h2><a name="functions"></a>Functions</h2> |
| <a name="def-spec"></a>def |
| <pre> |
| template <class F> |
| void def(char const* name, F f); |
| |
| template <class Fn, class A1> |
| void def(char const* name, Fn fn, A1 const&); |
| |
| template <class Fn, class A1, class A2> |
| void def(char const* name, Fn fn, A1 const&, A2 const&); |
| |
| template <class Fn, class A1, class A2, class A3> |
| void def(char const* name, Fn fn, A1 const&, A2 const&, A3 const&); |
| </pre> |
| |
| <dl class="function-semantics"> |
| <dt><b>Requires:</b> <code>name</code> is an <a href= |
| "definitions.html#ntbs">ntbs</a> which conforms to Python's <a href= |
| "http://www.python.org/doc/current/ref/identifiers.html">identifier |
| naming rules</a>.</dt> |
| |
| <dd> |
| <ul> |
| <li>If <code>Fn</code> is [derived from] <code><a href= |
| "object.html#object-spec">object</a></code>, it will be added to |
| the current scope as a single overload. To be useful, |
| <code>fn</code> should be <a href= |
| "http://www.python.org/doc/current/lib/built-in-funcs.html#l2h-6">callable</a>.</li> |
| |
| <li> |
| If <code>a1</code> is the result of an <a href= |
| "overloads.html#overload-dispatch-expression"><em>overload-dispatch-expression</em></a>, |
| only the second form is allowed and fn must be a pointer to |
| function or pointer to member function whose <a href= |
| "definitions.html#arity">arity</a> is the same as A1's <a href= |
| "overloads.html#overload-dispatch-expression"><em>maximum |
| arity</em></a>. |
| |
| <dl> |
| <dt><b>Effects:</b> For each prefix <em>P</em> of |
| <code>Fn</code>'s sequence of argument types, beginning with |
| the one whose length is <code>A1</code>'s <a href= |
| "overloads.html#overload-dispatch-expression"><em>minimum |
| arity</em></a>, adds a |
| <code><em>name</em>(</code>...<code>)</code> function overload |
| to the <a href="scope.html">current scope</a>. Each overload |
| generated invokes <code>a1</code>'s call-expression with |
| <em>P</em>, using a copy of <code>a1</code>'s <a href= |
| "CallPolicies.html">call policies</a>. If the longest valid |
| prefix of <code>A1</code> contains <em>N</em> types and |
| <code>a1</code> holds <em>M</em> keywords, an initial sequence |
| of the keywords are used for all but the first |
| <em>N</em> - <em>M</em> arguments of each |
| overload.<br> |
| </dt> |
| </dl> |
| </li> |
| |
| <li>Otherwise, fn must be a non-null function or member function |
| pointer, and a single function overload built around fn is added to |
| the <a href="scope.html">current scope</a>. If any of |
| <code>a1</code>-<code>a3</code> are supplied, they may be selected |
| in any order from the table below.</li> |
| </ul> |
| |
| <table border="1" summary="def() optional arguments"> |
| <tr> |
| <th>Memnonic Name</th> |
| |
| <th>Requirements/Type properties</th> |
| |
| <th>Effects</th> |
| </tr> |
| |
| <tr> |
| <td>docstring</td> |
| |
| <td>Any <a href="definitions.html#ntbs">ntbs</a>.</td> |
| |
| <td>Value will be bound to the <code>__doc__</code> attribute of |
| the resulting method overload.</td> |
| </tr> |
| |
| <tr> |
| <td>policies</td> |
| |
| <td>A model of <a href="CallPolicies.html">CallPolicies</a></td> |
| |
| <td>A copy will be used as the call policies of the resulting |
| method overload.</td> |
| </tr> |
| |
| <tr> |
| <td>keywords</td> |
| |
| <td>The result of a <a href= |
| "args.html#keyword-expression"><em>keyword-expression</em></a> |
| specifying no more arguments than the <a href= |
| "definitions.html#arity">arity</a> of <code>fn</code>.</td> |
| |
| <td>A copy will be used as the call policies of the resulting |
| method overload.</td> |
| </tr> |
| </table> |
| </dd> |
| </dl> |
| |
| <h2><a name="examples"></a>Example</h2> |
| <pre> |
| #include <boost/python/def.hpp> |
| #include <boost/python/module.hpp> |
| #include <boost/python/args.hpp> |
| |
| using namespace boost::python; |
| |
| char const* foo(int x, int y) { return "foo"; } |
| |
| BOOST_PYTHON_MODULE(def_test) |
| { |
| def("foo", foo, args("x", "y"), "foo's docstring"); |
| } |
| </pre> |
| |
| <p> |
| <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan --> |
| 7 March, 2003 |
| <!--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> |
| </body> |
| </html> |
| |