1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Chapter 3. Configuration</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"> 8<link rel="up" href="index.html" title="Boost.Python"> 9<link rel="prev" href="building/notes_for_mingw_and_cygwin_with_.html" title="Notes for MinGW (and Cygwin with -mno-cygwin) GCC Users"> 10<link rel="next" href="support.html" title="Chapter 4. Support Resources"> 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="building/notes_for_mingw_and_cygwin_with_.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.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="support.html"><img src="images/next.png" alt="Next"></a> 17</div> 18<div class="chapter"> 19<div class="titlepage"><div> 20<div><h1 class="title"> 21<a name="configuration"></a>Chapter 3. Configuration</h1></div> 22<div><div class="authorgroup"><div class="author"><h3 class="author"> 23<span class="firstname">David</span> <span class="surname">Abrahams</span> 24</h3></div></div></div> 25<div><p class="copyright">Copyright © 2002-2015 David Abrahams, Stefan Seefeld</p></div> 26</div></div> 27<div class="toc"><dl class="toc"> 28<dt><span class="section"><a href="configuration.html#configuration.configuration">Configuration</a></span></dt> 29<dd><dl> 30<dt><span class="section"><a href="configuration.html#configuration.configuration.introduction">Introduction</a></span></dt> 31<dt><span class="section"><a href="configuration.html#configuration.configuration.application_defined_macros">Application 32 Defined Macros</a></span></dt> 33<dt><span class="section"><a href="configuration.html#configuration.configuration.library_defined_defined_macros">Library 34 Defined Defined Macros</a></span></dt> 35</dl></dd> 36</dl></div> 37<div class="section"> 38<div class="titlepage"><div><div><h3 class="title"> 39<a name="configuration.configuration"></a><a class="link" href="configuration.html#configuration.configuration" title="Configuration">Configuration</a> 40</h3></div></div></div> 41<div class="toc"><dl class="toc"> 42<dt><span class="section"><a href="configuration.html#configuration.configuration.introduction">Introduction</a></span></dt> 43<dt><span class="section"><a href="configuration.html#configuration.configuration.application_defined_macros">Application 44 Defined Macros</a></span></dt> 45<dt><span class="section"><a href="configuration.html#configuration.configuration.library_defined_defined_macros">Library 46 Defined Defined Macros</a></span></dt> 47</dl></div> 48<div class="section"> 49<div class="titlepage"><div><div><h4 class="title"> 50<a name="configuration.configuration.introduction"></a><a class="link" href="configuration.html#configuration.configuration.introduction" title="Introduction">Introduction</a> 51</h4></div></div></div> 52<p> 53 <span class="bold"><strong>Boost.Python</strong></span> uses several configuration 54 macros in <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, as well as configuration macros meant 55 to be supplied by the application. These macros are documented here. 56 </p> 57</div> 58<div class="section"> 59<div class="titlepage"><div><div><h4 class="title"> 60<a name="configuration.configuration.application_defined_macros"></a><a class="link" href="configuration.html#configuration.configuration.application_defined_macros" title="Application Defined Macros">Application 61 Defined Macros</a> 62</h4></div></div></div> 63<p> 64 These are the macros that may be defined by an application using Boost.Python. 65 Note that if you extend a strict interpretation of the C++ standard to 66 cover dynamic libraries, using different values of these macros when compiling 67 different libraries (including extension modules and the Boost.Python library 68 itself) is a violation of the <a class="link" href="glossary.html#odr">ODR</a>. However, 69 we know of no C++ implementations on which this particular violation is 70 detectable or causes any problems. 71 </p> 72<div class="informaltable"><table class="table"> 73<colgroup> 74<col> 75<col> 76<col> 77</colgroup> 78<thead><tr> 79<th> 80 <p> 81 Macro 82 </p> 83 </th> 84<th> 85 <p> 86 Default 87 </p> 88 </th> 89<th> 90 <p> 91 Meaning 92 </p> 93 </th> 94</tr></thead> 95<tbody> 96<tr> 97<td> 98 <p> 99 BOOST_PYTHON_MAX_ARITY 100 </p> 101 </td> 102<td> 103 <p> 104 15 105 </p> 106 </td> 107<td> 108 <p> 109 The maximum arity of any function, member function, or constructor 110 to be wrapped, invocation of a Boost.Python function wich is 111 specified as taking arguments x1, x2,...Xn. This includes, in 112 particular, callback mechanisms such as object::operator()(...) 113 or call_method<R>(... ). 114 </p> 115 </td> 116</tr> 117<tr> 118<td> 119 <p> 120 BOOST_PYTHON_MAX_BASES 121 </p> 122 </td> 123<td> 124 <p> 125 10 126 </p> 127 </td> 128<td> 129 <p> 130 The maximum number of template arguments to the <code class="computeroutput"><span class="identifier">bases</span><span class="special"><...></span></code> 131 class template, which is used to specify the bases of a wrapped 132 C++ class.. 133 </p> 134 </td> 135</tr> 136<tr> 137<td> 138 <p> 139 BOOST_PYTHON_STATIC_MODULE 140 </p> 141 </td> 142<td> 143 <p> 144 <span class="emphasis"><em>not defined</em></span> 145 </p> 146 </td> 147<td> 148 <p> 149 If defined, prevents your module initialization function from 150 being treated as an exported symbol on platforms which support 151 that distinction in-code 152 </p> 153 </td> 154</tr> 155<tr> 156<td> 157 <p> 158 BOOST_PYTHON_ENABLE_CDECL 159 </p> 160 </td> 161<td> 162 <p> 163 <span class="emphasis"><em>not defined</em></span> 164 </p> 165 </td> 166<td> 167 <p> 168 If defined, allows functions using the <code class="computeroutput"><span class="identifier">__cdecl</span></code> 169 calling convention to be wrapped. 170 </p> 171 </td> 172</tr> 173<tr> 174<td> 175 <p> 176 BOOST_PYTHON_ENABLE_STDCALL 177 </p> 178 </td> 179<td> 180 <p> 181 <span class="emphasis"><em>not defined</em></span> 182 </p> 183 </td> 184<td> 185 <p> 186 If defined, allows functions using the <code class="computeroutput"><span class="identifier">__stdcall</span></code> 187 calling convention to be wrapped. 188 </p> 189 </td> 190</tr> 191<tr> 192<td> 193 <p> 194 BOOST_PYTHON_ENABLE_FASTCALL 195 </p> 196 </td> 197<td> 198 <p> 199 <span class="emphasis"><em>not defined</em></span> 200 </p> 201 </td> 202<td> 203 <p> 204 If defined, allows functions using the <code class="computeroutput"><span class="identifier">__fastcall</span></code> 205 calling convention to be wrapped. 206 </p> 207 </td> 208</tr> 209</tbody> 210</table></div> 211</div> 212<div class="section"> 213<div class="titlepage"><div><div><h4 class="title"> 214<a name="configuration.configuration.library_defined_defined_macros"></a><a class="link" href="configuration.html#configuration.configuration.library_defined_defined_macros" title="Library Defined Defined Macros">Library 215 Defined Defined Macros</a> 216</h4></div></div></div> 217<p> 218 These macros are defined by <span class="bold"><strong>Boost.Python</strong></span> 219 and are implementation details of interest only to implementors and those 220 porting to new platforms. 221 </p> 222<div class="informaltable"><table class="table"> 223<colgroup> 224<col> 225<col> 226<col> 227</colgroup> 228<thead><tr> 229<th> 230 <p> 231 Macro 232 </p> 233 </th> 234<th> 235 <p> 236 Default 237 </p> 238 </th> 239<th> 240 <p> 241 Meaning 242 </p> 243 </th> 244</tr></thead> 245<tbody> 246<tr> 247<td> 248 <p> 249 BOOST_PYTHON_TYPE_ID_NAME 250 </p> 251 </td> 252<td> 253 <p> 254 <span class="emphasis"><em>not defined</em></span> 255 </p> 256 </td> 257<td> 258 <p> 259 If defined, this indicates that the type_info comparison across 260 shared library boundaries does not work on this platform. In 261 other words, if shared-lib-1 passes <code class="computeroutput"><span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code> to a function in shared-lib-2 262 which compares it to <code class="computeroutput"><span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code>, that comparison may return 263 <code class="computeroutput"><span class="keyword">false</span></code>. If this macro 264 is #defined, Boost.Python uses and compares <code class="computeroutput"><span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span></code> instead of using and comparing 265 the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">type_info</span></code> objects directly. 266 </p> 267 </td> 268</tr> 269<tr> 270<td> 271 <p> 272 BOOST_PYTHON_NO_PY_SIGNATURES 273 </p> 274 </td> 275<td> 276 <p> 277 <span class="emphasis"><em>not defined</em></span> 278 </p> 279 </td> 280<td> 281 <p> 282 If defined for a module no pythonic signatures are generated 283 for the docstrings of the module functions, and no python type 284 is associated with any of the converters registered by the module. 285 This also reduces the binary size of the module by about 14% 286 (gcc compiled). If defined for the boost_python runtime library, 287 the default for the <code class="computeroutput"><span class="identifier">docstring_options</span><span class="special">.</span><span class="identifier">enable_py_signatures</span><span class="special">()</span></code> is set to <code class="computeroutput"><span class="keyword">false</span></code>. 288 </p> 289 </td> 290</tr> 291<tr> 292<td> 293 <p> 294 BOOST_PYTHON_SUPPORTS_PY_SIGNATURES 295 </p> 296 </td> 297<td> 298 <p> 299 <span class="emphasis"><em>defined</em></span> if <code class="computeroutput"><span class="identifier">BOOST_PYTHON_NO_PY_SIGNATURES</span></code> 300 is <span class="emphasis"><em>undefined</em></span> 301 </p> 302 </td> 303<td> 304 <p> 305 This macro is defined to enable a smooth transition from older 306 Boost.Python versions which do not support pythonic signatures. 307 For example usage see here. 308 </p> 309 </td> 310</tr> 311<tr> 312<td> 313 <p> 314 BOOST_PYTHON_PY_SIGNATURES_PROPER_INIT_SELF_TYPE 315 </p> 316 </td> 317<td> 318 <p> 319 <span class="emphasis"><em>not defined</em></span> 320 </p> 321 </td> 322<td> 323 <p> 324 If defined the python type of <code class="computeroutput"><span class="identifier">__init__</span></code> 325 method "self" parameters is properly generated, otherwise 326 object is used. It is undefined by default because it increases 327 the binary size of the module by about 14% (gcc compiled). 328 </p> 329 </td> 330</tr> 331</tbody> 332</table></div> 333</div> 334</div> 335</div> 336<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 337<td align="left"></td> 338<td align="right"><div class="copyright-footer">Copyright © 2002-2015 David 339 Abrahams, Stefan Seefeld<p> 340 Distributed under the Boost Software License, Version 1.0. (See accompanying 341 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>) 342 </p> 343</div></td> 344</tr></table> 345<hr> 346<div class="spirit-nav"> 347<a accesskey="p" href="building/notes_for_mingw_and_cygwin_with_.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.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="support.html"><img src="images/next.png" alt="Next"></a> 348</div> 349</body> 350</html> 351