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"><</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">></span> 203<span class="preprocessor">#include</span> <span class="special"><</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">></span> 204<span class="preprocessor">#include</span> <span class="special"><</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">></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">>>></span> <span class="identifier">import</span> <span class="identifier">demo</span> 219<span class="special">>>></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">-></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">-></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">>>></span> <span class="identifier">import</span> <span class="identifier">demo</span> 228<span class="special">>>></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"><</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">></span> 238<span class="preprocessor">#include</span> <span class="special"><</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">></span> 239<span class="preprocessor">#include</span> <span class="special"><</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">></span> 240<span class="preprocessor">#include</span> <span class="special"><</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">></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"><</span><span class="keyword">int</span><span class="special">>(</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"><</span><span class="keyword">int</span><span class="special">>(</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"><</span><span class="keyword">int</span><span class="special">>(</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">>>></span> <span class="identifier">import</span> <span class="identifier">demo</span> 269<span class="special">>>></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">-></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">-></span> <span class="keyword">int</span> 273<span class="special">>>></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">-></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">-></span> <span class="keyword">int</span> 277<span class="special">>>></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">>>></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">>>></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">-></span> <span class="keyword">int</span> <span class="special">:</span> <span class="identifier">foo5</span> <span class="identifier">doc</span> 283<span class="special">>>></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">-></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"><</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">></span> 295<span class="preprocessor">#include</span> <span class="special"><</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">></span> 296<span class="preprocessor">#include</span> <span class="special"><</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">></span> 297<span class="preprocessor">#include</span> <span class="special"><</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">></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"><</span><span class="keyword">int</span><span class="special">>(</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"><</span><span class="keyword">int</span><span class="special">>(</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">// -> 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">>>></span> <span class="identifier">import</span> <span class="identifier">demo</span> 338<span class="special">>>></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">>>></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">>>></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">>>></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