File: configuration.html

package info (click to toggle)
boost1.62 1.62.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 686,420 kB
  • sloc: cpp: 2,609,004; xml: 972,558; ansic: 53,674; python: 32,437; sh: 8,829; asm: 3,071; cs: 2,121; makefile: 964; perl: 859; yacc: 472; php: 132; ruby: 94; f90: 55; sql: 13; csh: 6
file content (169 lines) | stat: -rw-r--r-- 6,616 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
  <meta http-equiv="Content-Language" content="en-us">
  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
  <meta name="GENERATOR" content="Microsoft FrontPage 6.0">
  <meta name="ProgId" content="FrontPage.Editor.Document">
  <link rel="stylesheet" type="text/css" href="../../../boost.css">

  <title>The Boost Statechart Library - Configuration</title>
</head>

<body link="#0000FF" vlink="#800080">
  <table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
  "header">
    <tr>
      <td valign="top" width="300">
        <h3><a href="../../../index.htm"><img alt="C++ Boost" src=
        "../../../boost.png" border="0" width="277" height="86"></a></h3>
      </td>

      <td valign="top">
        <h1 align="center">The Boost Statechart Library</h1>

        <h2 align="center">Configuration</h2>
      </td>
    </tr>
  </table>
  <hr>

  <dl class="page-index">
    <dt><a href="#GeneralConfiguration">General configuration</a></dt>

    <dd><a href="#Introduction">Introduction</a></dd>

    <dd><a href="#DebugModeCompilationOptions">Debug mode compilation
    options</a></dd>

    <dd><a href="#ReleaseModeCompilationOptions">Release mode compilation
    options</a></dd>

    <dd><a href="#ApplicationDefinedMacros">Application Defined
    Macros</a></dd>
  </dl>

  <h1><a id="GeneralConfiguration" name="GeneralConfiguration">General
  configuration</a></h1>

  <h2><a id="Introduction" name="Introduction">Introduction</a></h2>

  <p>The library uses several configuration macros in <a href=
  "../../../libs/config/config.htm">&lt;boost/config.hpp&gt;</a>, as well as
  two configuration macros meant to be supplied by the application. Moreover,
  two commonly available compiler options also have an impact on the
  available features.</p>

  <h2><a id="DebugModeCompilationOptions" name=
  "DebugModeCompilationOptions">Debug mode compilation options</a></h2>

  <ul>
    <li>C++ RTTI must be turned on (used by various asserts)</li>

    <li>C++ exception handling can be turned on or off. When turned off,
    obviously the library's <a href="tutorial.html#ExceptionHandling">error
    handling support</a> is no longer available</li>
  </ul>

  <h2><a id="ReleaseModeCompilationOptions" name=
  "ReleaseModeCompilationOptions">Release mode compilation options</a></h2>

  <ul>
    <li>C++ RTTI can be turned on or off. When turned off, the use of
    <code><a href="reference.html#state_cast">state_cast&lt;&gt;()</a></code>
    leads to a compile time error (<code><a href=
    "reference.html#state_downcast">state_downcast&lt;&gt;()</a></code> is
    still available). Moreover, <code>BOOST_STATECHART_USE_NATIVE_RTTI</code>
    must not be defined simultaneously</li>

    <li>C++ exception handling can be turned on or off. When turned off,
    obviously the library's <a href="tutorial.html#ExceptionHandling">error
    handling support</a> is no longer available</li>
  </ul>

  <h2><a id="ApplicationDefinedMacros" name=
  "ApplicationDefinedMacros">Application Defined Macros</a></h2>

  <p>The following macros may be defined by an application using the
  library:</p>

  <table summary="application defined macros" width="100%" cellpadding="2"
  border="3">
    <tr>
      <td width="226"><b>Macro</b></td>

      <td width="893"><b>Meaning</b></td>
    </tr>

    <tr>
      <td width="226"><code>BOOST_STATECHART_USE_NATIVE_RTTI</code></td>

      <td width="893">
        When defined, the library no longer uses its own speed-optimized RTTI
        implementation. Instead, native C++ RTTI is employed (see <a href=
        "performance.html#RttiCustomization">RTTI customization</a> in the
        performance document for more information). This has the following
        effects:

        <ul>
          <li><code>state_machine::state_base_type</code> becomes a
          polymorphic type. That is, when <code>typeid</code> is applied to a
          <code>state_machine::state_base_type</code> reference, the result
          refers to a <code>type_info</code> object representing the the type
          of the most derived state type</li>

          <li><a href="tutorial.html#CustomStateTypeInformation">Custom state
          type information</a> is no longer available</li>

          <li>All states need to store one pointer less, leading to a
          best-case state machine memory footprint reduction of about
          15%</li>

          <li>Under most circumstances, dispatch speed degrades. This is
          because native C++ RTTI values are retrieved through an additional
          indirection on almost all platforms. See <a href=
          "performance.html#SpeedVersusScalabilityTradeoffs">Speed versus
          scalability tradeoffs</a> in the performance document for
          timings</li>
        </ul>
      </td>
    </tr>

    <tr>
      <td width="226">
      <code>BOOST_STATECHART_RELAX_TRANSITION_CONTEXT</code></td>

      <td width="893">When defined, the sequence of actions that are called
      during a transition is relaxed. That is, its is no longer necessary
      that all states up to the innermost common context are exited before
      the transition action is called (as mandated by the UML standard).
      Instead, the transition action can be a member of either the transition
      source or any direct or indirect outer context and is called as soon as
      all possibly active inner states have been exited. Then all remaining
      active states up to the innermost common context are exited before
      entering all states down to the transition destination</td>
    </tr>
  </table>

  <p>Both macros need to be consistently defined or undefined for all
  translation units that are later linked into the same executable. Not doing
  so will inevitably lead to ODR violations. Depending on compiler and linker
  technology such violations may or may not manifest themselves in link-time
  errors.</p>

  <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
  "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
  height="31" width="88"></a></p>

  <p>Revised 05 January, 2008</p>

  <p><i>Copyright &copy; 2003-2008 <a href="contact.html">Andreas Huber
  D&ouml;nni</a></i></p>

  <p><i>Distributed under the Boost Software License, Version 1.0. (See
  accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
  copy at <a href=
  "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
</body>
</html>