Sophie

Sophie

distrib > Fedora > 14 > i386 > by-pkgid > 623999701586b0ea103ff2ccad7954a6 > files > 9496

boost-doc-1.44.0-1.fc14.noarch.rpm

<!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 - &lt;boost/python/def.hpp&gt;</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 &lt;boost/python/def.hpp&gt;</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 &lt;class F&gt;
void def(char const* name, F f);

template &lt;class Fn, class A1&gt;
void def(char const* name, Fn fn, A1 const&amp;);

template &lt;class Fn, class A1, class A2&gt;
void def(char const* name, Fn fn, A1 const&amp;, A2 const&amp;);

template &lt;class Fn, class A1, class A2, class A3&gt;
void def(char const* name, Fn fn, A1 const&amp;, A2 const&amp;, A3 const&amp;);
</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>&nbsp;-&nbsp;<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 &lt;boost/python/def.hpp&gt;
#include &lt;boost/python/module.hpp&gt;
#include &lt;boost/python/args.hpp&gt;

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>&copy; Copyright <a href=
    "http://www.boost.org/people/dave_abrahams.htm">Dave Abrahams</a> 2002.</i></p>
  </body>
</html>