Sophie

Sophie

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

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 Linux/x86 (vers 1st September 2004), see www.w3.org">
  <meta http-equiv="Content-Type" content=
  "text/html; charset=us-ascii">
  <link rel="stylesheet" type="text/css" href="../boost.css">

  <title>Boost.Python -
  &lt;boost/python/docstring_options.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/docstring_options.hpp&gt;</h2>
      </td>
    </tr>
  </table>
  <hr>

  <h2>Contents</h2>

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

    <dt><a href="#classes">Classes</a></dt>

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

        <dd>
          <dl class="page-index">
            <dt><a href="#docstring_options-spec-synopsis">Class
            <code>docstring_options</code> synopsis</a></dt>

            <dt><a href="#docstring_options-spec-ctors">Class
            <code>docstring_options</code> constructors</a></dt>

            <dt><a href="#docstring_options-spec-dtors">Class
            <code>docstring_options</code> destructors</a></dt>

            <dt><a href="#docstring_options-spec-modifiers">Class
            <code>docstring_options</code> modifiers</a></dt>
          </dl>
        </dd>
      </dl>
    </dd>

    <dt><a href="#examples">Examples</a></dt>
  </dl>
  <hr>

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

  <p>Boost.Python supports user-defined docstrings with automatic
  appending of C++ signatures. These features are enabled by
  default. The <code>class docstring_options</code> is available to
  selectively suppress the user-defined docstrings, signatures, or
  both.</p>

  <h2><a name="classes" id="classes"></a>Classes</h2>

  <h3><a name="docstring_options-spec" id=
  "docstring_options-spec"></a>Class
  <code>docstring_options</code></h3>

  <p>Controls the appearance of docstrings of wrapped functions and
  member functions for the life-time of the instance. The instances
  are noncopyable to eliminate the possibility of surprising side
  effects.</p>

  <h4><a name="docstring_options-spec-synopsis" id=
  "docstring_options-spec-synopsis"></a>Class
  <code>docstring_options</code> synopsis</h4>
  <pre>
namespace boost { namespace python {

    class docstring_options : boost::noncopyable
    {
      public:
          docstring_options(bool show_all=true);

          docstring_options(bool show_user_defined, bool show_signatures);

          docstring_options(bool show_user_defined, bool show_py_signatures, bool show_cpp_signatures);

          ~docstring_options();

          void
          disable_user_defined();

          void
          enable_user_defined();

          void
          disable_signatures();

          void
          enable_signatures();

          void
          disable_py_signatures();

          void
          enable_py_signatures();

          void
          disable_cpp_signatures();

          void
          enable_cpp_signatures();

          void
          disable_all();

          void
          enable_all();
    };

}}
</pre>

  <h4><a name="docstring_options-spec-ctors" id=
  "docstring_options-spec-ctors"></a>Class
  <code>docstring_options</code> constructors</h4>
  <pre>
docstring_options(bool show_all=true);
</pre>

  <dl class="function-semantics">
    <dt><b>Effects:</b> Constructs a <code>docstring_options</code>
    object which controls the appearance of function and
    member-function docstrings defined in the code that follows. If
    <code>show_all</code> is <code>true</code>, both the
    user-defined docstrings and the automatically generated Python and C++
    signatures are shown. If <code>show_all</code> is
    <code>false</code> the <code>__doc__</code> attributes are
    <code>None</code>.</dt>
  </dl>
  <pre>
docstring_options(bool show_user_defined, bool show_signatures);
</pre>

  <dl class="function-semantics">
    <dt><b>Effects:</b> Constructs a <code>docstring_options</code>
    object which controls the appearance of function and
    member-function docstrings defined in the code that follows.
    Iff <code>show_user_defined</code> is <code>true</code>, the
    user-defined docstrings are shown. Iff
    <code>show_signatures</code> is <code>true</code>, Python and C++
    signatures are automatically added. If both
    <code>show_user_defined</code> and <code>show_signatures</code>
    are <code>false</code>, the <code>__doc__</code> attributes are
    <code>None</code>.</dt>
  </dl>
  <pre>
docstring_options(bool show_user_defined, bool show_py_signatures, bool show_cpp_signatures);
</pre>

  <dl class="function-semantics">
    <dt><b>Effects:</b> Constructs a <code>docstring_options</code>
    object which controls the appearance of function and
    member-function docstrings defined in the code that follows.
    Iff <code>show_user_defined</code> is <code>true</code>, the
    user-defined docstrings are shown. Iff
    <code>show_py_signatures</code> is <code>true</code>, Python 
    signatures are automatically added. Iff 
    <code>show_cpp_signatures</code> is <code>true</code>, C++ 
    signatures are automatically added. If all parameters are
    <code>false</code>, the <code>__doc__</code> attributes are
    <code>None</code>.</dt>
  </dl>

  <h4><a name="docstring_options-spec-dtors" id=
  "docstring_options-spec-dtors"></a>Class
  <code>docstring_options</code> destructors</h4>
  <pre>
~docstring_options();
</pre>

  <dl class="function-semantics">
    <dt><b>Effects:</b> Restores the previous state of the
    docstring options. In particular, if
    <code>docstring_options</code> instances are in nested C++
    scopes the settings effective in the enclosing scope are
    restored. If the last <code>docstring_options</code> instance
    goes out of scope the default "all on" settings are
    restored.</dt>
  </dl>

  <h4><a name="docstring_options-spec-modifiers" id=
  "docstring_options-spec-modifiers"></a>Class
  <code>docstring_options</code> modifier functions</h4>
  <pre>
