1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
---|
2 | |
---|
3 | <html> |
---|
4 | <head> |
---|
5 | <meta http-equiv="Content-Language" content="en-us"> |
---|
6 | <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> |
---|
7 | <meta name="GENERATOR" content="Microsoft FrontPage 6.0"> |
---|
8 | <meta name="ProgId" content="FrontPage.Editor.Document"> |
---|
9 | <link rel="stylesheet" type="text/css" href="../../../boost.css"> |
---|
10 | |
---|
11 | <title>The Boost Statechart Library - Configuration</title> |
---|
12 | </head> |
---|
13 | |
---|
14 | <body link="#0000FF" vlink="#800080"> |
---|
15 | <table border="0" cellpadding="7" cellspacing="0" width="100%" summary= |
---|
16 | "header"> |
---|
17 | <tr> |
---|
18 | <td valign="top" width="300"> |
---|
19 | <h3><a href="../../../index.htm"><img alt="C++ Boost" src= |
---|
20 | "../../../boost.png" border="0" width="277" height="86"></a></h3> |
---|
21 | </td> |
---|
22 | |
---|
23 | <td valign="top"> |
---|
24 | <h1 align="center">The Boost Statechart Library</h1> |
---|
25 | |
---|
26 | <h2 align="center">Configuration</h2> |
---|
27 | </td> |
---|
28 | </tr> |
---|
29 | </table> |
---|
30 | <hr> |
---|
31 | |
---|
32 | <dl class="page-index"> |
---|
33 | <dt><a href="#GeneralConfiguration">General configuration</a></dt> |
---|
34 | |
---|
35 | <dd><a href="#Introduction">Introduction</a></dd> |
---|
36 | |
---|
37 | <dd><a href="#DebugModeCompilationOptions">Debug mode compilation |
---|
38 | options</a></dd> |
---|
39 | |
---|
40 | <dd><a href="#ReleaseModeCompilationOptions">Release mode compilation |
---|
41 | options</a></dd> |
---|
42 | |
---|
43 | <dd><a href="#ApplicationDefinedMacros">Application Defined |
---|
44 | Macros</a></dd> |
---|
45 | |
---|
46 | <dt><a href="#CompilerSpecificConfiguration">Compiler-specific |
---|
47 | configuration</a></dt> |
---|
48 | |
---|
49 | <dd><a href="#Intel70">Intel 7.0 (Win32, MS Visual Studio 6 std |
---|
50 | library)</a></dd> |
---|
51 | </dl> |
---|
52 | |
---|
53 | <h1><a id="GeneralConfiguration" name="GeneralConfiguration">General |
---|
54 | configuration</a></h1> |
---|
55 | |
---|
56 | <h2><a id="Introduction" name="Introduction">Introduction</a></h2> |
---|
57 | |
---|
58 | <p>The library uses several configuration macros in <a href= |
---|
59 | "../../../libs/config/config.htm"><boost/config.hpp></a>, as well as |
---|
60 | two configuration macros meant to be supplied by the application. Moreover, |
---|
61 | two commonly available compiler options also have an impact on the |
---|
62 | available features.</p> |
---|
63 | |
---|
64 | <h2><a id="DebugModeCompilationOptions" name= |
---|
65 | "DebugModeCompilationOptions">Debug mode compilation options</a></h2> |
---|
66 | |
---|
67 | <ul> |
---|
68 | <li>C++ RTTI must be turned on (used by various asserts)</li> |
---|
69 | |
---|
70 | <li>C++ exception handling can be turned on or off. When turned off, |
---|
71 | obviously the library's <a href="tutorial.html#ExceptionHandling">error |
---|
72 | handling support</a> is no longer available</li> |
---|
73 | </ul> |
---|
74 | |
---|
75 | <h2><a id="ReleaseModeCompilationOptions" name= |
---|
76 | "ReleaseModeCompilationOptions">Release mode compilation options</a></h2> |
---|
77 | |
---|
78 | <ul> |
---|
79 | <li>C++ RTTI can be turned on or off. When turned off, the use of |
---|
80 | <code><a href="reference.html#state_cast">state_cast<>()</a></code> |
---|
81 | leads to a compile time error (<code><a href= |
---|
82 | "reference.html#state_downcast">state_downcast<>()</a></code> is |
---|
83 | still available). Moreover, <code>BOOST_STATECHART_USE_NATIVE_RTTI</code> |
---|
84 | must not be defined simultaneously</li> |
---|
85 | |
---|
86 | <li>C++ exception handling can be turned on or off. When turned off, |
---|
87 | obviously the library's <a href="tutorial.html#ExceptionHandling">error |
---|
88 | handling support</a> is no longer available</li> |
---|
89 | </ul> |
---|
90 | |
---|
91 | <h2><a id="ApplicationDefinedMacros" name= |
---|
92 | "ApplicationDefinedMacros">Application Defined Macros</a></h2> |
---|
93 | |
---|
94 | <p>The following macros may be defined by an application using the |
---|
95 | library:</p> |
---|
96 | |
---|
97 | <table summary="application defined macros" width="100%" cellpadding="2" |
---|
98 | border="3"> |
---|
99 | <tr> |
---|
100 | <td width="226"><b>Macro</b></td> |
---|
101 | |
---|
102 | <td width="893"><b>Meaning</b></td> |
---|
103 | </tr> |
---|
104 | |
---|
105 | <tr> |
---|
106 | <td width="226"><code>BOOST_STATECHART_USE_NATIVE_RTTI</code></td> |
---|
107 | |
---|
108 | <td width="893"> |
---|
109 | When defined, the library no longer uses its own speed-optimized RTTI |
---|
110 | implementation. Instead, native C++ RTTI is employed (see <a href= |
---|
111 | "performance.html#RttiCustomization">RTTI customization</a> in the |
---|
112 | performance document for more information). This has the following |
---|
113 | effects: |
---|
114 | |
---|
115 | <ul> |
---|
116 | <li><code>state_machine::state_base_type</code> becomes a |
---|
117 | polymorphic type. That is, when <code>typeid</code> is applied to a |
---|
118 | <code>state_machine::state_base_type</code> reference, the result |
---|
119 | refers to a <code>type_info</code> object representing the the type |
---|
120 | of the most derived state type</li> |
---|
121 | |
---|
122 | <li><a href="tutorial.html#CustomStateTypeInformation">Custom state |
---|
123 | type information</a> is no longer available</li> |
---|
124 | |
---|
125 | <li>All states need to store one pointer less, leading to a |
---|
126 | best-case state machine memory footprint reduction of about |
---|
127 | 15%</li> |
---|
128 | |
---|
129 | <li>Under most circumstances, dispatch speed degrades. This is |
---|
130 | because native C++ RTTI values are retrieved through an additional |
---|
131 | indirection on almost all platforms. See <a href= |
---|
132 | "performance.html#SpeedVersusScalabilityTradeoffs">Speed versus |
---|
133 | scalability tradeoffs</a> in the performance document for |
---|
134 | timings</li> |
---|
135 | </ul> |
---|
136 | </td> |
---|
137 | </tr> |
---|
138 | |
---|
139 | <tr> |
---|
140 | <td width="226"> |
---|
141 | <code>BOOST_STATECHART_RELAX_TRANSITION_CONTEXT</code></td> |
---|
142 | |
---|
143 | <td width="893">When defined, the sequence of actions that are called |
---|
144 | during a transition is relaxed. That is, its is no longer necessary |
---|
145 | that all states up to the innermost common context are exited before |
---|
146 | the transition action is called (as mandated by the UML standard). |
---|
147 | Instead, the transition action can be a member of either the transition |
---|
148 | source or any direct or indirect outer context and is called as soon as |
---|
149 | all possibly active inner states have been exited. Then all remaining |
---|
150 | active states up to the innermost common context are exited before |
---|
151 | entering all states down to the transition destination</td> |
---|
152 | </tr> |
---|
153 | </table> |
---|
154 | |
---|
155 | <p>Both macros need to be consistently defined or undefined for all |
---|
156 | translation units that are later linked into the same executable. Not doing |
---|
157 | so will inevitably lead to ODR violations. Depending on compiler and linker |
---|
158 | technology such violations may or may not manifest themselves in link-time |
---|
159 | errors.</p> |
---|
160 | |
---|
161 | <h1><a id="CompilerSpecificConfiguration" name= |
---|
162 | "CompilerSpecificConfiguration">Compiler-specific configuration</a></h1> |
---|
163 | |
---|
164 | <h2><a id="Intel70" name="Intel70">Intel 7.0 (Win32, MS Visual Studio 6 std |
---|
165 | library)</a></h2> |
---|
166 | |
---|
167 | <p>By default, this compiler has argument dependent lookup disabled. ADL |
---|
168 | must be enabled to compile the library without errors. To enable ADL, |
---|
169 | <code>/Qoption,c,--arg_dep_lookup</code> must be added to the compiler |
---|
170 | command line. See <a href= |
---|
171 | "../../../boost/config/compiler/intel.hpp"><boost/config/compiler/intel.hpp></a> |
---|
172 | for more information.</p> |
---|
173 | <hr> |
---|
174 | |
---|
175 | <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src= |
---|
176 | "http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional" |
---|
177 | height="31" width="88"></a></p> |
---|
178 | |
---|
179 | <p>Revised |
---|
180 | <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->03 December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38512" --></p> |
---|
181 | |
---|
182 | <p><i>Copyright © 2003-<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y" startspan -->2006<!--webbot bot="Timestamp" endspan i-checksum="770" --> |
---|
183 | <a href="contact.html">Andreas Huber Dönni</a></i></p> |
---|
184 | |
---|
185 | <p><i>Distributed under the Boost Software License, Version 1.0. (See |
---|
186 | accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or |
---|
187 | copy at <a href= |
---|
188 | "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p> |
---|
189 | </body> |
---|
190 | </html> |
---|