]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/statechart/doc/uml_mapping.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / statechart / doc / uml_mapping.html
CommitLineData
7c673cae
FG
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 name="GENERATOR" content="Microsoft FrontPage 6.0">
7 <meta name="ProgId" content="FrontPage.Editor.Document">
8 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
9 <link rel="stylesheet" type="text/css" href="../../../boost.css">
10
11 <title>The Boost Statechart Library - Definitions</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">UML to Boost.Statechart mapping summary</h2>
27 </td>
28 </tr>
29 </table>
30 <hr>
31
32 <h2>Contents</h2>
33
34 <dl class="page-index">
35 <dt><a href="#StateMachine">State machine</a></dt>
36
37 <dt><a href="#States">States</a></dt>
38
39 <dd><a href="#NormalState">Normal state</a></dd>
40
41 <dd><a href="#InitialPseudostate">Initial pseudostate</a></dd>
42
43 <dd><a href="#FinalPseudostate">Final pseudostate</a></dd>
44
45 <dd><a href="#ShallowHistoryPseudostate">Shallow history
46 pseudostate</a></dd>
47
48 <dd><a href="#DeepHistoryPseudostate">Deep history pseudostate</a></dd>
49
50 <dd><a href="#JunctionPoint">Junction point</a></dd>
51
52 <dd><a href="#DynamicChoicePoint">Dynamic choice point</a></dd>
53
54 <dd><a href="#JoinAndForkBars">Join and fork bars</a></dd>
55
56 <dt><a href="#Events">Events</a></dt>
57
58 <dd><a href="#CallEvent">Call event</a></dd>
59
60 <dd><a href="#SignalEvent">Signal event</a></dd>
61
62 <dd><a href="#TimeEvent">Time event</a></dd>
63
64 <dd><a href="#ChangeEvent">Change event</a></dd>
65
66 <dt><a href="#Reactions">Reactions</a></dt>
67
68 <dd><a href="#Guard">Guard</a></dd>
69
70 <dd><a href="#Transition">Transition</a></dd>
71
72 <dd><a href="#Deferral">Deferral</a></dd>
73
74 <dd><a href="#InternalTransition">Internal transition (in-state
75 reaction)</a></dd>
76
77 <dt><a href="#Actions">Actions</a></dt>
78
79 <dd><a href="#EntryAction">Entry action</a></dd>
80
81 <dd><a href="#ExitAction">Exit action</a></dd>
82
83 <dd><a href="#TransitionAction">Transition action</a></dd>
84
85 <dd><a href="#DoActivity">Do activity</a></dd>
86 </dl>
87 <hr>
88
89 <h2><a name="StateMachine" id="StateMachine">State machine</a></h2>
90
91 <ul>
92 <li>A state machine is defined by deriving a class from either the
93 <code><a href=
94 "reference.html#ClassTemplatestate_machine">state_machine</a></code> or
95 the <code><a href=
96 "reference.html#ClassTemplateasynchronous_state_machine">asynchronous_state_machine</a></code>
97 class templates; <a href=
98 "tutorial.html#DefiningStatesAndEvents">example</a></li>
99 </ul>
100
101 <h2><a name="States" id="States">States</a></h2>
102
103 <h3><a name="NormalState" id="NormalState">Normal state</a></h3>
104
105 <ul>
106 <li>A state is defined by deriving a class from either the <code><a href=
107 "reference.html#ClassTemplatesimple_state">simple_state</a></code> or
108 <code><a href="reference.html#ClassTemplatestate">state</a></code> class
109 templates; <a href=
110 "tutorial.html#DefiningStatesAndEvents">example</a></li>
111
112 <li>The position of a state in the state hierarchy is defined by what is
113 passed as the <code>Context</code> template parameter. <a href=
114 "definitions.html#OutermostState">Outermost states</a> pass the
115 <code><a href=
116 "reference.html#ClassTemplatestate_machine">state_machine&lt;&gt;</a></code>
117 or <code><a href=
118 "reference.html#ClassTemplateasynchronous_state_machine">asynchronous_state_machine&lt;&gt;</a></code>
119 subtype they belong to, inner states pass their direct outer state;
120 <a href="tutorial.html#DefiningStatesAndEvents">example</a></li>
121
122 <li>A state can be made a member of a particular orthogonal region by
123 passing an instantiation of the <code>orthogonal</code> class template
124 nested in its outer state; <a href=
125 "tutorial.html#OrthogonalStates">example</a></li>
126 </ul>
127
128 <h3><a name="InitialPseudostate" id="InitialPseudostate">Initial
129 pseudostate</a></h3>
130
131 <ul>
132 <li>The state that is initially entered is identified by template
133 parameters rather than by a default transition from the initial
134 pseudostate (there is no such thing in Boost.Statechart)</li>
135
136 <li>For <code><a href=
137 "reference.html#ClassTemplatestate_machine">state_machine&lt;&gt;</a></code>
138 and <code><a href=
139 "reference.html#ClassTemplateasynchronous_state_machine">asynchronous_state_machine&lt;&gt;</a></code>
140 the state that is initially entered needs to be specified with the
141 <code>InitialState</code> template parameter; <a href=
142 "tutorial.html#DefiningStatesAndEvents">example</a></li>
143
144 <li>For <code><a href=
145 "reference.html#ClassTemplatesimple_state">simple_state&lt;&gt;</a></code>
146 and <code><a href=
147 "reference.html#ClassTemplatestate">state&lt;&gt;</a></code> the inner
148 state(s) that is/are initially entered can be specified with the
149 <code>InnerInitial</code> template parameter; <a href=
150 "tutorial.html#DefiningStatesAndEvents">example</a></li>
151 </ul>
152
153 <h3><a name="FinalPseudostate" id="FinalPseudostate">Final
154 pseudostate</a></h3>
155
156 <ul>
157 <li>There is no such thing as a final pseudostate in
158 Boost.Statechart</li>
159
160 <li>This functionality is implemented with a special reaction
161 (<code><a href=
162 "reference.html#ClassTemplatetermination">termination&lt;&gt;</a></code>)
163 and special reaction function (<code><a href=
164 "reference.html#simple_state::terminate">simple_state&lt;&gt;::terminate()</a></code>);
165 <a href="tutorial.html#StateQueries">example</a></li>
166 </ul>
167
168 <h3><a name="ShallowHistoryPseudostate" id=
169 "ShallowHistoryPseudostate">Shallow history pseudostate</a></h3>
170
171 <ul>
172 <li>A shallow history transition target or shallow history inner initial
173 state can be specified with <code><a href=
174 "reference.html#ClassTemplateshallow_history">shallow_history&lt;&gt;</a></code></li>
175 </ul>
176
177 <h3><a name="DeepHistoryPseudostate" id="DeepHistoryPseudostate">Deep
178 history pseudostate</a></h3>
179
180 <ul>
181 <li>A deep history transition target or deep history inner initial state
182 can be specified with <code><a href=
183 "reference.html#ClassTemplatedeep_history">deep_history&lt;&gt;</a></code>;
184 <a href="tutorial.html#History">example</a></li>
185 </ul>
186
187 <h3><a name="JunctionPoint" id="JunctionPoint">Junction point</a></h3>
188
189 <ul>
190 <li>Does not exist in Boost.Statechart; <a href=
191 "rationale.html#Limitations">rationale</a></li>
192 </ul>
193
194 <h3><a name="DynamicChoicePoint" id="DynamicChoicePoint">Dynamic choice
195 point</a></h3>
196
197 <ul>
198 <li>Does not (yet?) exist in Boost.Statechart; <a href=
199 "rationale.html#Limitations">rationale</a></li>
200 </ul>
201
202 <h3><a name="JoinAndForkBars" id="JoinAndForkBars">Join and fork
203 bars</a></h3>
204
205 <ul>
206 <li>Do not exist in Boost.Statechart; <a href=
207 "rationale.html#Limitations">rationale</a></li>
208 </ul>
209
210 <h2><a name="Events" id="Events">Events</a></h2>
211
212 <ul>
213 <li>A event is defined by deriving a class from the <a href=
214 "reference.html#ClassTemplateevent"><code>event</code></a> class
215 template; <a href=
216 "tutorial.html#DefiningStatesAndEvents">example</a></li>
217
218 <li>There is no distinction between signal and call events, see
219 below</li>
220 </ul>
221
222 <h3><a name="CallEvent" id="CallEvent">Call event</a></h3>
223
224 <ul>
225 <li>All events passed to <code><a href=
226 "reference.html#process_event">state_machine&lt;&gt;::process_event()</a></code>
227 are implicitly call events</li>
228 </ul>
229
230 <h3><a name="SignalEvent" id="SignalEvent">Signal event</a></h3>
231
232 <ul>
233 <li>All events passed to either <code><a href=
234 "reference.html#post_event0">simple_state&lt;&gt;::post_event()</a></code>
235 or <code><a href=
236 "reference.html#queue_event">fifo_scheduler&lt;&gt;::queue_event()</a></code>
237 are implicitly signal events</li>
238 </ul>
239
240 <h3><a name="TimeEvent" id="TimeEvent">Time event</a></h3>
241
242 <ul>
243 <li>Does not exist in Boost.Statechart</li>
244
245 <li>A time event can be simulated with an external timer that is started
246 in the entry action and stopped in the exit action of a particular state.
247 When starting the timer, it is instructed to call <code><a href=
248 "reference.html#queue_event">fifo_scheduler&lt;&gt;::queue_event()</a></code>
249 when the due time elapses</li>
250 </ul>
251
252 <h3><a name="ChangeEvent" id="ChangeEvent">Change event</a></h3>
253
254 <ul>
255 <li>Does not exist in Boost.Statechart</li>
256
257 <li>A change event can be simulated by packing to be monitored variables
258 into an external wrapper with <code>get</code> and <code>set</code>
259 methods. Whenever <code>set</code> is called the wrapper posts an
260 appropriate event</li>
261 </ul>
262
263 <h2><a name="Reactions" id="Reactions">Reactions</a></h2>
264
265 <h3><a name="Guard" id="Guard">Guard</a></h3>
266
267 <ul>
268 <li>A guard can be implemented with a selection statement in a
269 <code><a href=
270 "reference.html#ClassTemplatecustom_reaction">custom_reaction&lt;&gt;</a></code>;
271 <a href="tutorial.html#Guards">example</a></li>
272 </ul>
273
274 <h3><a name="Transition" id="Transition">Transition</a></h3>
275
276 <ul>
277 <li>A transition can be defined with either a <code><a href=
278 "reference.html#ClassTemplatetransition">transition&lt;&gt;</a></code> or
279 a call to <code><a href=
280 "reference.html#transit1">simple_state&lt;&gt;::transit&lt;&gt;</a></code>
281 in a <code><a href=
282 "reference.html#ClassTemplatecustom_reaction">custom_reaction&lt;&gt;</a></code>;
283 <a href="tutorial.html#AddingReactions">example</a></li>
284 </ul>
285
286 <h3><a name="Deferral" id="Deferral">Deferral</a></h3>
287
288 <ul>
289 <li>A deferral reaction can be defined with either a <code><a href=
290 "reference.html#ClassTemplatedeferral">deferral&lt;&gt;</a></code> or a
291 call to <code><a href=
292 "reference.html#defer_event">simple_state&lt;&gt;::defer_event()</a></code>
293 in a <code><a href=
294 "reference.html#ClassTemplatecustom_reaction">custom_reaction&lt;&gt;</a></code>;
295 <a href="tutorial.html#DeferringEvents">example</a></li>
296 </ul>
297
298 <h3><a name="InternalTransition" id="InternalTransition">Internal
299 transition (in-state reaction)</a></h3>
300
301 <ul>
302 <li>An in-state reaction can be defined with either a <code><a href=
303 "reference.html#ClassTemplatein_state_reaction">in_state_reaction&lt;&gt;</a></code>
304 or a call to <a href=
305 "reference.html#discard_event"><code>simple_state&lt;&gt;::discard_event()</code></a>
306 in a <code><a href=
307 "reference.html#ClassTemplatecustom_reaction">custom_reaction&lt;&gt;</a></code></li>
308 </ul>
309
310 <h2><a name="Actions" id="Actions">Actions</a></h2>
311
312 <h3><a name="EntryAction" id="EntryAction">Entry action</a></h3>
313
314 <ul>
315 <li>A state entry action can be defined by adding a constructor to a
316 state class; <a href="tutorial.html#HelloWorld">example</a></li>
317 </ul>
318
319 <h3><a name="ExitAction" id="ExitAction">Exit action</a></h3>
320
321 <ul>
322 <li>A state exit action can be defined by adding a destructor to a state
323 class; <a href="tutorial.html#HelloWorld">example</a></li>
324 </ul>
325
326 <h3><a name="TransitionAction" id="TransitionAction">Transition
327 action</a></h3>
328
329 <ul>
330 <li>A transition action can be defined by passing a function pointer
331 referencing the action to either <code><a href=
332 "reference.html#ClassTemplatetransition">transition&lt;&gt;</a></code> or
333 <code><a href=
334 "reference.html#transit2">simple_state&lt;&gt;::transit&lt;&gt;()</a></code>;
335 <a href="tutorial.html#TransitionActions">example</a></li>
336 </ul>
337
338 <h3><a name="DoActivity" id="DoActivity">Do activity</a></h3>
339
340 <ul>
341 <li>Not supported in Boost.Statechart</li>
342
343 <li>A do activity can be simulated with a separate thread that is started
344 in the entry action and cancelled (!) in the exit action of a particular
345 state</li>
346 </ul>
347 <hr>
348
349 <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
350 "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
351 height="31" width="88"></a></p>
352
353 <p>Revised
354 <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->03 December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38512" --></p>
355
356 <p><i>Copyright &copy; 2003-<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y" startspan -->2006<!--webbot bot="Timestamp" endspan i-checksum="770" -->
357 <a href="contact.html">Andreas Huber D&ouml;nni</a></i></p>
358
359 <p><i>Distributed under the Boost Software License, Version 1.0. (See
360 accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
361 copy at <a href=
362 "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
363</body>
364</html>