]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | [chapter Configuration |
2 | [quickbook 1.7] | |
3 | [authors [Abrahams, David]] | |
4 | [copyright 2002 - 2015 David Abrahams, Stefan Seefeld] | |
5 | [id configuration] | |
6 | ] | |
7 | ||
8 | ||
9 | [section Configuration] | |
10 | ||
11 | [section Introduction] | |
12 | [*Boost.Python] uses several configuration macros in `<boost/config.hpp>`, as well as configuration macros meant to be supplied by the application. These macros are documented here. | |
13 | ||
14 | [endsect] | |
15 | [section Application Defined Macros] | |
16 | ||
17 | These are the macros that may be defined by an application using Boost.Python. Note that if you extend a strict interpretation of the C++ standard to cover dynamic libraries, using different values of these macros when compiling different libraries (including extension modules and the Boost.Python library itself) is a violation of the [link odr ODR]. However, we know of no C++ implementations on which this particular violation is detectable or causes any problems. | |
18 | ||
19 | [table | |
20 | [[Macro][Default][Meaning]] | |
21 | [[BOOST_PYTHON_MAX_ARITY] | |
22 | [15] | |
23 | [The maximum arity of any function, member function, | |
24 | or constructor to be wrapped, invocation of a | |
25 | Boost.Python function wich is specified as taking | |
26 | arguments x1, x2,...Xn. This includes, in particular, | |
27 | callback mechanisms such as object::operator()(...) or call_method<R>(... ).]] | |
28 | [[BOOST_PYTHON_MAX_BASES][10] | |
29 | [The maximum number of template arguments to the | |
30 | `bases<...>` class template, which is used to specify | |
31 | the bases of a wrapped C++ class..]] | |
32 | [[BOOST_PYTHON_STATIC_MODULE] | |
33 | [ /not defined/ ] | |
34 | [If defined, prevents your module initialization | |
35 | function from being treated as an exported symbol | |
36 | on platforms which support that distinction in-code]] | |
37 | [[BOOST_PYTHON_ENABLE_CDECL] | |
38 | [ /not defined/ ] | |
39 | [If defined, allows functions using the `__cdecl` | |
40 | calling convention to be wrapped.]] | |
41 | [[BOOST_PYTHON_ENABLE_STDCALL] | |
42 | [ /not defined/ ] | |
43 | [If defined, allows functions using the `__stdcall` | |
44 | calling convention to be wrapped.]] | |
45 | [[BOOST_PYTHON_ENABLE_FASTCALL] | |
46 | [ /not defined/ ] | |
47 | [If defined, allows functions using the `__fastcall` | |
48 | calling convention to be wrapped.]] | |
49 | ] | |
50 | [endsect] | |
51 | [section Library Defined Defined Macros] | |
52 | These macros are defined by *Boost.Python* and are implementation details of interest only to implementors and those porting to new platforms. | |
53 | [table | |
54 | [[Macro][Default][Meaning]] | |
55 | [[BOOST_PYTHON_TYPE_ID_NAME][ /not defined/ ] | |
56 | [If defined, this indicates that the type_info comparison across | |
57 | shared library boundaries does not work on this platform. | |
58 | In other words, if shared-lib-1 passes `typeid(T)` to a function | |
59 | in shared-lib-2 which compares it to `typeid(T)`, that comparison | |
60 | may return `false`. If this macro is #defined, Boost.Python uses | |
61 | and compares `typeid(T).name()` instead of using and comparing | |
62 | the `std::type_info` objects directly.]] | |
63 | [[BOOST_PYTHON_NO_PY_SIGNATURES][ /not defined/ ] | |
64 | [If defined for a module no pythonic signatures are generated for | |
65 | the docstrings of the module functions, and no python type is | |
66 | associated with any of the converters registered by the module. | |
67 | This also reduces the binary size of the module by about 14% | |
68 | (gcc compiled). | |
69 | If defined for the boost_python runtime library, the default for | |
70 | the `docstring_options.enable_py_signatures()` is set to `false`.]] | |
71 | [[BOOST_PYTHON_SUPPORTS_PY_SIGNATURES] | |
72 | [ /defined/ if `BOOST_PYTHON_NO_PY_SIGNATURES` is /undefined/ ] | |
73 | [This macro is defined to enable a smooth transition from older | |
74 | Boost.Python versions which do not support pythonic signatures. | |
75 | For example usage see here.]] | |
76 | [[BOOST_PYTHON_PY_SIGNATURES_PROPER_INIT_SELF_TYPE][ /not defined/ ] | |
77 | [If defined the python type of `__init__` method "self" parameters | |
78 | is properly generated, otherwise object is used. It is undefined by | |
79 | default because it increases the binary size of the module by about | |
80 | 14% (gcc compiled).]] | |
81 | ] | |
82 | [endsect] | |
83 | [endsect] |