void disable_user_defined();
void enable_user_defined();
void disable_signatures();
void enable_signatures();
void disable_py_signatures();
void enable_py_signatures();
void disable_cpp_signatures();
void enable_cpp_signatures();
void disable_all();
void enable_all();
</pre>

  <dl class="function-semantics">
    <dt>These member functions dynamically change the appearance of
    docstrings in the code that follows. The
    <code>*_user_defined()</code> and <code>*_signatures()</code>
    member functions are provided for fine-grained control. The
    <code>*_all()</code> member functions are convenient shortcuts
    to manipulate all settings simultaneously.</dt>
  </dl>

  <h2><a name="examples" id="examples"></a>Examples</h2>

  <h4>Docstring options defined at compile time</h4>
  <pre>
#include &lt;boost/python/module.hpp&gt;
#include &lt;boost/python/def.hpp&gt;
#include &lt;boost/python/docstring_options.hpp&gt;

void foo() {}

BOOST_PYTHON_MODULE(demo)
{
    using namespace boost::python;
    docstring_options doc_options(DEMO_DOCSTRING_SHOW_ALL);
    def("foo", foo, "foo doc");
}
</pre>If compiled with <code>-DDEMO_DOCSTRING_SHOW_ALL=true</code>:
  <pre>
&gt;&gt;&gt; import demo
&gt;&gt;&gt; print demo.foo.__doc__
foo() -&gt; None : foo doc
C++ signature:
    foo(void) -&gt; void
</pre>If compiled with
<code>-DDEMO_DOCSTRING_SHOW_ALL=false</code>:
  <pre>
&gt;&gt;&gt; import demo
&gt;&gt;&gt; print demo.foo.__doc__
None
</pre>

  <h4>Selective suppressions</h4>
  <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/docstring_options.hpp&gt;

int foo1(int i) { return i; }
int foo2(long l) { return static_cast&lt;int&gt;(l); }
int foo3(float f) { return static_cast&lt;int&gt;(f); }
int foo4(double d) { return static_cast&lt;int&gt;(d); }

BOOST_PYTHON_MODULE(demo)
{
    using namespace boost::python;
    docstring_options doc_options;
    def("foo1", foo1, arg("i"), "foo1 doc");
    doc_options.disable_user_defined();
    def("foo2", foo2, arg("l"), "foo2 doc");
    doc_options.disable_signatures();
    def("foo3", foo3, arg("f"), "foo3 doc");
    doc_options.enable_user_defined();
    def("foo4", foo4, arg("d"), "foo4 doc");
    doc_options.enable_py_signatures();
    def("foo5", foo4, arg("d"), "foo5 doc");
    doc_options.disable_py_signatures();
    doc_options.enable_cpp_signatures();
    def("foo6", foo4, arg("d"), "foo6 doc");
}
</pre>Python code:
  <pre>
&gt;&gt;&gt; import demo
&gt;&gt;&gt; print demo.foo1.__doc__
foo1( (int)i) -&gt; int : foo1 doc
C++ signature:
    foo1(int i) -&gt; int
&gt;&gt;&gt; print demo.foo2.__doc__
foo2( (int)l) -&gt; int : 
C++ signature:
    foo2(long l) -&gt; int
&gt;&gt;&gt; print demo.foo3.__doc__
None
&gt;&gt;&gt; print demo.foo4.__doc__
foo4 doc
&gt;&gt;&gt; print demo.foo5.__doc__
foo5( (float)d) -&gt; int : foo5 doc
&gt;&gt;&gt; print demo.foo6.__doc__
foo6 doc
C++ signature:
    foo6(double d) -&gt; int
</pre>

  <h4>Wrapping from multiple C++ scopes</h4>
  <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/docstring_options.hpp&gt;

int foo1(int i) { return i; }
int foo2(long l) { return static_cast&lt;int&gt;(l); }

int bar1(int i) { return i; }
int bar2(long l) { return static_cast&lt;int&gt;(l); }

namespace {

    void wrap_foos()
    {
        using namespace boost::python;
        // no docstring_options here
        //   -&gt; settings from outer C++ scope are in effect
        def("foo1", foo1, arg("i"), "foo1 doc");
        def("foo2", foo2, arg("l"), "foo2 doc");
    }

    void wrap_bars()
    {
        using namespace boost::python;
        bool show_user_defined = true;
        bool show_signatures = false;
        docstring_options doc_options(show_user_defined, show_signatures);
        def("bar1", bar1, arg("i"), "bar1 doc");
        def("bar2", bar2, arg("l"), "bar2 doc");
    }
}

BOOST_PYTHON_MODULE(demo)
{
    boost::python::docstring_options doc_options(false);
    wrap_foos();
    wrap_bars();
}
</pre>Python code:
  <pre>
&gt;&gt;&gt; import demo
&gt;&gt;&gt; print demo.foo1.__doc__
None
&gt;&gt;&gt; print demo.foo2.__doc__
None
&gt;&gt;&gt; print demo.bar1.__doc__
bar1 doc
&gt;&gt;&gt; print demo.bar2.__doc__
bar2 doc
</pre>

  <h4>See also: <code>boost/libs/python/test/docstring.cpp</code>
  and <code>docstring.py</code></h4>

  <p>Revised 
  <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
   16 January, 2006 
  <!--webbot bot="Timestamp" endspan i-checksum="39359" --></p>

  <p><i>&copy; Copyright <a href=
  "http://www.boost.org/people/ralf_w_grosse_kunstleve.htm">Ralf W.
  Grosse-Kunstleve</a> 2006.</i></p>
</body>
</html>