Sophie

Sophie

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

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 Windows (vers 1st August 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/overloads.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/overloads.hpp&gt;</h2>
        </td>
      </tr>
    </table>
    <hr>

    <h2>Contents</h2>

    <dl class="page-index">
      <dt><a href="#introduction">Introduction</a></dt>

      <dt><a href=
      "#overload-dispatch-expression"><i>overload-dispatch-expressions</i></a></dt>

      <dt><a href= "#OverloadDispatcher-concept">OverloadDispatcher</a> concept</dt>

      <dt><a href="#macros">Macros</a></dt>

      <dd>
        <dl class="page-index">
          <dt><a href=
          "#BOOST_PYTHON_FUNCTION_OVERLOADS-spec">BOOST_PYTHON_FUNCTION_OVERLOADS</a></dt>

          <dt><a href=
          "#BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS-spec">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS</a></dt>
        </dl>
      </dd>

      <dt><a href="#examples">Example(s)</a></dt>
    </dl>
    <hr>

    <h2><a name="introduction"></a>Introduction</h2>

    <p>Defines facilities for generating families of overloaded Python
    functions and extension class methods from C++ functions and
    member functions with default arguments, or from similar families
    of C++ overloads</p>

    <h2><a name=
    "overload-dispatch-expression"></a><i>overload-dispatch-expressions</i></h2>

    <p>
    An <em>overload-dispatch-expression</em> is used to describe a
    family of overloaded methods to be generated for an extension
    class. It has the following properties:

    <blockquote>
      <dl class="properties">
        <dt><b>docstring:</b> An <a href="definitions.html#ntbs">ntbs</a>
        whose value will bound to the methods' <code>__doc__</code>
        attribute</dt>

        <dt><b>keywords:</b> A <a href=
        "args.html#keyword-expression">keyword-expression</a> which
        will be used to name (a trailing subsequence of) the arguments
        to the generated methods.</dt>

        <dt><b>call policies:</b> An instance of some type which models <a href=
        "CallPolicies.html">CallPolicies</a>.</dt>

        <dt><b>minimum <a href="definitions.html#arity">arity</a></b>
        The minimum number of arguments to be accepted by a generated
        method overload.</dt>

        <dt><b>maximum <a href="definitions.html#arity">arity</a></b>
        The maximum number of arguments to be accepted by a generated
        method overload.</dt>
      </dl>
    </blockquote>

    <h2><a name="OverloadDispatcher-concept"></a>OverloadDispatcher Concept</h2>

    An OverloadDispatcher <code>X</code> is a class which has a
    <em>minimum arity</em> and a <em>maximum arity</em>, and for which
    the following following are valid <a
    href="#overload-dispatch-expression"><em>overload-dispatch-expression</em></a>s,
    with the same minimum and maximum arity as the OverloadDispatcher.

<pre>
X()
X(docstring)
X(docstring, keywords)
X(keywords, docstring)
X()[policies]
X(docstring)[policies]
X(docstring, keywords)[policies]
X(keywords, docstring)[policies]
</pre>

<ul>
<li>If <code>policies</code> are supplied, it must be an instance of a
type which models <a
href="CallPolicies.html#CallPolicies-concept">CallPolicies</a>, and
will be used as the result's call policies. Otherwise the result's
call policies will be an instance of <a
href="default_call_policies.html#default_call_policies-spec">default_call_policies</a>.

<li>If <code>docstring</code> is supplied it must be an <a
href="definitions.html#ntbs">ntbs</a>, and will be used as the result's docstring. Otherwise the result has an empty docstring.

<li>If <code>keywords</code> is supplied it must be the result of a <a
        href= "args.html#keyword-expression">keyword-expression</a>
        whose length is no greater than <code>X</code>'s maximum
        arity, and will be used as the result's keywords. Otherwise
        the result's keywords will be empty.
</ul>




    <h2><a name="macros"></a>Macros</h2>

    <h3><a name=
    "BOOST_PYTHON_FUNCTION_OVERLOADS-spec">BOOST_PYTHON_FUNCTION_OVERLOADS(name,&nbsp;func_id,&nbsp;min_args,&nbsp;max_args)</a></h3>
    Expands to the definition of an OverloadDispatcher called
    <code>name</code> in the current scope which can be used to
    generate the following function invocation:
<pre>
func_id(a<small><i>1</i></small>, a<small><i>2</i></small>,...a<small><i>i</i></small>);
</pre>

   for all <code>min_args</code> &lt;= <i>i</i> &lt;= <code>max_args</code>.

    <h3><a name=
    "BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS-spec">BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(name,&nbsp;member_name,&nbsp;min_args,&nbsp;max_args)</a></h3>

    Expands to the definition of an OverloadDispatcher called
    <code>name</code> in the current scope which can be used to
    generate the following function invocation:
<pre>
x.member_name(a<small><i>1</i></small>, a<small><i>2</i></small>,...a<small><i>i</i></small>);
</pre>

   for all <code>min_args</code> &lt;= <i>i</i> &lt;=
   <code>max_args</code>, where <code>x</code> is a reference to an
   object of class type.

    <h2><a name="examples"></a>Example(s)</h2>

<pre>
#include &lt;boost/python/module.hpp&gt;
#include &lt;boost/python/def.hpp&gt;
#include &lt;boost/python/args.hpp&gt;
#include &lt;boost/python/tuple.hpp&gt;
#include &lt;boost/python/class.hpp&gt;
#include &lt;boost/python/overloads.hpp&gt;
#include &lt;boost/python/return_internal_reference.hpp&gt;

using namespace boost::python;

tuple f(int x = 1, double y = 4.25, char const* z = &quot;wow&quot;)
{
    return make_tuple(x, y, z);
}

BOOST_PYTHON_FUNCTION_OVERLOADS(f_overloads, f, 0, 3)

struct Y {};
struct X
{
    Y&amp; f(int x, double y = 4.25, char const* z = &quot;wow&quot;)
    {
        return inner;
    }
    Y inner;
};

BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_member_overloads, f, 1, 3)

BOOST_PYTHON_MODULE(args_ext)
{
    def(&quot;f&quot;, f, 
        f_overloads(
            args(&quot;x&quot;, &quot;y&quot;, &quot;z&quot;), &quot;This is f's docstring&quot;
        ));

    
    class_&lt;Y&gt;(&quot;Y&quot;)
        ;
            
    class_&lt;X&gt;(&quot;X&quot;, &quot;This is X's docstring&quot;)
        .def(&quot;f1&quot;, &amp;X::f, 
                f_member_overloads(
                    args(&quot;x&quot;, &quot;y&quot;, &quot;z&quot;), &quot;f's docstring&quot;
                )[return_internal_reference&lt;&gt;()]
        )
        ;
}
</pre>

    <p>Revised 
    <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
  15 April, 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>