• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>boost/python/docstring_options.hpp</title>
5<link rel="stylesheet" href="../../boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../index.html" title="Boost.Python Reference Manual">
8<link rel="up" href="../high_level_components.html" title="Chapter 2. High Level Components">
9<link rel="prev" href="boost_python_def_visitor_hpp.html" title="boost/python/def_visitor.hpp">
10<link rel="next" href="boost_python_enum_hpp.html" title="boost/python/enum.hpp">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="" width="" height="" src="../../images/boost.png"></td></tr></table>
14<hr>
15<div class="spirit-nav">
16<a accesskey="p" href="boost_python_def_visitor_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_level_components.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_python_enum_hpp.html"><img src="../../images/next.png" alt="Next"></a>
17</div>
18<div class="section">
19<div class="titlepage"><div><div><h2 class="title" style="clear: both">
20<a name="high_level_components.boost_python_docstring_options_h"></a><a class="link" href="boost_python_docstring_options_h.html" title="boost/python/docstring_options.hpp">boost/python/docstring_options.hpp</a>
21</h2></div></div></div>
22<div class="toc"><dl class="toc">
23<dt><span class="section"><a href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.introduction">Introduction</a></span></dt>
24<dt><span class="section"><a href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.class_docstring_options">Class
25        <code class="computeroutput"><span class="identifier">docstring_options</span></code></a></span></dt>
26<dt><span class="section"><a href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.class_dostring_options_construct">Class
27        dostring_options constructors</a></span></dt>
28<dt><span class="section"><a href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.class_docstring_options_destruct">Class
29        docstring_options destructor</a></span></dt>
30<dt><span class="section"><a href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.class_docstring_options_modifier">Class
31        <code class="computeroutput"><span class="identifier">docstring_options</span></code> modifier
32        functions</a></span></dt>
33<dt><span class="section"><a href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.example">Example</a></span></dt>
34</dl></div>
35<div class="section">
36<div class="titlepage"><div><div><h3 class="title">
37<a name="high_level_components.boost_python_docstring_options_h.introduction"></a><a class="link" href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.introduction" title="Introduction">Introduction</a>
38</h3></div></div></div>
39<p>
40          Boost.Python supports user-defined docstrings with automatic appending
41          of C++ signatures. These features are enabled by default. The class docstring_options
42          is available to selectively suppress the user-defined docstrings, signatures,
43          or both.
44        </p>
45</div>
46<div class="section">
47<div class="titlepage"><div><div><h3 class="title">
48<a name="high_level_components.boost_python_docstring_options_h.class_docstring_options"></a><a class="link" href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.class_docstring_options" title="Class docstring_options">Class
49        <code class="computeroutput"><span class="identifier">docstring_options</span></code></a>
50</h3></div></div></div>
51<p>
52          Controls the appearance of docstrings of wrapped functions and member functions
53          for the life-time of the instance. The instances are noncopyable to eliminate
54          the possibility of surprising side effects.
55        </p>
56<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span>
57
58  <span class="keyword">class</span> <span class="identifier">docstring_options</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">noncopyable</span>
59  <span class="special">{</span>
60  <span class="keyword">public</span><span class="special">:</span>
61    <span class="identifier">docstring_options</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">show_all</span><span class="special">=</span><span class="keyword">true</span><span class="special">);</span>
62    <span class="identifier">docstring_options</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">show_user_defined</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">show_signatures</span><span class="special">);</span>
63    <span class="identifier">docstring_options</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">show_user_defined</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">show_py_signatures</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">show_cpp_signatures</span><span class="special">);</span>
64    <span class="special">~</span><span class="identifier">docstring_options</span><span class="special">();</span>
65    <span class="keyword">void</span> <span class="identifier">disable_user_defined</span><span class="special">();</span>
66    <span class="keyword">void</span> <span class="identifier">enable_user_defined</span><span class="special">();</span>
67    <span class="keyword">void</span> <span class="identifier">disable_signatures</span><span class="special">();</span>
68    <span class="keyword">void</span> <span class="identifier">enable_signatures</span><span class="special">();</span>
69    <span class="keyword">void</span> <span class="identifier">disable_py_signatures</span><span class="special">();</span>
70    <span class="keyword">void</span> <span class="identifier">enable_py_signatures</span><span class="special">();</span>
71    <span class="keyword">void</span> <span class="identifier">disable_cpp_signatures</span><span class="special">();</span>
72    <span class="keyword">void</span> <span class="identifier">enable_cpp_signatures</span><span class="special">();</span>
73    <span class="keyword">void</span> <span class="identifier">disable_all</span><span class="special">();</span>
74    <span class="keyword">void</span> <span class="identifier">enable_all</span><span class="special">();</span>
75  <span class="special">};</span>
76<span class="special">}}</span>
77</pre>
78</div>
79<div class="section">
80<div class="titlepage"><div><div><h3 class="title">
81<a name="high_level_components.boost_python_docstring_options_h.class_dostring_options_construct"></a><a class="link" href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.class_dostring_options_construct" title="Class dostring_options constructors">Class
82        dostring_options constructors</a>
83</h3></div></div></div>
84<pre class="programlisting"><span class="identifier">docstring_options</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">show_all</span><span class="special">=</span><span class="keyword">true</span><span class="special">);</span>
85</pre>
86<div class="variablelist">
87<p class="title"><b></b></p>
88<dl class="variablelist">
89<dt><span class="term">Effects</span></dt>
90<dd><p>
91                Constructs a docstring_options object which controls the appearance
92                of function and member-function docstrings defined in the code that
93                follows. If show_all is true, both the user-defined docstrings and
94                the automatically generated Python and C++ signatures are shown.
95                If show_all is false the <code class="computeroutput"><span class="identifier">__doc__</span></code>
96                attributes are <code class="computeroutput"><span class="identifier">None</span></code>.
97              </p></dd>
98</dl>
99</div>
100<pre class="programlisting"><span class="identifier">docstring_options</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">show_user_defined</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">show_signatures</span><span class="special">);</span>
101</pre>
102<div class="variablelist">
103<p class="title"><b></b></p>
104<dl class="variablelist">
105<dt><span class="term">Effects</span></dt>
106<dd><p>
107                Constructs a <code class="computeroutput"><span class="identifier">docstring_options</span></code>
108                object which controls the appearance of function and member-function
109                docstrings defined in the code that follows. Iff <code class="computeroutput"><span class="identifier">show_user_defined</span></code>
110                is <code class="computeroutput"><span class="keyword">true</span></code>, the user-defined
111                docstrings are shown. Iff <code class="computeroutput"><span class="identifier">show_signatures</span></code>
112                is <code class="computeroutput"><span class="keyword">true</span></code>, Python and
113                C++ signatures are automatically added. If both <code class="computeroutput"><span class="identifier">show_user_defined</span></code>
114                and <code class="computeroutput"><span class="identifier">show_signatures</span></code>
115                are <code class="computeroutput"><span class="keyword">false</span></code>, the <code class="computeroutput"><span class="identifier">__doc__</span></code> attributes are <code class="computeroutput"><span class="identifier">None</span></code>.
116              </p></dd>
117</dl>
118</div>
119<pre class="programlisting"><span class="identifier">docstring_options</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">show_user_defined</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">show_py_signatures</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">show_cpp_signatures</span><span class="special">);</span>
120</pre>
121<div class="variablelist">
122<p class="title"><b></b></p>
123<dl class="variablelist">
124<dt><span class="term">Effects</span></dt>
125<dd><p>
126                Constructs a <code class="computeroutput"><span class="identifier">docstring_options</span></code>
127                object which controls the appearance of function and member-function
128                docstrings defined in the code that follows. Iff <code class="computeroutput"><span class="identifier">show_user_defined</span></code>
129                is <code class="computeroutput"><span class="keyword">true</span></code>, the user-defined
130                docstrings are shown. Iff <code class="computeroutput"><span class="identifier">show_py_signatures</span></code>
131                is <code class="computeroutput"><span class="keyword">true</span></code>, Python signatures
132                are automatically added. Iff <code class="computeroutput"><span class="identifier">show_cpp_signatures</span></code>
133                is true, C++ signatures are automatically added. If all parameters
134                are <code class="computeroutput"><span class="keyword">false</span></code>, the <code class="computeroutput"><span class="identifier">__doc__</span></code> attributes are <code class="computeroutput"><span class="identifier">None</span></code>.
135              </p></dd>
136</dl>
137</div>
138</div>
139<div class="section">
140<div class="titlepage"><div><div><h3 class="title">
141<a name="high_level_components.boost_python_docstring_options_h.class_docstring_options_destruct"></a><a class="link" href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.class_docstring_options_destruct" title="Class docstring_options destructor">Class
142        docstring_options destructor</a>
143</h3></div></div></div>
144<pre class="programlisting"><span class="special">~</span><span class="identifier">docstring_options</span><span class="special">();</span></pre>
145<div class="variablelist">
146<p class="title"><b></b></p>
147<dl class="variablelist">
148<dt><span class="term">Effects</span></dt>
149<dd><p>
150                Restores the previous state of the docstring options. In particular,
151                if <code class="computeroutput"><span class="identifier">docstring_options</span></code>
152                instances are in nested C++ scopes the settings effective in the
153                enclosing scope are restored. If the last <code class="computeroutput"><span class="identifier">docstring_options</span></code>
154                instance goes out of scope the default "all on" settings
155                are restored.
156              </p></dd>
157</dl>
158</div>
159</div>
160<div class="section">
161<div class="titlepage"><div><div><h3 class="title">
162<a name="high_level_components.boost_python_docstring_options_h.class_docstring_options_modifier"></a><a class="link" href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.class_docstring_options_modifier" title="Class docstring_options modifier functions">Class
163        <code class="computeroutput"><span class="identifier">docstring_options</span></code> modifier
164        functions</a>
165</h3></div></div></div>
166<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">disable_user_defined</span><span class="special">();</span>
167<span class="keyword">void</span> <span class="identifier">enable_user_defined</span><span class="special">();</span>
168<span class="keyword">void</span> <span class="identifier">disable_signatures</span><span class="special">();</span>
169<span class="keyword">void</span> <span class="identifier">enable_signatures</span><span class="special">();</span>
170<span class="keyword">void</span> <span class="identifier">disable_py_signatures</span><span class="special">();</span>
171<span class="keyword">void</span> <span class="identifier">enable_py_signatures</span><span class="special">();</span>
172<span class="keyword">void</span> <span class="identifier">disable_cpp_signatures</span><span class="special">();</span>
173<span class="keyword">void</span> <span class="identifier">enable_cpp_signatures</span><span class="special">();</span>
174<span class="keyword">void</span> <span class="identifier">disable_all</span><span class="special">();</span>
175<span class="keyword">void</span> <span class="identifier">enable_all</span><span class="special">();</span>
176</pre>
177<p>
178          These member functions dynamically change the appearance of docstrings
179          in the code that follows. The <code class="computeroutput"><span class="special">*</span><span class="identifier">_user_defined</span><span class="special">()</span></code>
180          and <code class="computeroutput"><span class="special">*</span><span class="identifier">_signatures</span><span class="special">()</span></code> member functions are provided for fine-grained
181          control. The <code class="computeroutput"><span class="special">*</span><span class="identifier">_all</span><span class="special">()</span></code> member functions are convenient shortcuts
182          to manipulate all settings simultaneously.
183        </p>
184</div>
185<div class="section">
186<div class="titlepage"><div><div><h3 class="title">
187<a name="high_level_components.boost_python_docstring_options_h.example"></a><a class="link" href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.example" title="Example">Example</a>
188</h3></div></div></div>
189<div class="toc"><dl class="toc">
190<dt><span class="section"><a href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.example.docstring_options_defined_at_com">Docstring
191          options defined at compile time</a></span></dt>
192<dt><span class="section"><a href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.example.selective_suppressions">Selective
193          suppressions</a></span></dt>
194<dt><span class="section"><a href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.example.wrapping_from_multiple_c_scopes">Wrapping
195          from multiple C++ scopes</a></span></dt>
196</dl></div>
197<div class="section">
198<div class="titlepage"><div><div><h4 class="title">
199<a name="high_level_components.boost_python_docstring_options_h.example.docstring_options_defined_at_com"></a><a class="link" href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.example.docstring_options_defined_at_com" title="Docstring options defined at compile time">Docstring
200          options defined at compile time</a>
201</h4></div></div></div>
202<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">module</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
203<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">def</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
204<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">docstring_options</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
205
206<span class="keyword">void</span> <span class="identifier">foo</span><span class="special">()</span> <span class="special">{}</span>
207
208<span class="identifier">BOOST_PYTHON_MODULE</span><span class="special">(</span><span class="identifier">demo</span><span class="special">)</span>
209<span class="special">{</span>
210    <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">;</span>
211    <span class="identifier">docstring_options</span> <span class="identifier">doc_options</span><span class="special">(</span><span class="identifier">DEMO_DOCSTRING_SHOW_ALL</span><span class="special">);</span>
212    <span class="identifier">def</span><span class="special">(</span><span class="string">"foo"</span><span class="special">,</span> <span class="identifier">foo</span><span class="special">,</span> <span class="string">"foo doc"</span><span class="special">);</span>
213<span class="special">}</span>
214</pre>
215<p>
216            If compiled with <code class="computeroutput"><span class="special">-</span><span class="identifier">DDEMO_DOCSTRING_SHOW_ALL</span><span class="special">=</span><span class="keyword">true</span></code>:
217          </p>
218<pre class="programlisting"><span class="special">&gt;&gt;&gt;</span> <span class="identifier">import</span> <span class="identifier">demo</span>
219<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo</span><span class="special">.</span><span class="identifier">__doc__</span>
220<span class="identifier">foo</span><span class="special">()</span> <span class="special">-&gt;</span> <span class="identifier">None</span> <span class="special">:</span> <span class="identifier">foo</span> <span class="identifier">doc</span>
221<span class="identifier">C</span><span class="special">++</span> <span class="identifier">signature</span><span class="special">:</span>
222    <span class="identifier">foo</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">-&gt;</span> <span class="keyword">void</span>
223</pre>
224<p>
225            If compiled with <code class="computeroutput"><span class="special">-</span><span class="identifier">DDEMO_DOCSTRING_SHOW_ALL</span><span class="special">=</span><span class="keyword">false</span></code>:
226          </p>
227<pre class="programlisting"><span class="special">&gt;&gt;&gt;</span> <span class="identifier">import</span> <span class="identifier">demo</span>
228<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo</span><span class="special">.</span><span class="identifier">__doc__</span>
229<span class="identifier">None</span>
230</pre>
231</div>
232<div class="section">
233<div class="titlepage"><div><div><h4 class="title">
234<a name="high_level_components.boost_python_docstring_options_h.example.selective_suppressions"></a><a class="link" href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.example.selective_suppressions" title="Selective suppressions">Selective
235          suppressions</a>
236</h4></div></div></div>
237<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">module</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
238<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">def</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
239<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">args</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
240<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">docstring_options</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
241
242<span class="keyword">int</span> <span class="identifier">foo1</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">i</span><span class="special">;</span> <span class="special">}</span>
243<span class="keyword">int</span> <span class="identifier">foo2</span><span class="special">(</span><span class="keyword">long</span> <span class="identifier">l</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">l</span><span class="special">);</span> <span class="special">}</span>
244<span class="keyword">int</span> <span class="identifier">foo3</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">f</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">f</span><span class="special">);</span> <span class="special">}</span>
245<span class="keyword">int</span> <span class="identifier">foo4</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">d</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">);</span> <span class="special">}</span>
246
247<span class="identifier">BOOST_PYTHON_MODULE</span><span class="special">(</span><span class="identifier">demo</span><span class="special">)</span>
248<span class="special">{</span>
249    <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">;</span>
250    <span class="identifier">docstring_options</span> <span class="identifier">doc_options</span><span class="special">;</span>
251    <span class="identifier">def</span><span class="special">(</span><span class="string">"foo1"</span><span class="special">,</span> <span class="identifier">foo1</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"i"</span><span class="special">),</span> <span class="string">"foo1 doc"</span><span class="special">);</span>
252    <span class="identifier">doc_options</span><span class="special">.</span><span class="identifier">disable_user_defined</span><span class="special">();</span>
253    <span class="identifier">def</span><span class="special">(</span><span class="string">"foo2"</span><span class="special">,</span> <span class="identifier">foo2</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"l"</span><span class="special">),</span> <span class="string">"foo2 doc"</span><span class="special">);</span>
254    <span class="identifier">doc_options</span><span class="special">.</span><span class="identifier">disable_signatures</span><span class="special">();</span>
255    <span class="identifier">def</span><span class="special">(</span><span class="string">"foo3"</span><span class="special">,</span> <span class="identifier">foo3</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"f"</span><span class="special">),</span> <span class="string">"foo3 doc"</span><span class="special">);</span>
256    <span class="identifier">doc_options</span><span class="special">.</span><span class="identifier">enable_user_defined</span><span class="special">();</span>
257    <span class="identifier">def</span><span class="special">(</span><span class="string">"foo4"</span><span class="special">,</span> <span class="identifier">foo4</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"d"</span><span class="special">),</span> <span class="string">"foo4 doc"</span><span class="special">);</span>
258    <span class="identifier">doc_options</span><span class="special">.</span><span class="identifier">enable_py_signatures</span><span class="special">();</span>
259    <span class="identifier">def</span><span class="special">(</span><span class="string">"foo5"</span><span class="special">,</span> <span class="identifier">foo4</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"d"</span><span class="special">),</span> <span class="string">"foo5 doc"</span><span class="special">);</span>
260    <span class="identifier">doc_options</span><span class="special">.</span><span class="identifier">disable_py_signatures</span><span class="special">();</span>
261    <span class="identifier">doc_options</span><span class="special">.</span><span class="identifier">enable_cpp_signatures</span><span class="special">();</span>
262    <span class="identifier">def</span><span class="special">(</span><span class="string">"foo6"</span><span class="special">,</span> <span class="identifier">foo4</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"d"</span><span class="special">),</span> <span class="string">"foo6 doc"</span><span class="special">);</span>
263<span class="special">}</span>
264</pre>
265<p>
266            Python code:
267          </p>
268<pre class="programlisting"><span class="special">&gt;&gt;&gt;</span> <span class="identifier">import</span> <span class="identifier">demo</span>
269<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo1</span><span class="special">.</span><span class="identifier">__doc__</span>
270<span class="identifier">foo1</span><span class="special">(</span> <span class="special">(</span><span class="keyword">int</span><span class="special">)</span><span class="identifier">i</span><span class="special">)</span> <span class="special">-&gt;</span> <span class="keyword">int</span> <span class="special">:</span> <span class="identifier">foo1</span> <span class="identifier">doc</span>
271<span class="identifier">C</span><span class="special">++</span> <span class="identifier">signature</span><span class="special">:</span>
272    <span class="identifier">foo1</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span><span class="special">)</span> <span class="special">-&gt;</span> <span class="keyword">int</span>
273<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo2</span><span class="special">.</span><span class="identifier">__doc__</span>
274<span class="identifier">foo2</span><span class="special">(</span> <span class="special">(</span><span class="keyword">int</span><span class="special">)</span><span class="identifier">l</span><span class="special">)</span> <span class="special">-&gt;</span> <span class="keyword">int</span> <span class="special">:</span>
275<span class="identifier">C</span><span class="special">++</span> <span class="identifier">signature</span><span class="special">:</span>
276    <span class="identifier">foo2</span><span class="special">(</span><span class="keyword">long</span> <span class="identifier">l</span><span class="special">)</span> <span class="special">-&gt;</span> <span class="keyword">int</span>
277<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo3</span><span class="special">.</span><span class="identifier">__doc__</span>
278<span class="identifier">None</span>
279<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo4</span><span class="special">.</span><span class="identifier">__doc__</span>
280<span class="identifier">foo4</span> <span class="identifier">doc</span>
281<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo5</span><span class="special">.</span><span class="identifier">__doc__</span>
282<span class="identifier">foo5</span><span class="special">(</span> <span class="special">(</span><span class="keyword">float</span><span class="special">)</span><span class="identifier">d</span><span class="special">)</span> <span class="special">-&gt;</span> <span class="keyword">int</span> <span class="special">:</span> <span class="identifier">foo5</span> <span class="identifier">doc</span>
283<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo6</span><span class="special">.</span><span class="identifier">__doc__</span>
284<span class="identifier">foo6</span> <span class="identifier">doc</span>
285<span class="identifier">C</span><span class="special">++</span> <span class="identifier">signature</span><span class="special">:</span>
286    <span class="identifier">foo6</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">d</span><span class="special">)</span> <span class="special">-&gt;</span> <span class="keyword">int</span>
287</pre>
288</div>
289<div class="section">
290<div class="titlepage"><div><div><h4 class="title">
291<a name="high_level_components.boost_python_docstring_options_h.example.wrapping_from_multiple_c_scopes"></a><a class="link" href="boost_python_docstring_options_h.html#high_level_components.boost_python_docstring_options_h.example.wrapping_from_multiple_c_scopes" title="Wrapping from multiple C++ scopes">Wrapping
292          from multiple C++ scopes</a>
293</h4></div></div></div>
294<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">module</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
295<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">def</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
296<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">args</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
297<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">docstring_options</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
298
299<span class="keyword">int</span> <span class="identifier">foo1</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">i</span><span class="special">;</span> <span class="special">}</span>
300<span class="keyword">int</span> <span class="identifier">foo2</span><span class="special">(</span><span class="keyword">long</span> <span class="identifier">l</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">l</span><span class="special">);</span> <span class="special">}</span>
301
302<span class="keyword">int</span> <span class="identifier">bar1</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">i</span><span class="special">;</span> <span class="special">}</span>
303<span class="keyword">int</span> <span class="identifier">bar2</span><span class="special">(</span><span class="keyword">long</span> <span class="identifier">l</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">l</span><span class="special">);</span> <span class="special">}</span>
304
305<span class="keyword">namespace</span> <span class="special">{</span>
306
307    <span class="keyword">void</span> <span class="identifier">wrap_foos</span><span class="special">()</span>
308    <span class="special">{</span>
309        <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">;</span>
310        <span class="comment">// no docstring_options here</span>
311        <span class="comment">//   -&gt; settings from outer C++ scope are in effect</span>
312        <span class="identifier">def</span><span class="special">(</span><span class="string">"foo1"</span><span class="special">,</span> <span class="identifier">foo1</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"i"</span><span class="special">),</span> <span class="string">"foo1 doc"</span><span class="special">);</span>
313        <span class="identifier">def</span><span class="special">(</span><span class="string">"foo2"</span><span class="special">,</span> <span class="identifier">foo2</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"l"</span><span class="special">),</span> <span class="string">"foo2 doc"</span><span class="special">);</span>
314    <span class="special">}</span>
315
316    <span class="keyword">void</span> <span class="identifier">wrap_bars</span><span class="special">()</span>
317    <span class="special">{</span>
318        <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">;</span>
319        <span class="keyword">bool</span> <span class="identifier">show_user_defined</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
320        <span class="keyword">bool</span> <span class="identifier">show_signatures</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
321        <span class="identifier">docstring_options</span> <span class="identifier">doc_options</span><span class="special">(</span><span class="identifier">show_user_defined</span><span class="special">,</span> <span class="identifier">show_signatures</span><span class="special">);</span>
322        <span class="identifier">def</span><span class="special">(</span><span class="string">"bar1"</span><span class="special">,</span> <span class="identifier">bar1</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"i"</span><span class="special">),</span> <span class="string">"bar1 doc"</span><span class="special">);</span>
323        <span class="identifier">def</span><span class="special">(</span><span class="string">"bar2"</span><span class="special">,</span> <span class="identifier">bar2</span><span class="special">,</span> <span class="identifier">arg</span><span class="special">(</span><span class="string">"l"</span><span class="special">),</span> <span class="string">"bar2 doc"</span><span class="special">);</span>
324    <span class="special">}</span>
325<span class="special">}</span>
326
327<span class="identifier">BOOST_PYTHON_MODULE</span><span class="special">(</span><span class="identifier">demo</span><span class="special">)</span>
328<span class="special">{</span>
329    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">::</span><span class="identifier">docstring_options</span> <span class="identifier">doc_options</span><span class="special">(</span><span class="keyword">false</span><span class="special">);</span>
330    <span class="identifier">wrap_foos</span><span class="special">();</span>
331    <span class="identifier">wrap_bars</span><span class="special">();</span>
332<span class="special">}</span>
333</pre>
334<p>
335            Python code:
336          </p>
337<pre class="programlisting"><span class="special">&gt;&gt;&gt;</span> <span class="identifier">import</span> <span class="identifier">demo</span>
338<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo1</span><span class="special">.</span><span class="identifier">__doc__</span>
339<span class="identifier">None</span>
340<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">foo2</span><span class="special">.</span><span class="identifier">__doc__</span>
341<span class="identifier">None</span>
342<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">bar1</span><span class="special">.</span><span class="identifier">__doc__</span>
343<span class="identifier">bar1</span> <span class="identifier">doc</span>
344<span class="special">&gt;&gt;&gt;</span> <span class="identifier">print</span> <span class="identifier">demo</span><span class="special">.</span><span class="identifier">bar2</span><span class="special">.</span><span class="identifier">__doc__</span>
345<span class="identifier">bar2</span> <span class="identifier">doc</span>
346</pre>
347</div>
348</div>
349</div>
350<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
351<td align="left"></td>
352<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2015 David Abrahams, Stefan Seefeld<p>
353        Distributed under the Boost Software License, Version 1.0. (See accompanying
354        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>
355      </p>
356</div></td>
357</tr></table>
358<hr>
359<div class="spirit-nav">
360<a accesskey="p" href="boost_python_def_visitor_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_level_components.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_python_enum_hpp.html"><img src="../../images/next.png" alt="Next"></a>
361</div>
362</body>
363</html>
364