doc update for 1.56
This commit is contained in:
parent
56770b693d
commit
02043bedaf
@ -1,7 +1,7 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Chapter 3. Tutorial</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt01.html" title="Part I. User' guide"><link rel="prev" href="ch02s04.html" title="State machine glossary"><link rel="next" href="ch03s02.html" title="Basic front-end"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Tutorial</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.html">Prev</a> </td><th width="60%" align="center">Part I. User' guide</th><td width="20%" align="right"> <a accesskey="n" href="ch03s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 3. Tutorial"><div class="titlepage"><div><div><h2 class="title"><a name="d0e322"></a>Chapter 3. Tutorial</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ch03.html#d0e325">Design</a></span></dt><dt><span class="sect1"><a href="ch03s02.html">Basic front-end</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s02.html#d0e344">A simple example</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e358">Transition table</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e406">Defining states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e419">What do you actually do inside actions / guards?</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e471">Defining a simple state machine</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e529">Defining a submachine</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e577">Orthogonal regions, terminate state, event deferring</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e668">History</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e713">Completion (anonymous) transitions</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e740">Internal transitions</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e842">more row types</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e875">Explicit entry / entry and exit pseudo-state / fork</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1064">Flags</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1126">Event Hierarchy</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1147">Customizing a state machine / Getting more speed</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1196">Choosing the initial event</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1209"> Containing state machine (deprecated)</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">Functor front-end</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#d0e1248"> Transition table </a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1281">Defining states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1300">What do you actually do inside actions / guards (Part 2)?</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1312">Defining a simple state machine</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1320">Anonymous transitions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1346">Internal
|
||||
transitions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1392">Kleene (any) event</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">eUML (experimental)</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#d0e1462">Transition table</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1503">A simple example: rewriting only our transition table </a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1536">Defining events, actions and states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1649">Wrapping up a simple state machine and first complete examples</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1697">Defining a submachine</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1713">
|
||||
transitions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1392">Kleene (any) event</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">eUML</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#d0e1462">Transition table</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1503">A simple example: rewriting only our transition table </a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1536">Defining events, actions and states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1649">Wrapping up a simple state machine and first complete examples</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1697">Defining a submachine</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1713">
|
||||
Attributes / Function call</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1813">Orthogonal regions, flags, event deferring</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1925">
|
||||
Customizing a state machine / Getting
|
||||
more speed</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1960">Completion / Anonymous transitions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1978">Internal transitions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2009">Kleene(any) event)</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2024">Other state types</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2088">Helper functions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2191">Phoenix-like STL support</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2244">Writing actions with Boost.Phoenix (in development)</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s05.html">Back-end</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s05.html#d0e2303">Creation </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2312">Starting and stopping a state
|
||||
|
@ -1,6 +1,6 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Functor front-end</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch03.html" title="Chapter 3. Tutorial"><link rel="prev" href="ch03s02.html" title="Basic front-end"><link rel="next" href="ch03s04.html" title="eUML (experimental)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Functor front-end</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="ch03s04.html">Next</a></td></tr></table><hr></div><div class="sect1" title="Functor front-end"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1224"></a><span class="command"><strong><a name="functor-front-end"></a></strong></span>Functor front-end</h2></div></div></div><p>The functor front-end is the preferred front-end at the moment. It is more
|
||||
<title>Functor front-end</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch03.html" title="Chapter 3. Tutorial"><link rel="prev" href="ch03s02.html" title="Basic front-end"><link rel="next" href="ch03s04.html" title="eUML"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Functor front-end</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="ch03s04.html">Next</a></td></tr></table><hr></div><div class="sect1" title="Functor front-end"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1224"></a><span class="command"><strong><a name="functor-front-end"></a></strong></span>Functor front-end</h2></div></div></div><p>The functor front-end is the preferred front-end at the moment. It is more
|
||||
powerful than the standard front-end and has a more readable transition table.
|
||||
It also makes it easier to reuse parts of state machines. Like <span class="command"><strong><a class="command" href="ch03s04.html#eUML-front-end">eUML</a></strong></span>, it also comes with a good deal
|
||||
of predefined actions. Actually, eUML generates a functor front-end through
|
||||
@ -162,4 +162,4 @@ struct Empty : public msm::front::euml::func_state<Empty_tag,Empty_Entry,Empt
|
||||
typedef boost::mpl::true_ type;
|
||||
};
|
||||
}}</pre><p>The only requirement is that this event must have a copy constructor from
|
||||
the event originally processed on the state machine.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Basic front-end </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> eUML (experimental)</td></tr></table></div></body></html>
|
||||
the event originally processed on the state machine.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Basic front-end </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> eUML</td></tr></table></div></body></html>
|
@ -1,9 +1,10 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>eUML (experimental)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch03.html" title="Chapter 3. Tutorial"><link rel="prev" href="ch03s03.html" title="Functor front-end"><link rel="next" href="ch03s05.html" title="Back-end"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">eUML (experimental)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s03.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="ch03s05.html">Next</a></td></tr></table><hr></div><div class="sect1" title="eUML (experimental)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1429"></a><span class="command"><strong><a name="eUML-front-end"></a></strong></span>eUML (experimental)</h2></div></div></div><p><span class="underline">Important note</span>: eUML requires a compiler
|
||||
supporting Boost.Typeof. More generally, eUML has experimental status because
|
||||
some compilers will start crashing when a state machine becomes too big (usually
|
||||
when you write huge actions).</p><p>The previous front-ends are simple to write but still force an amount of
|
||||
<title>eUML</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch03.html" title="Chapter 3. Tutorial"><link rel="prev" href="ch03s03.html" title="Functor front-end"><link rel="next" href="ch03s05.html" title="Back-end"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">eUML</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s03.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="ch03s05.html">Next</a></td></tr></table><hr></div><div class="sect1" title="eUML"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e1429"></a><span class="command"><strong><a name="eUML-front-end"></a></strong></span>eUML</h2></div></div></div><p><span class="underline">Important note</span>: eUML requires a compiler
|
||||
supporting Boost.Typeof. Full eUML has experimental status (but not if only the
|
||||
transition table is written using eUML) because some compilers will start
|
||||
crashing when a state machine becomes too big (usually when you write huge
|
||||
actions).</p><p>The previous front-ends are simple to write but still force an amount of
|
||||
noise, mostly MPL types, so it would be nice to write code looking like C++
|
||||
(with a C++ action language) directly inside the transition table, like UML
|
||||
designers like to do on their state machine diagrams. If it were functional
|
||||
|
@ -1,6 +1,6 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Back-end</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch03.html" title="Chapter 3. Tutorial"><link rel="prev" href="ch03s04.html" title="eUML (experimental)"><link rel="next" href="ch04.html" title="Chapter 4. Performance / Compilers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Back-end</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s04.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr></table><hr></div><div class="sect1" title="Back-end"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e2298"></a>Back-end</h2></div></div></div><p>There is, at the moment, one back-end. This back-end contains the library
|
||||
<title>Back-end</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch03.html" title="Chapter 3. Tutorial"><link rel="prev" href="ch03s04.html" title="eUML"><link rel="next" href="ch04.html" title="Chapter 4. Performance / Compilers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Back-end</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s04.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr></table><hr></div><div class="sect1" title="Back-end"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e2298"></a>Back-end</h2></div></div></div><p>There is, at the moment, one back-end. This back-end contains the library
|
||||
engine and defines the performance and functionality trade-offs. The currently
|
||||
available back-end implements most of the functionality defined by the UML 2.0
|
||||
standard at very high runtime speed, in exchange for longer compile-time. The
|
||||
@ -302,4 +302,4 @@ BOOST_MSM_BACK_GENERATE_PROCESS_EVENT(mysubmachine)</pre></li><li class="listite
|
||||
(default): <code class="code">active_state_switch_after_entry</code></p></li></ul></div><p>The problem and the solution is shown for the
|
||||
<a class="link" href="examples/ActiveStateSetBeforeTransition.cpp" target="_top">functor-front-end</a>
|
||||
and <a class="link" href="examples/ActivateStateBeforeTransitionEuml.cpp" target="_top">eUML</a>. Removing <code class="code">active_state_switch_before_transition</code>
|
||||
will show the default state. </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">eUML (experimental) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Performance / Compilers</td></tr></table></div></body></html>
|
||||
will show the default state. </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">eUML </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Performance / Compilers</td></tr></table></div></body></html>
|
@ -1,6 +1,5 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Chapter 8. Version history</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt01.html" title="Part I. User' guide"><link rel="prev" href="ch07s02.html" title="MSM v1"><link rel="next" href="ch08s02.html" title="From V2.24 to V2.25 (Boost 1.54)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Version history</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch07s02.html">Prev</a> </td><th width="60%" align="center">Part I. User' guide</th><td width="20%" align="right"> <a accesskey="n" href="ch08s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 8. Version history"><div class="titlepage"><div><div><h2 class="title"><a name="d0e3349"></a>Chapter 8. Version history</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ch08.html#d0e3352">From V2.25 to V2.26 (Boost 1.55)</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">From V2.24 to V2.25 (Boost 1.54)</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">From V2.23 to V2.24 (Boost 1.51)</a></span></dt><dt><span class="sect1"><a href="ch08s04.html">From V2.22 to V2.23 (Boost 1.50)</a></span></dt><dt><span class="sect1"><a href="ch08s05.html">From V2.21 to V2.22 (Boost 1.48)</a></span></dt><dt><span class="sect1"><a href="ch08s06.html">From V2.20 to V2.21 (Boost 1.47)</a></span></dt><dt><span class="sect1"><a href="ch08s07.html">From V2.12 to V2.20 (Boost 1.46)</a></span></dt><dt><span class="sect1"><a href="ch08s08.html">From V2.10 to V2.12 (Boost 1.45)</a></span></dt><dt><span class="sect1"><a href="ch08s09.html">From V2.0 to V2.12 (Boost 1.44)</a></span></dt></dl></div><div class="sect1" title="From V2.25 to V2.26 (Boost 1.55)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3352"></a>From V2.25 to V2.26 (Boost 1.55)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>New feature: interrupt states now support a sequence of events to
|
||||
end the interruption</p></li><li class="listitem"><p>Bugfix: Trac 8686.</p></li></ul></div><p>
|
||||
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch07s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> MSM v1 </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.24 to V2.25 (Boost 1.54)</td></tr></table></div></body></html>
|
||||
<title>Chapter 8. Version history</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt01.html" title="Part I. User' guide"><link rel="prev" href="ch07s02.html" title="MSM v1"><link rel="next" href="ch08s02.html" title="From V2.25 to V2.26 (Boost 1.55)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Version history</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch07s02.html">Prev</a> </td><th width="60%" align="center">Part I. User' guide</th><td width="20%" align="right"> <a accesskey="n" href="ch08s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 8. Version history"><div class="titlepage"><div><div><h2 class="title"><a name="d0e3349"></a>Chapter 8. Version history</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ch08.html#d0e3352">From V2.26 to V2.27 (Boost 1.56)</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">From V2.25 to V2.26 (Boost 1.55)</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">From V2.24 to V2.25 (Boost 1.54)</a></span></dt><dt><span class="sect1"><a href="ch08s04.html">From V2.23 to V2.24 (Boost 1.51)</a></span></dt><dt><span class="sect1"><a href="ch08s05.html">From V2.22 to V2.23 (Boost 1.50)</a></span></dt><dt><span class="sect1"><a href="ch08s06.html">From V2.21 to V2.22 (Boost 1.48)</a></span></dt><dt><span class="sect1"><a href="ch08s07.html">From V2.20 to V2.21 (Boost 1.47)</a></span></dt><dt><span class="sect1"><a href="ch08s08.html">From V2.12 to V2.20 (Boost 1.46)</a></span></dt><dt><span class="sect1"><a href="ch08s09.html">From V2.10 to V2.12 (Boost 1.45)</a></span></dt><dt><span class="sect1"><a href="ch08s10.html">From V2.0 to V2.12 (Boost 1.44)</a></span></dt></dl></div><div class="sect1" title="From V2.26 to V2.27 (Boost 1.56)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3352"></a>From V2.26 to V2.27 (Boost 1.56)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Bugfix: no_transition in case of an exception.</p></li><li class="listitem"><p>Bugfix: Trac 9280</p></li><li class="listitem"><p>Bugfix: incomplete namespace names in eUML</p></li></ul></div><p>
|
||||
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch07s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> MSM v1 </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.25 to V2.26 (Boost 1.55)</td></tr></table></div></body></html>
|
@ -1,6 +1,6 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>From V2.24 to V2.25 (Boost 1.54)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08.html" title="Chapter 8. Version history"><link rel="next" href="ch08s03.html" title="From V2.23 to V2.24 (Boost 1.51)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.24 to V2.25 (Boost 1.54)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s03.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.24 to V2.25 (Boost 1.54)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3365"></a>From V2.24 to V2.25 (Boost 1.54)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Bugfix: Exit points broken for the favor_compile_time
|
||||
policy.</p></li><li class="listitem"><p>Bugfix: copy breaks exit points of subsubmachines.</p></li><li class="listitem"><p>Bugfix: Trac 8046.</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 8. Version history </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.23 to V2.24 (Boost 1.51)</td></tr></table></div></body></html>
|
||||
<title>From V2.25 to V2.26 (Boost 1.55)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08.html" title="Chapter 8. Version history"><link rel="next" href="ch08s03.html" title="From V2.24 to V2.25 (Boost 1.54)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.25 to V2.26 (Boost 1.55)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s03.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.25 to V2.26 (Boost 1.55)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3368"></a>From V2.25 to V2.26 (Boost 1.55)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>New feature: interrupt states now support a sequence of events to
|
||||
end the interruption</p></li><li class="listitem"><p>Bugfix: Trac 8686.</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 8. Version history </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.24 to V2.25 (Boost 1.54)</td></tr></table></div></body></html>
|
@ -1,8 +1,6 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>From V2.23 to V2.24 (Boost 1.51)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s02.html" title="From V2.24 to V2.25 (Boost 1.54)"><link rel="next" href="ch08s04.html" title="From V2.22 to V2.23 (Boost 1.50)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.23 to V2.24 (Boost 1.51)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s02.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s04.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.23 to V2.24 (Boost 1.51)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3381"></a>From V2.23 to V2.24 (Boost 1.51)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> Support for <span class="command"><strong><a class="command" href="ch03s03.html#any-event">boost::any</a></strong></span>
|
||||
or <span class="command"><strong><a class="command" href="ch03s04.html#kleene-event">kleene</a></strong></span> as an
|
||||
acceptable event.</p></li><li class="listitem"><p>Bugfix: compiler error with fsm internal table and
|
||||
<code class="code">none</code>(compound) event.</p></li><li class="listitem"><p>Bugfix: <code class="code">euml::defer_</code> leading to stack overflow.</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.24 to V2.25 (Boost 1.54) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.22 to V2.23 (Boost 1.50)</td></tr></table></div></body></html>
|
||||
<title>From V2.24 to V2.25 (Boost 1.54)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s02.html" title="From V2.25 to V2.26 (Boost 1.55)"><link rel="next" href="ch08s04.html" title="From V2.23 to V2.24 (Boost 1.51)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.24 to V2.25 (Boost 1.54)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s02.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s04.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.24 to V2.25 (Boost 1.54)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3381"></a>From V2.24 to V2.25 (Boost 1.54)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Bugfix: Exit points broken for the favor_compile_time
|
||||
policy.</p></li><li class="listitem"><p>Bugfix: copy breaks exit points of subsubmachines.</p></li><li class="listitem"><p>Bugfix: Trac 8046.</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.25 to V2.26 (Boost 1.55) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.23 to V2.24 (Boost 1.51)</td></tr></table></div></body></html>
|
@ -1,11 +1,8 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>From V2.22 to V2.23 (Boost 1.50)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s03.html" title="From V2.23 to V2.24 (Boost 1.51)"><link rel="next" href="ch08s05.html" title="From V2.21 to V2.22 (Boost 1.48)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.22 to V2.23 (Boost 1.50)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s03.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s05.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.22 to V2.23 (Boost 1.50)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3409"></a>From V2.22 to V2.23 (Boost 1.50)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> <span class="command"><strong><a class="command" href="ch03s04.html#eUML-composite-table">eUML</a></strong></span> : better syntax
|
||||
for front-ends defined with eUML as transititon table only. Caution:
|
||||
Breaking Change!</p></li><li class="listitem"><p>Bugfix: graph building was only working if
|
||||
<code class="code">initial_state</code> defined as a sequence</p></li><li class="listitem"><p>Bugfix: flags defined for a Terminate or Interrupt state do not
|
||||
break the blocking function of these states any more.</p></li><li class="listitem"><p>Bugfix: multiple deferred events from several regions were not
|
||||
working in every case.</p></li><li class="listitem"><p>Bugfix: visitor was passed by value to submachines.</p></li><li class="listitem"><p>Bugfix: <code class="code">no_transition</code> was not called for submachines who send an
|
||||
event to themselves.</p></li><li class="listitem"><p>Fixed warnings with gcc</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.23 to V2.24 (Boost 1.51) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.21 to V2.22 (Boost 1.48)</td></tr></table></div></body></html>
|
||||
<title>From V2.23 to V2.24 (Boost 1.51)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s03.html" title="From V2.24 to V2.25 (Boost 1.54)"><link rel="next" href="ch08s05.html" title="From V2.22 to V2.23 (Boost 1.50)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.23 to V2.24 (Boost 1.51)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s03.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s05.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.23 to V2.24 (Boost 1.51)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3397"></a>From V2.23 to V2.24 (Boost 1.51)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> Support for <span class="command"><strong><a class="command" href="ch03s03.html#any-event">boost::any</a></strong></span>
|
||||
or <span class="command"><strong><a class="command" href="ch03s04.html#kleene-event">kleene</a></strong></span> as an
|
||||
acceptable event.</p></li><li class="listitem"><p>Bugfix: compiler error with fsm internal table and
|
||||
<code class="code">none</code>(compound) event.</p></li><li class="listitem"><p>Bugfix: <code class="code">euml::defer_</code> leading to stack overflow.</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.24 to V2.25 (Boost 1.54) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.22 to V2.23 (Boost 1.50)</td></tr></table></div></body></html>
|
@ -1,21 +1,11 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>From V2.21 to V2.22 (Boost 1.48)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s04.html" title="From V2.22 to V2.23 (Boost 1.50)"><link rel="next" href="ch08s06.html" title="From V2.20 to V2.21 (Boost 1.47)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.21 to V2.22 (Boost 1.48)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s04.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s06.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.21 to V2.22 (Boost 1.48)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3446"></a>From V2.21 to V2.22 (Boost 1.48)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>eUML: added easier event reprocessing:
|
||||
<code class="code">process(event_)</code> and <code class="code">reprocess()</code></p></li><li class="listitem"><p>Rewrite of internal transition tables. There were a few bugs
|
||||
(failing recursivity in internal transition tables of sub-sub
|
||||
machines) and a missing feature (unused internal transition table of
|
||||
the main state machine).</p></li><li class="listitem"><p>Bugfixes</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Reverted favor_compile_time policy to Boost 1.46
|
||||
state</p></li><li class="listitem"><p><code class="code">none</code> event now is convertible from any
|
||||
other event </p></li><li class="listitem"><p>eUML and pseudo exit states</p></li><li class="listitem"><p>Fixed not working Flag_AND</p></li><li class="listitem"><p>Fixed rare bugs causing multiple processing of the
|
||||
same event in a submachine whose transition table
|
||||
contains this event and a base event of it.</p></li><li class="listitem"><p>gcc warnings about unused variables</p></li></ul></div></li><li class="listitem"><p>Breaking change: the new internal transition table feature causes
|
||||
a minor breaking change. In a submachine, the "Fsm" template
|
||||
parameter for guards / actions of an internal table declared using
|
||||
<code class="code">internal_transition_table</code> now is the submachine,
|
||||
not the higher-level state machine. Internal transitions declared
|
||||
using internal rows in the higher-level state machine keep their
|
||||
behavior (the "Fsm" parameter is the higher-level state machine). To
|
||||
sum up, the internal transition "Fsm" parameter is the closest state
|
||||
machine containing this transition.</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.22 to V2.23 (Boost 1.50) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.20 to V2.21 (Boost 1.47)</td></tr></table></div></body></html>
|
||||
<title>From V2.22 to V2.23 (Boost 1.50)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s04.html" title="From V2.23 to V2.24 (Boost 1.51)"><link rel="next" href="ch08s06.html" title="From V2.21 to V2.22 (Boost 1.48)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.22 to V2.23 (Boost 1.50)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s04.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s06.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.22 to V2.23 (Boost 1.50)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3425"></a>From V2.22 to V2.23 (Boost 1.50)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> <span class="command"><strong><a class="command" href="ch03s04.html#eUML-composite-table">eUML</a></strong></span> : better syntax
|
||||
for front-ends defined with eUML as transititon table only. Caution:
|
||||
Breaking Change!</p></li><li class="listitem"><p>Bugfix: graph building was only working if
|
||||
<code class="code">initial_state</code> defined as a sequence</p></li><li class="listitem"><p>Bugfix: flags defined for a Terminate or Interrupt state do not
|
||||
break the blocking function of these states any more.</p></li><li class="listitem"><p>Bugfix: multiple deferred events from several regions were not
|
||||
working in every case.</p></li><li class="listitem"><p>Bugfix: visitor was passed by value to submachines.</p></li><li class="listitem"><p>Bugfix: <code class="code">no_transition</code> was not called for submachines who send an
|
||||
event to themselves.</p></li><li class="listitem"><p>Fixed warnings with gcc</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.23 to V2.24 (Boost 1.51) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.21 to V2.22 (Boost 1.48)</td></tr></table></div></body></html>
|
@ -1,10 +1,21 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>From V2.20 to V2.21 (Boost 1.47)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s05.html" title="From V2.21 to V2.22 (Boost 1.48)"><link rel="next" href="ch08s07.html" title="From V2.12 to V2.20 (Boost 1.46)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.20 to V2.21 (Boost 1.47)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s05.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s07.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.20 to V2.21 (Boost 1.47)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3494"></a>From V2.20 to V2.21 (Boost 1.47)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Added a <span class="command"><strong><a class="command" href="ch03s05.html#backend-start">stop()</a></strong></span>
|
||||
method in the back-end.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s04.html#eUML-phoenix">Added partial support for
|
||||
Boost.Phoenix functors in eUML</a></strong></span></p></li><li class="listitem"><p>Added the possibility to choose when <span class="command"><strong><a class="command" href="ch03s05.html#backend-state-switch">state switching</a></strong></span>
|
||||
occurs.</p></li><li class="listitem"><p>Bugfixes</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Trac 5117, 5253, 5533, 5573</p></li><li class="listitem"><p>gcc warnings about unused variables</p></li><li class="listitem"><p>better implemenation of favor_compile_time back-end
|
||||
policy</p></li><li class="listitem"><p>bug with eUML and state construction</p></li><li class="listitem"><p>incorrect eUML event and state macros</p></li><li class="listitem"><p>incorrect event type passed to a direct entry state's
|
||||
on_entry action</p></li><li class="listitem"><p>more examples</p></li></ul></div></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.21 to V2.22 (Boost 1.48) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.12 to V2.20 (Boost 1.46)</td></tr></table></div></body></html>
|
||||
<title>From V2.21 to V2.22 (Boost 1.48)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s05.html" title="From V2.22 to V2.23 (Boost 1.50)"><link rel="next" href="ch08s07.html" title="From V2.20 to V2.21 (Boost 1.47)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.21 to V2.22 (Boost 1.48)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s05.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s07.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.21 to V2.22 (Boost 1.48)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3462"></a>From V2.21 to V2.22 (Boost 1.48)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>eUML: added easier event reprocessing:
|
||||
<code class="code">process(event_)</code> and <code class="code">reprocess()</code></p></li><li class="listitem"><p>Rewrite of internal transition tables. There were a few bugs
|
||||
(failing recursivity in internal transition tables of sub-sub
|
||||
machines) and a missing feature (unused internal transition table of
|
||||
the main state machine).</p></li><li class="listitem"><p>Bugfixes</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Reverted favor_compile_time policy to Boost 1.46
|
||||
state</p></li><li class="listitem"><p><code class="code">none</code> event now is convertible from any
|
||||
other event </p></li><li class="listitem"><p>eUML and pseudo exit states</p></li><li class="listitem"><p>Fixed not working Flag_AND</p></li><li class="listitem"><p>Fixed rare bugs causing multiple processing of the
|
||||
same event in a submachine whose transition table
|
||||
contains this event and a base event of it.</p></li><li class="listitem"><p>gcc warnings about unused variables</p></li></ul></div></li><li class="listitem"><p>Breaking change: the new internal transition table feature causes
|
||||
a minor breaking change. In a submachine, the "Fsm" template
|
||||
parameter for guards / actions of an internal table declared using
|
||||
<code class="code">internal_transition_table</code> now is the submachine,
|
||||
not the higher-level state machine. Internal transitions declared
|
||||
using internal rows in the higher-level state machine keep their
|
||||
behavior (the "Fsm" parameter is the higher-level state machine). To
|
||||
sum up, the internal transition "Fsm" parameter is the closest state
|
||||
machine containing this transition.</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.22 to V2.23 (Boost 1.50) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.20 to V2.21 (Boost 1.47)</td></tr></table></div></body></html>
|
@ -1,12 +1,10 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>From V2.12 to V2.20 (Boost 1.46)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s06.html" title="From V2.20 to V2.21 (Boost 1.47)"><link rel="next" href="ch08s08.html" title="From V2.10 to V2.12 (Boost 1.45)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.12 to V2.20 (Boost 1.46)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s06.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s08.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.12 to V2.20 (Boost 1.46)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3542"></a>From V2.12 to V2.20 (Boost 1.46)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Compile-time state machine analysis using mpl_graph:</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-compile-time-analysis">checking of region orthogonality</a></strong></span>.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-compile-time-analysis">search for unreachable states</a></strong></span>.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s02.html#explicit-entry-no-region-id">automatic region index search for pseudo entry or explicit
|
||||
entry states</a></strong></span>.</p></li></ul></div></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-boost-parameter">Boost.Parameter interface definition</a></strong></span> for
|
||||
msm::back::state_machine<> template arguments.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-queues">Possibility to provide a
|
||||
container</a></strong></span> for the event and deferred event queues. A
|
||||
policy implementation based on a more efficient Boost.CircularBuffer
|
||||
is provided.</p></li><li class="listitem"><p>msm::back::state_machine<>::is_flag_active method made
|
||||
const.</p></li><li class="listitem"><p>added possibility to <span class="command"><strong><a class="command" href="ch03s05.html#backend-enqueueing">enqueue events</a></strong></span> for delayed processing.</p></li><li class="listitem"><p>Bugfixes</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Trac 4926</p></li><li class="listitem"><p>stack overflow using the Defer functor</p></li><li class="listitem"><p>anonymous transition of a submachine not called for
|
||||
the initial state</p></li></ul></div></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.20 to V2.21 (Boost 1.47) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.10 to V2.12 (Boost 1.45)</td></tr></table></div></body></html>
|
||||
<title>From V2.20 to V2.21 (Boost 1.47)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s06.html" title="From V2.21 to V2.22 (Boost 1.48)"><link rel="next" href="ch08s08.html" title="From V2.12 to V2.20 (Boost 1.46)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.20 to V2.21 (Boost 1.47)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s06.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s08.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.20 to V2.21 (Boost 1.47)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3510"></a>From V2.20 to V2.21 (Boost 1.47)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Added a <span class="command"><strong><a class="command" href="ch03s05.html#backend-start">stop()</a></strong></span>
|
||||
method in the back-end.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s04.html#eUML-phoenix">Added partial support for
|
||||
Boost.Phoenix functors in eUML</a></strong></span></p></li><li class="listitem"><p>Added the possibility to choose when <span class="command"><strong><a class="command" href="ch03s05.html#backend-state-switch">state switching</a></strong></span>
|
||||
occurs.</p></li><li class="listitem"><p>Bugfixes</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Trac 5117, 5253, 5533, 5573</p></li><li class="listitem"><p>gcc warnings about unused variables</p></li><li class="listitem"><p>better implemenation of favor_compile_time back-end
|
||||
policy</p></li><li class="listitem"><p>bug with eUML and state construction</p></li><li class="listitem"><p>incorrect eUML event and state macros</p></li><li class="listitem"><p>incorrect event type passed to a direct entry state's
|
||||
on_entry action</p></li><li class="listitem"><p>more examples</p></li></ul></div></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.21 to V2.22 (Boost 1.48) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.12 to V2.20 (Boost 1.46)</td></tr></table></div></body></html>
|
@ -1,9 +1,12 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>From V2.10 to V2.12 (Boost 1.45)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s07.html" title="From V2.12 to V2.20 (Boost 1.46)"><link rel="next" href="ch08s09.html" title="From V2.0 to V2.12 (Boost 1.44)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.10 to V2.12 (Boost 1.45)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s07.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s09.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.10 to V2.12 (Boost 1.45)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3600"></a>From V2.10 to V2.12 (Boost 1.45)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Support for <span class="command"><strong><a class="command" href="ch03s05.html#back-end-serialization">serialization</a></strong></span></p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s04.html#eUML-reuse-functor">Possibility to use
|
||||
normal functors</a></strong></span> (from functor front-end) in
|
||||
eUML.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-fsm-constructor-args">New constructors</a></strong></span> where substates / submachines can be taken as
|
||||
arguments. This allows passing arguments to the constructor of a
|
||||
submachine.</p></li><li class="listitem"><p>Bugfixes</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s07.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.12 to V2.20 (Boost 1.46) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.0 to V2.12 (Boost 1.44)</td></tr></table></div></body></html>
|
||||
<title>From V2.12 to V2.20 (Boost 1.46)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s07.html" title="From V2.20 to V2.21 (Boost 1.47)"><link rel="next" href="ch08s09.html" title="From V2.10 to V2.12 (Boost 1.45)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.12 to V2.20 (Boost 1.46)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s07.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s09.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.12 to V2.20 (Boost 1.46)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3558"></a>From V2.12 to V2.20 (Boost 1.46)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Compile-time state machine analysis using mpl_graph:</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-compile-time-analysis">checking of region orthogonality</a></strong></span>.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-compile-time-analysis">search for unreachable states</a></strong></span>.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s02.html#explicit-entry-no-region-id">automatic region index search for pseudo entry or explicit
|
||||
entry states</a></strong></span>.</p></li></ul></div></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-boost-parameter">Boost.Parameter interface definition</a></strong></span> for
|
||||
msm::back::state_machine<> template arguments.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-queues">Possibility to provide a
|
||||
container</a></strong></span> for the event and deferred event queues. A
|
||||
policy implementation based on a more efficient Boost.CircularBuffer
|
||||
is provided.</p></li><li class="listitem"><p>msm::back::state_machine<>::is_flag_active method made
|
||||
const.</p></li><li class="listitem"><p>added possibility to <span class="command"><strong><a class="command" href="ch03s05.html#backend-enqueueing">enqueue events</a></strong></span> for delayed processing.</p></li><li class="listitem"><p>Bugfixes</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Trac 4926</p></li><li class="listitem"><p>stack overflow using the Defer functor</p></li><li class="listitem"><p>anonymous transition of a submachine not called for
|
||||
the initial state</p></li></ul></div></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s07.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.20 to V2.21 (Boost 1.47) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.10 to V2.12 (Boost 1.45)</td></tr></table></div></body></html>
|
@ -1,9 +1,9 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>From V2.0 to V2.12 (Boost 1.44)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s08.html" title="From V2.10 to V2.12 (Boost 1.45)"><link rel="next" href="pt02.html" title="Part II. Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.0 to V2.12 (Boost 1.44)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s08.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="pt02.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.0 to V2.12 (Boost 1.44)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3625"></a>From V2.0 to V2.12 (Boost 1.44)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>New documentation</p></li><li class="listitem"><p>Internal transitions. Either as part of the transition table or
|
||||
using a state's internal transition table</p></li><li class="listitem"><p>increased dispatch and copy speed</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s02.html#basic-row2">new row types</a></strong></span> for the
|
||||
basic front-end</p></li><li class="listitem"><p>new eUML syntax, better attribute support, macros to ease
|
||||
developer's life. Even VC8 seems to like it better.</p></li><li class="listitem"><p>New policy for reduced compile-time at the cost of dispatch
|
||||
speed</p></li><li class="listitem"><p>Support for base events</p></li><li class="listitem"><p>possibility to choose the initial event</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s08.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pt02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.10 to V2.12 (Boost 1.45) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Part II. Reference</td></tr></table></div></body></html>
|
||||
<title>From V2.10 to V2.12 (Boost 1.45)</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch08.html" title="Chapter 8. Version history"><link rel="prev" href="ch08s08.html" title="From V2.12 to V2.20 (Boost 1.46)"><link rel="next" href="ch08s10.html" title="From V2.0 to V2.12 (Boost 1.44)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">From V2.10 to V2.12 (Boost 1.45)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s08.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Version history</th><td width="20%" align="right"> <a accesskey="n" href="ch08s10.html">Next</a></td></tr></table><hr></div><div class="sect1" title="From V2.10 to V2.12 (Boost 1.45)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3616"></a>From V2.10 to V2.12 (Boost 1.45)</h2></div></div></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Support for <span class="command"><strong><a class="command" href="ch03s05.html#back-end-serialization">serialization</a></strong></span></p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s04.html#eUML-reuse-functor">Possibility to use
|
||||
normal functors</a></strong></span> (from functor front-end) in
|
||||
eUML.</p></li><li class="listitem"><p><span class="command"><strong><a class="command" href="ch03s05.html#backend-fsm-constructor-args">New constructors</a></strong></span> where substates / submachines can be taken as
|
||||
arguments. This allows passing arguments to the constructor of a
|
||||
submachine.</p></li><li class="listitem"><p>Bugfixes</p></li></ul></div><p>
|
||||
</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s08.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch08.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch08s10.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.12 to V2.20 (Boost 1.46) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> From V2.0 to V2.12 (Boost 1.44)</td></tr></table></div></body></html>
|
@ -1,4 +1,4 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Chapter 9. External references to MSM</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="pt02.html" title="Part II. Reference"><link rel="next" href="ch10.html" title="Chapter 10. eUML operators and basic helpers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. External references to MSM</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt02.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="ch10.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 9. External references to MSM"><div class="titlepage"><div><div><h2 class="title"><a name="d0e3662"></a>Chapter 9. External references to MSM</h2></div></div></div><p>An interesting mapping UML <-> MSM from Takatoshi Kondo can be found at
|
||||
<title>Chapter 9. External references to MSM</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="pt02.html" title="Part II. Reference"><link rel="next" href="ch10.html" title="Chapter 10. eUML operators and basic helpers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. External references to MSM</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt02.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="ch10.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 9. External references to MSM"><div class="titlepage"><div><div><h2 class="title"><a name="d0e3678"></a>Chapter 9. External references to MSM</h2></div></div></div><p>An interesting mapping UML <-> MSM from Takatoshi Kondo can be found at
|
||||
<span class="command"><strong><a class="command" href="http://redboltz.wikidot.com/boost-msm-guide" target="_top">Redboltz</a></strong></span>.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pt02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch10.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part II. Reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. eUML operators and basic helpers</td></tr></table></div></body></html>
|
@ -1,7 +1,7 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Chapter 10. eUML operators and basic helpers</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="ch09.html" title="Chapter 9. External references to MSM"><link rel="next" href="ch11.html" title="Chapter 11. Functional programming"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. eUML operators and basic helpers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch09.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="ch11.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 10. eUML operators and basic helpers"><div class="titlepage"><div><div><h2 class="title"><a name="d0e3670"></a>Chapter 10. eUML operators and basic helpers</h2></div></div></div><p>The following table lists the supported operators: </p><p>
|
||||
</p><div class="table"><a name="d0e3677"></a><p class="title"><b>Table 10.1. Operators and state machine helpers</b></p><div class="table-contents"><table summary="Operators and state machine helpers" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>eUML function / operator</th><th>Description</th><th>Functor</th></tr></thead><tbody><tr><td>&&</td><td>Calls lazily Action1&& Action2</td><td>And_</td></tr><tr><td>||</td><td>Calls lazily Action1|| Action2</td><td>Or_</td></tr><tr><td>!</td><td>Calls lazily !Action1</td><td>Not_</td></tr><tr><td>!=</td><td>Calls lazily Action1 != Action2</td><td>NotEqualTo_</td></tr><tr><td>==</td><td>Calls lazily Action1 == Action2</td><td>EqualTo_</td></tr><tr><td>></td><td>Calls lazily Action1 > Action2</td><td>Greater_</td></tr><tr><td>>=</td><td>Calls lazily Action1 >= Action2</td><td>Greater_Equal_</td></tr><tr><td><</td><td>Calls lazily Action1 < Action2</td><td>Less_</td></tr><tr><td><=</td><td>Calls lazily Action1 <= Action2</td><td>Less_Equal_</td></tr><tr><td>&</td><td>Calls lazily Action1 & Action2</td><td>Bitwise_And_</td></tr><tr><td>|</td><td>Calls lazily Action1 | Action2</td><td>Bitwise_Or_</td></tr><tr><td>^</td><td>Calls lazily Action1 ^ Action2</td><td>Bitwise_Xor_</td></tr><tr><td>--</td><td>Calls lazily --Action1 / Action1--</td><td>Pre_Dec_ / Post_Dec_</td></tr><tr><td>++</td><td>Calls lazily ++Action1 / Action1++</td><td>Pre_Inc_ / Post_Inc_</td></tr><tr><td>/</td><td>Calls lazily Action1 / Action2</td><td>Divides_</td></tr><tr><td>/=</td><td>Calls lazily Action1 /= Action2</td><td>Divides_Assign_</td></tr><tr><td>*</td><td>Calls lazily Action1 * Action2</td><td>Multiplies_</td></tr><tr><td>*=</td><td>Calls lazily Action1 *= Action2</td><td>Multiplies_Assign_</td></tr><tr><td>+ (binary)</td><td>Calls lazily Action1 + Action2</td><td>Plus_</td></tr><tr><td>+ (unary)</td><td>Calls lazily +Action1</td><td>Unary_Plus_</td></tr><tr><td>+=</td><td>Calls lazily Action1 += Action2</td><td>Plus_Assign_</td></tr><tr><td>- (binary)</td><td>Calls lazily Action1 - Action2</td><td>Minus_</td></tr><tr><td>- (unary)</td><td>Calls lazily -Action1</td><td>Unary_Minus_</td></tr><tr><td>-=</td><td>Calls lazily Action1 -= Action2</td><td>Minus_Assign_</td></tr><tr><td>%</td><td>Calls lazily Action1 % Action2</td><td>Modulus_</td></tr><tr><td>%=</td><td>Calls lazily Action1 %= Action2</td><td>Modulus_Assign_</td></tr><tr><td>>></td><td>Calls lazily Action1 >> Action2</td><td>ShiftRight_</td></tr><tr><td>>>=</td><td>Calls lazily Action1 >>= Action2</td><td>ShiftRight_Assign_</td></tr><tr><td><<</td><td>Calls lazily Action1 << Action2</td><td>ShiftLeft_</td></tr><tr><td><<=</td><td>Calls lazily Action1 <<= Action2</td><td>ShiftLeft_Assign_</td></tr><tr><td>[] (works on vector, map, arrays)</td><td>Calls lazily Action1 [Action2]</td><td>Subscript_</td></tr><tr><td>if_then_else_(Condition,Action1,Action2)</td><td>Returns either the result of calling Action1 or the result of
|
||||
<title>Chapter 10. eUML operators and basic helpers</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="ch09.html" title="Chapter 9. External references to MSM"><link rel="next" href="ch11.html" title="Chapter 11. Functional programming"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. eUML operators and basic helpers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch09.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="ch11.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 10. eUML operators and basic helpers"><div class="titlepage"><div><div><h2 class="title"><a name="d0e3686"></a>Chapter 10. eUML operators and basic helpers</h2></div></div></div><p>The following table lists the supported operators: </p><p>
|
||||
</p><div class="table"><a name="d0e3693"></a><p class="title"><b>Table 10.1. Operators and state machine helpers</b></p><div class="table-contents"><table summary="Operators and state machine helpers" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>eUML function / operator</th><th>Description</th><th>Functor</th></tr></thead><tbody><tr><td>&&</td><td>Calls lazily Action1&& Action2</td><td>And_</td></tr><tr><td>||</td><td>Calls lazily Action1|| Action2</td><td>Or_</td></tr><tr><td>!</td><td>Calls lazily !Action1</td><td>Not_</td></tr><tr><td>!=</td><td>Calls lazily Action1 != Action2</td><td>NotEqualTo_</td></tr><tr><td>==</td><td>Calls lazily Action1 == Action2</td><td>EqualTo_</td></tr><tr><td>></td><td>Calls lazily Action1 > Action2</td><td>Greater_</td></tr><tr><td>>=</td><td>Calls lazily Action1 >= Action2</td><td>Greater_Equal_</td></tr><tr><td><</td><td>Calls lazily Action1 < Action2</td><td>Less_</td></tr><tr><td><=</td><td>Calls lazily Action1 <= Action2</td><td>Less_Equal_</td></tr><tr><td>&</td><td>Calls lazily Action1 & Action2</td><td>Bitwise_And_</td></tr><tr><td>|</td><td>Calls lazily Action1 | Action2</td><td>Bitwise_Or_</td></tr><tr><td>^</td><td>Calls lazily Action1 ^ Action2</td><td>Bitwise_Xor_</td></tr><tr><td>--</td><td>Calls lazily --Action1 / Action1--</td><td>Pre_Dec_ / Post_Dec_</td></tr><tr><td>++</td><td>Calls lazily ++Action1 / Action1++</td><td>Pre_Inc_ / Post_Inc_</td></tr><tr><td>/</td><td>Calls lazily Action1 / Action2</td><td>Divides_</td></tr><tr><td>/=</td><td>Calls lazily Action1 /= Action2</td><td>Divides_Assign_</td></tr><tr><td>*</td><td>Calls lazily Action1 * Action2</td><td>Multiplies_</td></tr><tr><td>*=</td><td>Calls lazily Action1 *= Action2</td><td>Multiplies_Assign_</td></tr><tr><td>+ (binary)</td><td>Calls lazily Action1 + Action2</td><td>Plus_</td></tr><tr><td>+ (unary)</td><td>Calls lazily +Action1</td><td>Unary_Plus_</td></tr><tr><td>+=</td><td>Calls lazily Action1 += Action2</td><td>Plus_Assign_</td></tr><tr><td>- (binary)</td><td>Calls lazily Action1 - Action2</td><td>Minus_</td></tr><tr><td>- (unary)</td><td>Calls lazily -Action1</td><td>Unary_Minus_</td></tr><tr><td>-=</td><td>Calls lazily Action1 -= Action2</td><td>Minus_Assign_</td></tr><tr><td>%</td><td>Calls lazily Action1 % Action2</td><td>Modulus_</td></tr><tr><td>%=</td><td>Calls lazily Action1 %= Action2</td><td>Modulus_Assign_</td></tr><tr><td>>></td><td>Calls lazily Action1 >> Action2</td><td>ShiftRight_</td></tr><tr><td>>>=</td><td>Calls lazily Action1 >>= Action2</td><td>ShiftRight_Assign_</td></tr><tr><td><<</td><td>Calls lazily Action1 << Action2</td><td>ShiftLeft_</td></tr><tr><td><<=</td><td>Calls lazily Action1 <<= Action2</td><td>ShiftLeft_Assign_</td></tr><tr><td>[] (works on vector, map, arrays)</td><td>Calls lazily Action1 [Action2]</td><td>Subscript_</td></tr><tr><td>if_then_else_(Condition,Action1,Action2)</td><td>Returns either the result of calling Action1 or the result of
|
||||
calling Action2</td><td>If_Else_</td></tr><tr><td>if_then_(Condition,Action)</td><td>Returns the result of calling Action if Condition</td><td>If_Then_</td></tr><tr><td>while_(Condition, Body)</td><td>While Condition(), calls Body(). Returns nothing</td><td>While_Do_</td></tr><tr><td>do_while_(Condition, Body)</td><td>Calls Body() while Condition(). Returns nothing</td><td>Do_While_</td></tr><tr><td>for_(Begin,Stop,EndLoop,Body)</td><td>Calls for(Begin;Stop;EndLoop){Body;}</td><td>For_Loop_</td></tr><tr><td>process_(Event [,fsm1] [,fsm2] [,fsm3] [,fsm4])</td><td>Processes Event on the current state machine (if no fsm
|
||||
specified) or on up to 4 state machines returned by an
|
||||
appropriate functor.</td><td>Process_</td></tr><tr><td>process2_(Event, Data [,fsm1] [,fsm2] [,fsm3])</td><td>Processes Event on the current state machine (if no fsm
|
||||
|
@ -1,33 +1,33 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Chapter 11. Functional programming</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="ch10.html" title="Chapter 10. eUML operators and basic helpers"><link rel="next" href="re01.html" title="Common headers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11.
|
||||
Functional programming </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch10.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="re01.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 11. Functional programming"><div class="titlepage"><div><div><h2 class="title"><a name="d0e4014"></a>Chapter 11.
|
||||
Functional programming </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch10.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="re01.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 11. Functional programming"><div class="titlepage"><div><div><h2 class="title"><a name="d0e4030"></a>Chapter 11.
|
||||
<span class="command"><strong><a name="eUML-STL-all"></a></strong></span>Functional programming </h2></div></div></div><p>To use these functions, you need to include: </p><p><code class="code">#include <msm/front/euml/stl.hpp></code></p><p>or the specified header in the following tables.</p><p>The following tables list the supported STL algorithms: </p><p>
|
||||
<span class="command"><strong><a name="eUML-STL-querying"></a></strong></span>
|
||||
</p><div class="table"><a name="d0e4032"></a><p class="title"><b>Table 11.1. STL algorithms</b></p><div class="table-contents"><table summary="STL algorithms" border="1"><colgroup><col><col></colgroup><thead><tr><th>STL algorithms in querying.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>find_(first, last, value)</td><td>Find_</td></tr><tr><td>find_if_(first, last, value)</td><td>FindIf_</td></tr><tr><td>lower_bound_(first, last, value [,opᵃ])</td><td>LowerBound_</td></tr><tr><td>upper_bound_(first, last, value [,opᵃ])</td><td>UpperBound_</td></tr><tr><td>equal_range_(first, last, value [,opᵃ])</td><td>EqualRange_</td></tr><tr><td>binary_search_(first, last, value [,opᵃ])</td><td>BinarySearch_</td></tr><tr><td>min_element_(first, last[,opᵃ])</td><td>MinElement_</td></tr><tr><td>max_element_(first, last[,opᵃ])</td><td>MaxElement_</td></tr><tr><td>adjacent_find_(first, last[,opᵃ])</td><td>AdjacentFind_</td></tr><tr><td>find_end_( first1, last1, first2, last2 [,op ᵃ])</td><td>FindEnd_</td></tr><tr><td>find_first_of_( first1, last1, first2, last2 [,op ᵃ])</td><td>FindFirstOf_</td></tr><tr><td>equal_( first1, last1, first2 [,op ᵃ])</td><td>Equal_</td></tr><tr><td>search_( first1, last1, first2, last2 [,op ᵃ])</td><td>Search_</td></tr><tr><td>includes_( first1, last1, first2, last2 [,op ᵃ])</td><td>Includes_</td></tr><tr><td>lexicographical_compare_ ( first1, last1, first2, last2 [,op
|
||||
</p><div class="table"><a name="d0e4048"></a><p class="title"><b>Table 11.1. STL algorithms</b></p><div class="table-contents"><table summary="STL algorithms" border="1"><colgroup><col><col></colgroup><thead><tr><th>STL algorithms in querying.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>find_(first, last, value)</td><td>Find_</td></tr><tr><td>find_if_(first, last, value)</td><td>FindIf_</td></tr><tr><td>lower_bound_(first, last, value [,opᵃ])</td><td>LowerBound_</td></tr><tr><td>upper_bound_(first, last, value [,opᵃ])</td><td>UpperBound_</td></tr><tr><td>equal_range_(first, last, value [,opᵃ])</td><td>EqualRange_</td></tr><tr><td>binary_search_(first, last, value [,opᵃ])</td><td>BinarySearch_</td></tr><tr><td>min_element_(first, last[,opᵃ])</td><td>MinElement_</td></tr><tr><td>max_element_(first, last[,opᵃ])</td><td>MaxElement_</td></tr><tr><td>adjacent_find_(first, last[,opᵃ])</td><td>AdjacentFind_</td></tr><tr><td>find_end_( first1, last1, first2, last2 [,op ᵃ])</td><td>FindEnd_</td></tr><tr><td>find_first_of_( first1, last1, first2, last2 [,op ᵃ])</td><td>FindFirstOf_</td></tr><tr><td>equal_( first1, last1, first2 [,op ᵃ])</td><td>Equal_</td></tr><tr><td>search_( first1, last1, first2, last2 [,op ᵃ])</td><td>Search_</td></tr><tr><td>includes_( first1, last1, first2, last2 [,op ᵃ])</td><td>Includes_</td></tr><tr><td>lexicographical_compare_ ( first1, last1, first2, last2 [,op
|
||||
ᵃ]) </td><td>LexicographicalCompare_</td></tr><tr><td>count_(first, last, value [,size])</td><td>Count_</td></tr><tr><td>count_if_(first, last, op ᵃ [,size])</td><td>CountIf_</td></tr><tr><td>distance_(first, last)</td><td>Distance_</td></tr><tr><td>mismatch _( first1, last1, first2 [,op ᵃ])</td><td>Mismatch_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><p>
|
||||
<span class="command"><strong><a name="eUML-STL-iteration"></a></strong></span>
|
||||
</p><div class="table"><a name="d0e4145"></a><p class="title"><b>Table 11.2. STL algorithms</b></p><div class="table-contents"><table summary="STL algorithms" border="1"><colgroup><col><col></colgroup><thead><tr><th>STL algorithms in iteration.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>for_each_(first,last, unary opᵃ)</td><td>ForEach_</td></tr><tr><td>accumulate_first, last, init [,opᵃ])</td><td>Accumulate_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><div class="table"><a name="d0e4161"></a><p class="title"><b>Table 11.2. STL algorithms</b></p><div class="table-contents"><table summary="STL algorithms" border="1"><colgroup><col><col></colgroup><thead><tr><th>STL algorithms in iteration.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>for_each_(first,last, unary opᵃ)</td><td>ForEach_</td></tr><tr><td>accumulate_first, last, init [,opᵃ])</td><td>Accumulate_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><p>
|
||||
<span class="command"><strong><a name="eUML-STL-transformation"></a></strong></span>
|
||||
</p><div class="table"><a name="d0e4173"></a><p class="title"><b>Table 11.3. STL algorithms</b></p><div class="table-contents"><table summary="STL algorithms" border="1"><colgroup><col><col></colgroup><thead><tr><th>STL algorithms in transformation.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>copy_(first, last, result)</td><td>Copy_</td></tr><tr><td>copy_backward_(first, last, result)</td><td>CopyBackward_</td></tr><tr><td>reverse_(first, last)</td><td>Reverse_</td></tr><tr><td>reverse_copy_(first, last , result)</td><td>ReverseCopy_</td></tr><tr><td>remove_(first, last, value)</td><td>Remove_</td></tr><tr><td>remove_if_(first, last , opᵃ)</td><td>RemoveIf_</td></tr><tr><td>remove_copy_(first, last , output, value)</td><td>RemoveCopy_</td></tr><tr><td>remove_copy_if_(first, last, output, opᵃ)</td><td>RemoveCopyIf_</td></tr><tr><td>fill_(first, last, value)</td><td>Fill_</td></tr><tr><td>fill_n_(first, size, value)ᵇ</td><td>FillN_</td></tr><tr><td>generate_(first, last, generatorᵃ)</td><td>Generate_</td></tr><tr><td>generate_(first, size, generatorᵃ)ᵇ</td><td>GenerateN_</td></tr><tr><td>unique_(first, last [,opᵃ])</td><td>Unique_</td></tr><tr><td>unique_copy_(first, last, output [,opᵃ])</td><td>UniqueCopy_</td></tr><tr><td>random_shuffle_(first, last [,opᵃ])</td><td>RandomShuffle_</td></tr><tr><td>rotate_copy_(first, middle, last, output)</td><td>RotateCopy_</td></tr><tr><td>partition_ (first, last [,opᵃ])</td><td>Partition_</td></tr><tr><td>stable_partition_ (first, last [,opᵃ])</td><td>StablePartition_</td></tr><tr><td>stable_sort_(first, last [,opᵃ])</td><td>StableSort_</td></tr><tr><td>sort_(first, last [,opᵃ])</td><td>Sort_</td></tr><tr><td>partial_sort_(first, middle, last [,opᵃ])</td><td>PartialSort_</td></tr><tr><td>partial_sort_copy_ (first, last, res_first, res_last [,opᵃ]) </td><td>PartialSortCopy_</td></tr><tr><td>nth_element_(first, nth, last [,opᵃ])</td><td>NthElement_</td></tr><tr><td>merge_( first1, last1, first2, last2, output [,op ᵃ])</td><td>Merge_</td></tr><tr><td>inplace_merge_(first, middle, last [,opᵃ])</td><td>InplaceMerge_</td></tr><tr><td>set_union_(first1, last1, first2, last2, output [,op
|
||||
</p><div class="table"><a name="d0e4189"></a><p class="title"><b>Table 11.3. STL algorithms</b></p><div class="table-contents"><table summary="STL algorithms" border="1"><colgroup><col><col></colgroup><thead><tr><th>STL algorithms in transformation.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>copy_(first, last, result)</td><td>Copy_</td></tr><tr><td>copy_backward_(first, last, result)</td><td>CopyBackward_</td></tr><tr><td>reverse_(first, last)</td><td>Reverse_</td></tr><tr><td>reverse_copy_(first, last , result)</td><td>ReverseCopy_</td></tr><tr><td>remove_(first, last, value)</td><td>Remove_</td></tr><tr><td>remove_if_(first, last , opᵃ)</td><td>RemoveIf_</td></tr><tr><td>remove_copy_(first, last , output, value)</td><td>RemoveCopy_</td></tr><tr><td>remove_copy_if_(first, last, output, opᵃ)</td><td>RemoveCopyIf_</td></tr><tr><td>fill_(first, last, value)</td><td>Fill_</td></tr><tr><td>fill_n_(first, size, value)ᵇ</td><td>FillN_</td></tr><tr><td>generate_(first, last, generatorᵃ)</td><td>Generate_</td></tr><tr><td>generate_(first, size, generatorᵃ)ᵇ</td><td>GenerateN_</td></tr><tr><td>unique_(first, last [,opᵃ])</td><td>Unique_</td></tr><tr><td>unique_copy_(first, last, output [,opᵃ])</td><td>UniqueCopy_</td></tr><tr><td>random_shuffle_(first, last [,opᵃ])</td><td>RandomShuffle_</td></tr><tr><td>rotate_copy_(first, middle, last, output)</td><td>RotateCopy_</td></tr><tr><td>partition_ (first, last [,opᵃ])</td><td>Partition_</td></tr><tr><td>stable_partition_ (first, last [,opᵃ])</td><td>StablePartition_</td></tr><tr><td>stable_sort_(first, last [,opᵃ])</td><td>StableSort_</td></tr><tr><td>sort_(first, last [,opᵃ])</td><td>Sort_</td></tr><tr><td>partial_sort_(first, middle, last [,opᵃ])</td><td>PartialSort_</td></tr><tr><td>partial_sort_copy_ (first, last, res_first, res_last [,opᵃ]) </td><td>PartialSortCopy_</td></tr><tr><td>nth_element_(first, nth, last [,opᵃ])</td><td>NthElement_</td></tr><tr><td>merge_( first1, last1, first2, last2, output [,op ᵃ])</td><td>Merge_</td></tr><tr><td>inplace_merge_(first, middle, last [,opᵃ])</td><td>InplaceMerge_</td></tr><tr><td>set_union_(first1, last1, first2, last2, output [,op
|
||||
ᵃ])</td><td>SetUnion_</td></tr><tr><td>push_heap_(first, last [,op ᵃ])</td><td>PushHeap_</td></tr><tr><td>pop_heap_(first, last [,op ᵃ])</td><td>PopHeap_</td></tr><tr><td>make_heap_(first, last [,op ᵃ])</td><td>MakeHeap_</td></tr><tr><td>sort_heap_(first, last [,op ᵃ])</td><td>SortHeap_</td></tr><tr><td>next_permutation_(first, last [,op ᵃ])</td><td>NextPermutation_</td></tr><tr><td>prev_permutation_(first, last [,op ᵃ])</td><td>PrevPermutation_</td></tr><tr><td>inner_product_(first1, last1, first2, init [,op1ᵃ] [,op2ᵃ]) </td><td>InnerProduct_</td></tr><tr><td>partial_sum_(first, last, output [,opᵃ])</td><td>PartialSum_</td></tr><tr><td>adjacent_difference_(first, last, output [,opᵃ])</td><td>AdjacentDifference_</td></tr><tr><td>replace_(first, last, old_value, new_value)</td><td>Replace_</td></tr><tr><td>replace_if_(first, last, opᵃ, new_value)</td><td>ReplaceIf_</td></tr><tr><td>replace_copy_(first, last, result, old_value,
|
||||
new_value)</td><td>ReplaceCopy_</td></tr><tr><td>replace_copy_if_(first, last, result, opᵃ, new_value)</td><td>ReplaceCopyIf_</td></tr><tr><td>rotate_(first, middle, last)ᵇ</td><td>Rotate_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><p>
|
||||
<span class="command"><strong><a name="eUML-STL-container"></a></strong></span>
|
||||
</p><div class="table"><a name="d0e4391"></a><p class="title"><b>Table 11.4. STL container methods</b></p><div class="table-contents"><table summary="STL container methods" border="1"><colgroup><col><col></colgroup><thead><tr><th>STL container methods(common) in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>container::reference front_(container)</td><td>Front_</td></tr><tr><td>container::reference back_(container)</td><td>Back_</td></tr><tr><td>container::iterator begin_(container)</td><td>Begin_</td></tr><tr><td>container::iterator end_(container)</td><td>End_</td></tr><tr><td>container::reverse_iterator rbegin_(container)</td><td>RBegin_</td></tr><tr><td>container::reverse_iterator rend_(container)</td><td>REnd_</td></tr><tr><td>void push_back_(container, value)</td><td>Push_Back_</td></tr><tr><td>void pop_back_(container, value)</td><td>Pop_Back_</td></tr><tr><td>void push_front_(container, value)</td><td>Push_Front_</td></tr><tr><td>void pop_front_(container, value)</td><td>Pop_Front_</td></tr><tr><td>void clear_(container)</td><td>Clear_</td></tr><tr><td>size_type capacity_(container)</td><td>Capacity_</td></tr><tr><td>size_type size_(container)</td><td>Size_</td></tr><tr><td>size_type max_size_(container)</td><td>Max_Size_</td></tr><tr><td>void reserve_(container, value)</td><td>Reserve _</td></tr><tr><td>void resize_(container, value)</td><td>Resize _</td></tr><tr><td>iterator insert_(container, pos, value)</td><td>Insert_</td></tr><tr><td>void insert_( container , pos, first, last)</td><td>Insert_</td></tr><tr><td>void insert_( container , pos, number, value)</td><td>Insert_</td></tr><tr><td>void swap_( container , other_container)</td><td>Swap_</td></tr><tr><td>void erase_( container , pos)</td><td>Erase_</td></tr><tr><td>void erase_( container , first, last) </td><td>Erase_</td></tr><tr><td>bool empty_( container)</td><td>Empty_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><div class="table"><a name="d0e4407"></a><p class="title"><b>Table 11.4. STL container methods</b></p><div class="table-contents"><table summary="STL container methods" border="1"><colgroup><col><col></colgroup><thead><tr><th>STL container methods(common) in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>container::reference front_(container)</td><td>Front_</td></tr><tr><td>container::reference back_(container)</td><td>Back_</td></tr><tr><td>container::iterator begin_(container)</td><td>Begin_</td></tr><tr><td>container::iterator end_(container)</td><td>End_</td></tr><tr><td>container::reverse_iterator rbegin_(container)</td><td>RBegin_</td></tr><tr><td>container::reverse_iterator rend_(container)</td><td>REnd_</td></tr><tr><td>void push_back_(container, value)</td><td>Push_Back_</td></tr><tr><td>void pop_back_(container, value)</td><td>Pop_Back_</td></tr><tr><td>void push_front_(container, value)</td><td>Push_Front_</td></tr><tr><td>void pop_front_(container, value)</td><td>Pop_Front_</td></tr><tr><td>void clear_(container)</td><td>Clear_</td></tr><tr><td>size_type capacity_(container)</td><td>Capacity_</td></tr><tr><td>size_type size_(container)</td><td>Size_</td></tr><tr><td>size_type max_size_(container)</td><td>Max_Size_</td></tr><tr><td>void reserve_(container, value)</td><td>Reserve _</td></tr><tr><td>void resize_(container, value)</td><td>Resize _</td></tr><tr><td>iterator insert_(container, pos, value)</td><td>Insert_</td></tr><tr><td>void insert_( container , pos, first, last)</td><td>Insert_</td></tr><tr><td>void insert_( container , pos, number, value)</td><td>Insert_</td></tr><tr><td>void swap_( container , other_container)</td><td>Swap_</td></tr><tr><td>void erase_( container , pos)</td><td>Erase_</td></tr><tr><td>void erase_( container , first, last) </td><td>Erase_</td></tr><tr><td>bool empty_( container)</td><td>Empty_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><p>
|
||||
</p><div class="table"><a name="d0e4522"></a><p class="title"><b>Table 11.5. STL list methods</b></p><div class="table-contents"><table summary="STL list methods" border="1"><colgroup><col><col></colgroup><thead><tr><th>std::list methods in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>void list_remove_(container, value)</td><td>ListRemove_</td></tr><tr><td>void list_remove_if_(container, opᵃ)</td><td>ListRemove_If_</td></tr><tr><td>void list_merge_(container, other_list)</td><td>ListMerge_</td></tr><tr><td>void list_merge_(container, other_list, opᵃ)</td><td>ListMerge_</td></tr><tr><td>void splice_(container, iterator, other_list)</td><td>Splice_</td></tr><tr><td>void splice_(container, iterator, other_list,
|
||||
</p><div class="table"><a name="d0e4538"></a><p class="title"><b>Table 11.5. STL list methods</b></p><div class="table-contents"><table summary="STL list methods" border="1"><colgroup><col><col></colgroup><thead><tr><th>std::list methods in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>void list_remove_(container, value)</td><td>ListRemove_</td></tr><tr><td>void list_remove_if_(container, opᵃ)</td><td>ListRemove_If_</td></tr><tr><td>void list_merge_(container, other_list)</td><td>ListMerge_</td></tr><tr><td>void list_merge_(container, other_list, opᵃ)</td><td>ListMerge_</td></tr><tr><td>void splice_(container, iterator, other_list)</td><td>Splice_</td></tr><tr><td>void splice_(container, iterator, other_list,
|
||||
iterator)</td><td>Splice_</td></tr><tr><td>void splice_(container, iterator, other_list, first,
|
||||
last)</td><td>Splice_</td></tr><tr><td>void list_reverse_(container)</td><td>ListReverse_</td></tr><tr><td>void list_unique_(container)</td><td>ListUnique_</td></tr><tr><td>void list_unique_(container, opᵃ)</td><td>ListUnique_</td></tr><tr><td>void list_sort_(container)</td><td>ListSort_</td></tr><tr><td>void list_sort_(container, opᵃ)</td><td>ListSort_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><p>
|
||||
</p><div class="table"><a name="d0e4598"></a><p class="title"><b>Table 11.6. STL associative container methods </b></p><div class="table-contents"><table summary="STL associative container methods " border="1"><colgroup><col><col></colgroup><thead><tr><th>Associative container methods in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>iterator insert_(container, pos, value)</td><td>Insert_</td></tr><tr><td>void insert_( container , first, last)</td><td>Insert_</td></tr><tr><td>pair<iterator, bool> insert_( container , value)</td><td>Insert_</td></tr><tr><td>void associative_erase_( container , pos)</td><td>Associative_Erase_</td></tr><tr><td>void associative_erase_( container , first, last)</td><td>Associative_Erase_</td></tr><tr><td>size_type associative_erase_( container , key)</td><td>Associative_Erase_</td></tr><tr><td>iterator associative_find_( container , key)</td><td>Associative_Find_</td></tr><tr><td>size_type associative_count_( container , key)</td><td>AssociativeCount_</td></tr><tr><td>iterator associative_lower_bound_( container , key)</td><td>Associative_Lower_Bound_</td></tr><tr><td>iterator associative_upper_bound_( container , key)</td><td>Associative_Upper_Bound_</td></tr><tr><td>pair<iterator, iterator> associative_equal_range_(
|
||||
</p><div class="table"><a name="d0e4614"></a><p class="title"><b>Table 11.6. STL associative container methods </b></p><div class="table-contents"><table summary="STL associative container methods " border="1"><colgroup><col><col></colgroup><thead><tr><th>Associative container methods in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>iterator insert_(container, pos, value)</td><td>Insert_</td></tr><tr><td>void insert_( container , first, last)</td><td>Insert_</td></tr><tr><td>pair<iterator, bool> insert_( container , value)</td><td>Insert_</td></tr><tr><td>void associative_erase_( container , pos)</td><td>Associative_Erase_</td></tr><tr><td>void associative_erase_( container , first, last)</td><td>Associative_Erase_</td></tr><tr><td>size_type associative_erase_( container , key)</td><td>Associative_Erase_</td></tr><tr><td>iterator associative_find_( container , key)</td><td>Associative_Find_</td></tr><tr><td>size_type associative_count_( container , key)</td><td>AssociativeCount_</td></tr><tr><td>iterator associative_lower_bound_( container , key)</td><td>Associative_Lower_Bound_</td></tr><tr><td>iterator associative_upper_bound_( container , key)</td><td>Associative_Upper_Bound_</td></tr><tr><td>pair<iterator, iterator> associative_equal_range_(
|
||||
container , key)</td><td>Associative_Equal_Range_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><p>
|
||||
</p><div class="table"><a name="d0e4669"></a><p class="title"><b>Table 11.7. STL pair</b></p><div class="table-contents"><table summary="STL pair" border="1"><colgroup><col><col></colgroup><thead><tr><th>std::pair in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>first_type first_(pair<T1, T2>)</td><td>First_</td></tr><tr><td>second_type second_(pair<T1, T2>)</td><td>Second_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><div class="table"><a name="d0e4685"></a><p class="title"><b>Table 11.7. STL pair</b></p><div class="table-contents"><table summary="STL pair" border="1"><colgroup><col><col></colgroup><thead><tr><th>std::pair in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>first_type first_(pair<T1, T2>)</td><td>First_</td></tr><tr><td>second_type second_(pair<T1, T2>)</td><td>Second_</td></tr></tbody></table></div></div><p><br class="table-break">
|
||||
</p><p>
|
||||
</p><div class="table"><a name="d0e4695"></a><p class="title"><b>Table 11.8. STL string</b></p><div class="table-contents"><table summary="STL string" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>STL string method</th><th>std::string method in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>substr (size_type pos, size_type size)</td><td>string substr_(container, pos, length)</td><td>Substr_</td></tr><tr><td>int compare(string)</td><td>int string_compare_(container, another_string)</td><td>StringCompare_</td></tr><tr><td>int compare(char*)</td><td>int string_compare_(container, another_string)</td><td>StringCompare_</td></tr><tr><td>int compare(size_type pos, size_type size, string)</td><td>int string_compare_(container, pos, size,
|
||||
</p><div class="table"><a name="d0e4711"></a><p class="title"><b>Table 11.8. STL string</b></p><div class="table-contents"><table summary="STL string" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>STL string method</th><th>std::string method in container.hpp</th><th>Functor</th></tr></thead><tbody><tr><td>substr (size_type pos, size_type size)</td><td>string substr_(container, pos, length)</td><td>Substr_</td></tr><tr><td>int compare(string)</td><td>int string_compare_(container, another_string)</td><td>StringCompare_</td></tr><tr><td>int compare(char*)</td><td>int string_compare_(container, another_string)</td><td>StringCompare_</td></tr><tr><td>int compare(size_type pos, size_type size, string)</td><td>int string_compare_(container, pos, size,
|
||||
another_string)</td><td>StringCompare_</td></tr><tr><td>int compare (size_type pos, size_type size, string, size_type
|
||||
length)</td><td>int string_compare_(container, pos, size, another_string,
|
||||
length)</td><td>StringCompare_</td></tr><tr><td>string& append(const string&)</td><td>string& append_(container, another_string)</td><td>Append_</td></tr><tr><td>string& append (charT*)</td><td>string& append_(container, another_string)</td><td>Append_</td></tr><tr><td>string& append (string , size_type pos, size_type
|
||||
|
@ -7,7 +7,7 @@
|
||||
History </a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e208">Completion transitions / anonymous
|
||||
transitions</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e220"> Internal transitions </a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e226">
|
||||
Conflicting transitions </a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s03.html">Added concepts</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">State machine glossary</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Tutorial</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#d0e325">Design</a></span></dt><dt><span class="sect1"><a href="ch03s02.html">Basic front-end</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s02.html#d0e344">A simple example</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e358">Transition table</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e406">Defining states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e419">What do you actually do inside actions / guards?</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e471">Defining a simple state machine</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e529">Defining a submachine</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e577">Orthogonal regions, terminate state, event deferring</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e668">History</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e713">Completion (anonymous) transitions</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e740">Internal transitions</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e842">more row types</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e875">Explicit entry / entry and exit pseudo-state / fork</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1064">Flags</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1126">Event Hierarchy</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1147">Customizing a state machine / Getting more speed</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1196">Choosing the initial event</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1209"> Containing state machine (deprecated)</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">Functor front-end</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#d0e1248"> Transition table </a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1281">Defining states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1300">What do you actually do inside actions / guards (Part 2)?</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1312">Defining a simple state machine</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1320">Anonymous transitions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1346">Internal
|
||||
transitions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1392">Kleene (any) event</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">eUML (experimental)</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#d0e1462">Transition table</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1503">A simple example: rewriting only our transition table </a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1536">Defining events, actions and states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1649">Wrapping up a simple state machine and first complete examples</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1697">Defining a submachine</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1713">
|
||||
transitions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1392">Kleene (any) event</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">eUML</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#d0e1462">Transition table</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1503">A simple example: rewriting only our transition table </a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1536">Defining events, actions and states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1649">Wrapping up a simple state machine and first complete examples</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1697">Defining a submachine</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1713">
|
||||
Attributes / Function call</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1813">Orthogonal regions, flags, event deferring</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1925">
|
||||
Customizing a state machine / Getting
|
||||
more speed</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1960">Completion / Anonymous transitions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1978">Internal transitions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2009">Kleene(any) event)</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2024">Other state types</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2088">Helper functions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2191">Phoenix-like STL support</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2244">Writing actions with Boost.Phoenix (in development)</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s05.html">Back-end</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s05.html#d0e2303">Creation </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2312">Starting and stopping a state
|
||||
@ -15,5 +15,5 @@
|
||||
better compile-time / multi-TU compilation</a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2624">Compile-time state machine analysis </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2668"> Enqueueing events for later
|
||||
processing </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2688"> Customizing the message queues </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2703">Policy definition with Boost.Parameter </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2711">Choosing when to switch active
|
||||
states </a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Performance / Compilers</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#d0e2792">Speed</a></span></dt><dt><span class="sect1"><a href="ch04s02.html">Executable size</a></span></dt><dt><span class="sect1"><a href="ch04s03.html">Supported compilers</a></span></dt><dt><span class="sect1"><a href="ch04s04.html"> Limitations </a></span></dt><dt><span class="sect1"><a href="ch04s05.html"> Compilers corner </a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Questions & Answers, tips</a></span></dt><dt><span class="chapter"><a href="ch06.html">6. Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch06.html#d0e3010">Backend: Run To Completion</a></span></dt><dt><span class="sect1"><a href="ch06s02.html">Frontend / Backend
|
||||
interface</a></span></dt><dt><span class="sect1"><a href="ch06s03.html"> Generated state ids </a></span></dt><dt><span class="sect1"><a href="ch06s04.html">Metaprogramming tools</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. Acknowledgements</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch07.html#d0e3305">MSM v2</a></span></dt><dt><span class="sect1"><a href="ch07s02.html"> MSM v1</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. Version history</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch08.html#d0e3352">From V2.25 to V2.26 (Boost 1.55)</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">From V2.24 to V2.25 (Boost 1.54)</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">From V2.23 to V2.24 (Boost 1.51)</a></span></dt><dt><span class="sect1"><a href="ch08s04.html">From V2.22 to V2.23 (Boost 1.50)</a></span></dt><dt><span class="sect1"><a href="ch08s05.html">From V2.21 to V2.22 (Boost 1.48)</a></span></dt><dt><span class="sect1"><a href="ch08s06.html">From V2.20 to V2.21 (Boost 1.47)</a></span></dt><dt><span class="sect1"><a href="ch08s07.html">From V2.12 to V2.20 (Boost 1.46)</a></span></dt><dt><span class="sect1"><a href="ch08s08.html">From V2.10 to V2.12 (Boost 1.45)</a></span></dt><dt><span class="sect1"><a href="ch08s09.html">From V2.0 to V2.12 (Boost 1.44)</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt02.html">II. Reference</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch09.html">9. External references to MSM</a></span></dt><dt><span class="chapter"><a href="ch10.html">10. eUML operators and basic helpers</a></span></dt><dt><span class="chapter"><a href="ch11.html">11.
|
||||
Functional programming </a></span></dt><dt><span class="refentrytitle"><a href="re01.html">Common headers</a></span><span class="refpurpose"> — The common types used by front- and back-ends</span></dt><dt><span class="refentrytitle"><a href="re02.html">Back-end</a></span><span class="refpurpose"> — The back-end headers</span></dt><dt><span class="refentrytitle"><a href="re03.html">Front-end</a></span><span class="refpurpose"> — The front-end headers</span></dt></dl></dd></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>10.1. <a href="ch10.html#d0e3677">Operators and state machine helpers</a></dt><dt>11.1. <a href="ch11.html#d0e4032">STL algorithms</a></dt><dt>11.2. <a href="ch11.html#d0e4145">STL algorithms</a></dt><dt>11.3. <a href="ch11.html#d0e4173">STL algorithms</a></dt><dt>11.4. <a href="ch11.html#d0e4391">STL container methods</a></dt><dt>11.5. <a href="ch11.html#d0e4522">STL list methods</a></dt><dt>11.6. <a href="ch11.html#d0e4598">STL associative container methods </a></dt><dt>11.7. <a href="ch11.html#d0e4669">STL pair</a></dt><dt>11.8. <a href="ch11.html#d0e4695">STL string</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Preface</td></tr></table></div></body></html>
|
||||
interface</a></span></dt><dt><span class="sect1"><a href="ch06s03.html"> Generated state ids </a></span></dt><dt><span class="sect1"><a href="ch06s04.html">Metaprogramming tools</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. Acknowledgements</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch07.html#d0e3305">MSM v2</a></span></dt><dt><span class="sect1"><a href="ch07s02.html"> MSM v1</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. Version history</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch08.html#d0e3352">From V2.26 to V2.27 (Boost 1.56)</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">From V2.25 to V2.26 (Boost 1.55)</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">From V2.24 to V2.25 (Boost 1.54)</a></span></dt><dt><span class="sect1"><a href="ch08s04.html">From V2.23 to V2.24 (Boost 1.51)</a></span></dt><dt><span class="sect1"><a href="ch08s05.html">From V2.22 to V2.23 (Boost 1.50)</a></span></dt><dt><span class="sect1"><a href="ch08s06.html">From V2.21 to V2.22 (Boost 1.48)</a></span></dt><dt><span class="sect1"><a href="ch08s07.html">From V2.20 to V2.21 (Boost 1.47)</a></span></dt><dt><span class="sect1"><a href="ch08s08.html">From V2.12 to V2.20 (Boost 1.46)</a></span></dt><dt><span class="sect1"><a href="ch08s09.html">From V2.10 to V2.12 (Boost 1.45)</a></span></dt><dt><span class="sect1"><a href="ch08s10.html">From V2.0 to V2.12 (Boost 1.44)</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt02.html">II. Reference</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch09.html">9. External references to MSM</a></span></dt><dt><span class="chapter"><a href="ch10.html">10. eUML operators and basic helpers</a></span></dt><dt><span class="chapter"><a href="ch11.html">11.
|
||||
Functional programming </a></span></dt><dt><span class="refentrytitle"><a href="re01.html">Common headers</a></span><span class="refpurpose"> — The common types used by front- and back-ends</span></dt><dt><span class="refentrytitle"><a href="re02.html">Back-end</a></span><span class="refpurpose"> — The back-end headers</span></dt><dt><span class="refentrytitle"><a href="re03.html">Front-end</a></span><span class="refpurpose"> — The front-end headers</span></dt></dl></dd></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>10.1. <a href="ch10.html#d0e3693">Operators and state machine helpers</a></dt><dt>11.1. <a href="ch11.html#d0e4048">STL algorithms</a></dt><dt>11.2. <a href="ch11.html#d0e4161">STL algorithms</a></dt><dt>11.3. <a href="ch11.html#d0e4189">STL algorithms</a></dt><dt>11.4. <a href="ch11.html#d0e4407">STL container methods</a></dt><dt>11.5. <a href="ch11.html#d0e4538">STL list methods</a></dt><dt>11.6. <a href="ch11.html#d0e4614">STL associative container methods </a></dt><dt>11.7. <a href="ch11.html#d0e4685">STL pair</a></dt><dt>11.8. <a href="ch11.html#d0e4711">STL string</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Preface</td></tr></table></div></body></html>
|
@ -4,7 +4,7 @@
|
||||
History </a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e208">Completion transitions / anonymous
|
||||
transitions</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e220"> Internal transitions </a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e226">
|
||||
Conflicting transitions </a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s03.html">Added concepts</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">State machine glossary</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Tutorial</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#d0e325">Design</a></span></dt><dt><span class="sect1"><a href="ch03s02.html">Basic front-end</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s02.html#d0e344">A simple example</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e358">Transition table</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e406">Defining states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e419">What do you actually do inside actions / guards?</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e471">Defining a simple state machine</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e529">Defining a submachine</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e577">Orthogonal regions, terminate state, event deferring</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e668">History</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e713">Completion (anonymous) transitions</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e740">Internal transitions</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e842">more row types</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e875">Explicit entry / entry and exit pseudo-state / fork</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1064">Flags</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1126">Event Hierarchy</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1147">Customizing a state machine / Getting more speed</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1196">Choosing the initial event</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#d0e1209"> Containing state machine (deprecated)</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">Functor front-end</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#d0e1248"> Transition table </a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1281">Defining states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1300">What do you actually do inside actions / guards (Part 2)?</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1312">Defining a simple state machine</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1320">Anonymous transitions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1346">Internal
|
||||
transitions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1392">Kleene (any) event</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">eUML (experimental)</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#d0e1462">Transition table</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1503">A simple example: rewriting only our transition table </a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1536">Defining events, actions and states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1649">Wrapping up a simple state machine and first complete examples</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1697">Defining a submachine</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1713">
|
||||
transitions</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#d0e1392">Kleene (any) event</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">eUML</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#d0e1462">Transition table</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1503">A simple example: rewriting only our transition table </a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1536">Defining events, actions and states with entry/exit actions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1649">Wrapping up a simple state machine and first complete examples</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1697">Defining a submachine</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1713">
|
||||
Attributes / Function call</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1813">Orthogonal regions, flags, event deferring</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1925">
|
||||
Customizing a state machine / Getting
|
||||
more speed</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1960">Completion / Anonymous transitions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e1978">Internal transitions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2009">Kleene(any) event)</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2024">Other state types</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2088">Helper functions</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2191">Phoenix-like STL support</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#d0e2244">Writing actions with Boost.Phoenix (in development)</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s05.html">Back-end</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s05.html#d0e2303">Creation </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2312">Starting and stopping a state
|
||||
@ -12,4 +12,4 @@
|
||||
better compile-time / multi-TU compilation</a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2624">Compile-time state machine analysis </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2668"> Enqueueing events for later
|
||||
processing </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2688"> Customizing the message queues </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2703">Policy definition with Boost.Parameter </a></span></dt><dt><span class="sect2"><a href="ch03s05.html#d0e2711">Choosing when to switch active
|
||||
states </a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Performance / Compilers</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#d0e2792">Speed</a></span></dt><dt><span class="sect1"><a href="ch04s02.html">Executable size</a></span></dt><dt><span class="sect1"><a href="ch04s03.html">Supported compilers</a></span></dt><dt><span class="sect1"><a href="ch04s04.html"> Limitations </a></span></dt><dt><span class="sect1"><a href="ch04s05.html"> Compilers corner </a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Questions & Answers, tips</a></span></dt><dt><span class="chapter"><a href="ch06.html">6. Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch06.html#d0e3010">Backend: Run To Completion</a></span></dt><dt><span class="sect1"><a href="ch06s02.html">Frontend / Backend
|
||||
interface</a></span></dt><dt><span class="sect1"><a href="ch06s03.html"> Generated state ids </a></span></dt><dt><span class="sect1"><a href="ch06s04.html">Metaprogramming tools</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. Acknowledgements</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch07.html#d0e3305">MSM v2</a></span></dt><dt><span class="sect1"><a href="ch07s02.html"> MSM v1</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. Version history</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch08.html#d0e3352">From V2.25 to V2.26 (Boost 1.55)</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">From V2.24 to V2.25 (Boost 1.54)</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">From V2.23 to V2.24 (Boost 1.51)</a></span></dt><dt><span class="sect1"><a href="ch08s04.html">From V2.22 to V2.23 (Boost 1.50)</a></span></dt><dt><span class="sect1"><a href="ch08s05.html">From V2.21 to V2.22 (Boost 1.48)</a></span></dt><dt><span class="sect1"><a href="ch08s06.html">From V2.20 to V2.21 (Boost 1.47)</a></span></dt><dt><span class="sect1"><a href="ch08s07.html">From V2.12 to V2.20 (Boost 1.46)</a></span></dt><dt><span class="sect1"><a href="ch08s08.html">From V2.10 to V2.12 (Boost 1.45)</a></span></dt><dt><span class="sect1"><a href="ch08s09.html">From V2.0 to V2.12 (Boost 1.44)</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Preface </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Founding idea</td></tr></table></div></body></html>
|
||||
interface</a></span></dt><dt><span class="sect1"><a href="ch06s03.html"> Generated state ids </a></span></dt><dt><span class="sect1"><a href="ch06s04.html">Metaprogramming tools</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. Acknowledgements</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch07.html#d0e3305">MSM v2</a></span></dt><dt><span class="sect1"><a href="ch07s02.html"> MSM v1</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. Version history</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch08.html#d0e3352">From V2.26 to V2.27 (Boost 1.56)</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">From V2.25 to V2.26 (Boost 1.55)</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">From V2.24 to V2.25 (Boost 1.54)</a></span></dt><dt><span class="sect1"><a href="ch08s04.html">From V2.23 to V2.24 (Boost 1.51)</a></span></dt><dt><span class="sect1"><a href="ch08s05.html">From V2.22 to V2.23 (Boost 1.50)</a></span></dt><dt><span class="sect1"><a href="ch08s06.html">From V2.21 to V2.22 (Boost 1.48)</a></span></dt><dt><span class="sect1"><a href="ch08s07.html">From V2.20 to V2.21 (Boost 1.47)</a></span></dt><dt><span class="sect1"><a href="ch08s08.html">From V2.12 to V2.20 (Boost 1.46)</a></span></dt><dt><span class="sect1"><a href="ch08s09.html">From V2.10 to V2.12 (Boost 1.45)</a></span></dt><dt><span class="sect1"><a href="ch08s10.html">From V2.0 to V2.12 (Boost 1.44)</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Preface </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Founding idea</td></tr></table></div></body></html>
|
@ -1,4 +1,4 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Part II. Reference</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="index.html" title="Meta State Machine (MSM)"><link rel="prev" href="ch08s09.html" title="From V2.0 to V2.12 (Boost 1.44)"><link rel="next" href="ch09.html" title="Chapter 9. External references to MSM"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. Reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s09.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch09.html">Next</a></td></tr></table><hr></div><div class="part" title="Part II. Reference"><div class="titlepage"><div><div><h1 class="title"><a name="d0e3658"></a>Part II. <span class="command"><strong><a name="Reference-begin"></a></strong></span>Reference</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch09.html">9. External references to MSM</a></span></dt><dt><span class="chapter"><a href="ch10.html">10. eUML operators and basic helpers</a></span></dt><dt><span class="chapter"><a href="ch11.html">11.
|
||||
Functional programming </a></span></dt><dt><span class="refentrytitle"><a href="re01.html">Common headers</a></span><span class="refpurpose"> — The common types used by front- and back-ends</span></dt><dt><span class="refentrytitle"><a href="re02.html">Back-end</a></span><span class="refpurpose"> — The back-end headers</span></dt><dt><span class="refentrytitle"><a href="re03.html">Front-end</a></span><span class="refpurpose"> — The front-end headers</span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s09.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.0 to V2.12 (Boost 1.44) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. External references to MSM</td></tr></table></div></body></html>
|
||||
<title>Part II. Reference</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="index.html" title="Meta State Machine (MSM)"><link rel="prev" href="ch08s10.html" title="From V2.0 to V2.12 (Boost 1.44)"><link rel="next" href="ch09.html" title="Chapter 9. External references to MSM"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. Reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch08s10.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch09.html">Next</a></td></tr></table><hr></div><div class="part" title="Part II. Reference"><div class="titlepage"><div><div><h1 class="title"><a name="d0e3674"></a>Part II. <span class="command"><strong><a name="Reference-begin"></a></strong></span>Reference</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch09.html">9. External references to MSM</a></span></dt><dt><span class="chapter"><a href="ch10.html">10. eUML operators and basic helpers</a></span></dt><dt><span class="chapter"><a href="ch11.html">11.
|
||||
Functional programming </a></span></dt><dt><span class="refentrytitle"><a href="re01.html">Common headers</a></span><span class="refpurpose"> — The common types used by front- and back-ends</span></dt><dt><span class="refentrytitle"><a href="re02.html">Back-end</a></span><span class="refpurpose"> — The back-end headers</span></dt><dt><span class="refentrytitle"><a href="re03.html">Front-end</a></span><span class="refpurpose"> — The front-end headers</span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch08s10.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">From V2.0 to V2.12 (Boost 1.44) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. External references to MSM</td></tr></table></div></body></html>
|
@ -1,8 +1,8 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Common headers</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="ch11.html" title="Chapter 11. Functional programming"><link rel="next" href="re02.html" title="Back-end"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Common headers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch11.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="re02.html">Next</a></td></tr></table><hr></div><div class="refentry" title="Common headers"><a name="d0e5137"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>Common headers — The common types used by front- and back-ends</p></div><div class="refsect1" title="msm/common.hpp"><a name="d0e5143"></a><h2>msm/common.hpp</h2><p>This header provides one type, wrap, which is an empty type whose only reason
|
||||
<title>Common headers</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="ch11.html" title="Chapter 11. Functional programming"><link rel="next" href="re02.html" title="Back-end"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Common headers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch11.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="re02.html">Next</a></td></tr></table><hr></div><div class="refentry" title="Common headers"><a name="d0e5153"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>Common headers — The common types used by front- and back-ends</p></div><div class="refsect1" title="msm/common.hpp"><a name="d0e5159"></a><h2>msm/common.hpp</h2><p>This header provides one type, wrap, which is an empty type whose only reason
|
||||
to exist is to be cheap to construct, so that it can be used with mpl::for_each,
|
||||
as shown in the Metaprogramming book, chapter 9.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Dummy> wrap{};</span></span> {<br>}</pre></div><div class="refsect1" title="msm/row_tags.hpp"><a name="d0e5152"></a><h2>msm/row_tags.hpp</h2><p>This header contains the row type tags which front-ends can support partially
|
||||
as shown in the Metaprogramming book, chapter 9.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Dummy> wrap{};</span></span> {<br>}</pre></div><div class="refsect1" title="msm/row_tags.hpp"><a name="d0e5168"></a><h2>msm/row_tags.hpp</h2><p>This header contains the row type tags which front-ends can support partially
|
||||
or totally. Please see the <span class="command"><strong><a class="command" href="ch06s02.html#internals-front-back-interface">Internals</a></strong></span> section for a description of the different
|
||||
types.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="re02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 11.
|
||||
Functional programming </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Back-end</td></tr></table></div></body></html>
|
@ -1,79 +1,79 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Back-end</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="re01.html" title="Common headers"><link rel="next" href="re03.html" title="Front-end"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Back-end</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re01.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="re03.html">Next</a></td></tr></table><hr></div><div class="refentry" title="Back-end"><a name="d0e5160"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>Back-end — The back-end headers</p></div><div class="refsect1" title="msm/back/state_machine.hpp"><a name="d0e5166"></a><h2>msm/back/state_machine.hpp</h2><p> This header provides one type, state_machine, MSM's state machine engine
|
||||
<title>Back-end</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="re01.html" title="Common headers"><link rel="next" href="re03.html" title="Front-end"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Back-end</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re01.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> <a accesskey="n" href="re03.html">Next</a></td></tr></table><hr></div><div class="refentry" title="Back-end"><a name="d0e5176"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>Back-end — The back-end headers</p></div><div class="refsect1" title="msm/back/state_machine.hpp"><a name="d0e5182"></a><h2>msm/back/state_machine.hpp</h2><p> This header provides one type, state_machine, MSM's state machine engine
|
||||
implementation.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Derived,class HistoryPolicy=NoHistory,class
|
||||
CompilePolicy=favor_runtime_speed> state_machine</span></span> {<br>}</pre><div class="refsect2" title="Template arguments"><a name="d0e5175"></a><h3> Template arguments </h3><div class="refsect3" title="Derived"><a name="d0e5178"></a><h4> Derived </h4><p>The name of the front-end state machine definition. All three
|
||||
front-ends are possible.</p></div><div class="refsect3" title="HistoryPolicy"><a name="d0e5183"></a><h4> HistoryPolicy </h4><p>The desired history. This can be: AlwaysHistory, NoHistory,
|
||||
ShallowHistory. Default is NoHistory.</p></div><div class="refsect3" title="CompilePolicy"><a name="d0e5188"></a><h4> CompilePolicy </h4><p>The trade-off performance / compile-time. There are two predefined
|
||||
CompilePolicy=favor_runtime_speed> state_machine</span></span> {<br>}</pre><div class="refsect2" title="Template arguments"><a name="d0e5191"></a><h3> Template arguments </h3><div class="refsect3" title="Derived"><a name="d0e5194"></a><h4> Derived </h4><p>The name of the front-end state machine definition. All three
|
||||
front-ends are possible.</p></div><div class="refsect3" title="HistoryPolicy"><a name="d0e5199"></a><h4> HistoryPolicy </h4><p>The desired history. This can be: AlwaysHistory, NoHistory,
|
||||
ShallowHistory. Default is NoHistory.</p></div><div class="refsect3" title="CompilePolicy"><a name="d0e5204"></a><h4> CompilePolicy </h4><p>The trade-off performance / compile-time. There are two predefined
|
||||
policies, favor_runtime_speed and favor_compile_time. Default is
|
||||
favor_runtime_speed, best performance, longer compile-time. See <a class="link" href="ch03s05.html#backend-tradeof-rt-ct">the backend</a>.</p></div></div><div class="refsect2" title="methods"><a name="d0e5196"></a><h3> methods </h3><div class="refsect3" title="start"><a name="d0e5199"></a><h4>start</h4><p> The start methods must be called before any call to process_event. It
|
||||
favor_runtime_speed, best performance, longer compile-time. See <a class="link" href="ch03s05.html#backend-tradeof-rt-ct">the backend</a>.</p></div></div><div class="refsect2" title="methods"><a name="d0e5212"></a><h3> methods </h3><div class="refsect3" title="start"><a name="d0e5215"></a><h4>start</h4><p> The start methods must be called before any call to process_event. It
|
||||
activates the entry action of the initial state(s). This allows you to
|
||||
choose when a state machine can start. See <a class="link" href="ch03s05.html#backend-start">backend</a>.</p><code class="methodsynopsis"><span class="methodname">void start</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="process_event"><a name="d0e5212"></a><h4>process_event</h4><p>The event processing method implements the double-dispatch. Each call
|
||||
choose when a state machine can start. See <a class="link" href="ch03s05.html#backend-start">backend</a>.</p><code class="methodsynopsis"><span class="methodname">void start</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="process_event"><a name="d0e5228"></a><h4>process_event</h4><p>The event processing method implements the double-dispatch. Each call
|
||||
to this function with a new event type instantiates a new dispatch
|
||||
algorithm and increases compile-time.</p><code class="methodsynopsis"><span class="methodname">template <class Event> HandledEnum
|
||||
process_event</span>(<span class="methodparam">Event const&</span>);</code></div><div class="refsect3" title="current_state"><a name="d0e5223"></a><h4>current_state</h4><p>Returns the ids of currently active states. You will typically need it
|
||||
only for debugging or logging purposes.</p><code class="methodsynopsis"><span class="methodname">const int* current_state const</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="get_state_by_id"><a name="d0e5233"></a><h4>get_state_by_id</h4><p>Returns the state whose id is given. As all states of a concrete state
|
||||
process_event</span>(<span class="methodparam">Event const&</span>);</code></div><div class="refsect3" title="current_state"><a name="d0e5239"></a><h4>current_state</h4><p>Returns the ids of currently active states. You will typically need it
|
||||
only for debugging or logging purposes.</p><code class="methodsynopsis"><span class="methodname">const int* current_state const</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="get_state_by_id"><a name="d0e5249"></a><h4>get_state_by_id</h4><p>Returns the state whose id is given. As all states of a concrete state
|
||||
machine share a common base state, the return value is a base state. If
|
||||
the id corresponds to no state, a null pointer is returned.</p><code class="methodsynopsis"><span class="methodname">const BaseState* get_state_by_id const</span>(<span class="methodparam">int id</span>);</code></div><div class="refsect3" title="is_contained"><a name="d0e5244"></a><h4>is_contained</h4><p>Helper returning true if the state machine is contained as a
|
||||
submachine of another state machine.</p><code class="methodsynopsis"><span class="methodname">bool is_contained const</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="get_state"><a name="d0e5254"></a><h4>get_state</h4><p>Returns the required state of the state machine as a pointer. A
|
||||
the id corresponds to no state, a null pointer is returned.</p><code class="methodsynopsis"><span class="methodname">const BaseState* get_state_by_id const</span>(<span class="methodparam">int id</span>);</code></div><div class="refsect3" title="is_contained"><a name="d0e5260"></a><h4>is_contained</h4><p>Helper returning true if the state machine is contained as a
|
||||
submachine of another state machine.</p><code class="methodsynopsis"><span class="methodname">bool is_contained const</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="get_state"><a name="d0e5270"></a><h4>get_state</h4><p>Returns the required state of the state machine as a pointer. A
|
||||
compile error will occur if the state is not to be found in the state
|
||||
machine.</p><code class="methodsynopsis"><span class="methodname">template <class State> State* get_state</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="get_state"><a name="d0e5264"></a><h4>get_state</h4><p>Returns the required state of the state machine as a reference. A
|
||||
machine.</p><code class="methodsynopsis"><span class="methodname">template <class State> State* get_state</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="get_state"><a name="d0e5280"></a><h4>get_state</h4><p>Returns the required state of the state machine as a reference. A
|
||||
compile error will occur if the state is not to be found in the state
|
||||
machine.</p><code class="methodsynopsis"><span class="methodname">template <class State> State& get_state</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="is_flag_active"><a name="d0e5274"></a><h4>is_flag_active</h4><p>Returns true if the given flag is currently active. A flag is active
|
||||
machine.</p><code class="methodsynopsis"><span class="methodname">template <class State> State& get_state</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="is_flag_active"><a name="d0e5290"></a><h4>is_flag_active</h4><p>Returns true if the given flag is currently active. A flag is active
|
||||
if the active state of one region is tagged with this flag (using OR as
|
||||
BinaryOp) or active states of <span class="underline">all</span>
|
||||
regions (using AND as BinaryOp)</p><code class="methodsynopsis"><span class="methodname">template <class Flag,class BinaryOp> bool
|
||||
is_flag_active</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="is_flag_active"><a name="d0e5287"></a><h4>is_flag_active</h4><p>Returns true if the given flag is currently active. A flag is active
|
||||
if the active state of one region is tagged with this flag.</p><code class="methodsynopsis"><span class="methodname">template <class Flag> bool is_flag_active</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="visit_current_states"><a name="d0e5297"></a><h4>visit_current_states</h4><p>Visits all active states and their substates. A state is visited using
|
||||
is_flag_active</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="is_flag_active"><a name="d0e5303"></a><h4>is_flag_active</h4><p>Returns true if the given flag is currently active. A flag is active
|
||||
if the active state of one region is tagged with this flag.</p><code class="methodsynopsis"><span class="methodname">template <class Flag> bool is_flag_active</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="visit_current_states"><a name="d0e5313"></a><h4>visit_current_states</h4><p>Visits all active states and their substates. A state is visited using
|
||||
the <code class="code">accept</code> method without argument. The base class of all
|
||||
states must provide an <code class="code">accept_sig</code> type.</p><code class="methodsynopsis"><span class="methodname">void visit_current_states</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="visit_current_states"><a name="d0e5313"></a><h4>visit_current_states</h4><p>Visits all active states and their substates. A state is visited using
|
||||
states must provide an <code class="code">accept_sig</code> type.</p><code class="methodsynopsis"><span class="methodname">void visit_current_states</span>(<span class="methodparam"></span>);</code></div><div class="refsect3" title="visit_current_states"><a name="d0e5329"></a><h4>visit_current_states</h4><p>Visits all active states and their substates. A state is visited using
|
||||
the <code class="code">accept</code> method with arguments. The base class of all
|
||||
states must provide an <code class="code">accept_sig</code> type defining the
|
||||
signature and thus the number and type of the parameters.</p><code class="methodsynopsis"><span class="methodname">void visit_current_states</span>(<span class="methodparam">any-type param1, any-type param2,...</span>);</code></div><div class="refsect3" title="defer_event"><a name="d0e5330"></a><h4>defer_event</h4><p> Defers the provided event. This method can be called only if at least
|
||||
signature and thus the number and type of the parameters.</p><code class="methodsynopsis"><span class="methodname">void visit_current_states</span>(<span class="methodparam">any-type param1, any-type param2,...</span>);</code></div><div class="refsect3" title="defer_event"><a name="d0e5346"></a><h4>defer_event</h4><p> Defers the provided event. This method can be called only if at least
|
||||
one state defers an event or if the state machine provides the
|
||||
<code class="code">activate_deferred_events</code>(see <a class="link" href="examples/Orthogonal-deferred2.cpp" target="_top">example</a>) type
|
||||
either directly or using the deferred_events configuration of eUML
|
||||
(<code class="code">configure_ << deferred_events</code>)</p><code class="methodsynopsis"><span class="methodname">template <class Event> void defer_event</span>(<span class="methodparam">Event const&</span>);</code></div></div><div class="refsect2" title="Types"><a name="d0e5350"></a><h3>Types</h3><div class="refsect3" title="nr_regions"><a name="d0e5353"></a><h4>nr_regions </h4><p>The number of orthogonal regions contained in the state machine</p></div><div class="refsect3" title="entry_pt"><a name="d0e5358"></a><h4>entry_pt</h4><p>This nested type provides the necessary typedef for entry point
|
||||
(<code class="code">configure_ << deferred_events</code>)</p><code class="methodsynopsis"><span class="methodname">template <class Event> void defer_event</span>(<span class="methodparam">Event const&</span>);</code></div></div><div class="refsect2" title="Types"><a name="d0e5366"></a><h3>Types</h3><div class="refsect3" title="nr_regions"><a name="d0e5369"></a><h4>nr_regions </h4><p>The number of orthogonal regions contained in the state machine</p></div><div class="refsect3" title="entry_pt"><a name="d0e5374"></a><h4>entry_pt</h4><p>This nested type provides the necessary typedef for entry point
|
||||
pseudostates.
|
||||
<code class="code">state_machine<...>::entry_pt<state_name></code> is a
|
||||
transition's valid target inside the containing state machine's
|
||||
transition table.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">entry_pt</span></span> {<br>}</pre></div><div class="refsect3" title="exit_pt"><a name="d0e5370"></a><h4>exit_pt</h4><p>This nested type provides the necessary typedef for exit point
|
||||
transition table.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">entry_pt</span></span> {<br>}</pre></div><div class="refsect3" title="exit_pt"><a name="d0e5386"></a><h4>exit_pt</h4><p>This nested type provides the necessary typedef for exit point
|
||||
pseudostates. <code class="code">state_machine<...>::exit_pt<state_name></code>
|
||||
is a transition's valid source inside the containing state machine's
|
||||
transition table.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">exit_pt</span></span> {<br>}</pre></div><div class="refsect3" title="direct"><a name="d0e5382"></a><h4>direct</h4><p>This nested type provides the necessary typedef for an explicit entry
|
||||
transition table.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">exit_pt</span></span> {<br>}</pre></div><div class="refsect3" title="direct"><a name="d0e5398"></a><h4>direct</h4><p>This nested type provides the necessary typedef for an explicit entry
|
||||
inside a submachine.
|
||||
<code class="code">state_machine<...>::direct<state_name></code> is a
|
||||
transition's valid target inside the containing state machine's
|
||||
transition table.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">direct</span></span> {<br>}</pre></div><div class="refsect3" title="stt"><a name="d0e5394"></a><h4>stt</h4><p>Calling state_machine<frontend>::stt returns a mpl::vector
|
||||
transition table.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">direct</span></span> {<br>}</pre></div><div class="refsect3" title="stt"><a name="d0e5410"></a><h4>stt</h4><p>Calling state_machine<frontend>::stt returns a mpl::vector
|
||||
containing the transition table of the state machine. This type can then
|
||||
be used with generate_state_set or generate_event_set.</p></div></div></div><div class="refsect1" title="args.hpp"><a name="d0e5399"></a><h2>args.hpp</h2><p>This header provides one type, args. which provides the necessary types for a
|
||||
visitor implementation.</p></div><div class="refsect1" title="msm/back/history_policies.hpp"><a name="d0e5404"></a><h2><span class="command"><strong><a name="history-interface"></a></strong></span>msm/back/history_policies.hpp</h2><p>This header provides the out-of-the-box history policies supported by MSM.
|
||||
There are 3 such policies.</p><div class="refsect2" title="Every history policy must implement the following methods:"><a name="d0e5410"></a><h3>Every history policy must implement the following methods: </h3><div class="refsect3" title="set_initial_states"><a name="d0e5413"></a><h4> set_initial_states </h4><p> This method is called by msm::back::state_machine when constructed.
|
||||
be used with generate_state_set or generate_event_set.</p></div></div></div><div class="refsect1" title="args.hpp"><a name="d0e5415"></a><h2>args.hpp</h2><p>This header provides one type, args. which provides the necessary types for a
|
||||
visitor implementation.</p></div><div class="refsect1" title="msm/back/history_policies.hpp"><a name="d0e5420"></a><h2><span class="command"><strong><a name="history-interface"></a></strong></span>msm/back/history_policies.hpp</h2><p>This header provides the out-of-the-box history policies supported by MSM.
|
||||
There are 3 such policies.</p><div class="refsect2" title="Every history policy must implement the following methods:"><a name="d0e5426"></a><h3>Every history policy must implement the following methods: </h3><div class="refsect3" title="set_initial_states"><a name="d0e5429"></a><h4> set_initial_states </h4><p> This method is called by msm::back::state_machine when constructed.
|
||||
It gives the policy a chance to save the ids of all initial states
|
||||
(passed as array).</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void set_initial_states(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>
|
||||
<code>(</code>int* const<code>)</code>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect3" title="history_exit"><a name="d0e5427"></a><h4> history_exit </h4><p>This method is called by msm::back::state_machine when the submachine
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect3" title="history_exit"><a name="d0e5443"></a><h4> history_exit </h4><p>This method is called by msm::back::state_machine when the submachine
|
||||
is exited. It gives the policy a chance to remember the ids of the last
|
||||
active substates of this submachine (passed as array).</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void history_exit(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>
|
||||
<code>(</code>int* const<code>)</code>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect3" title="history_entry"><a name="d0e5441"></a><h4> history_entry </h4><p>This method is called by msm::back::state_machine when the submachine
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect3" title="history_entry"><a name="d0e5457"></a><h4> history_entry </h4><p>This method is called by msm::back::state_machine when the submachine
|
||||
is entered. It gives the policy a chance to set the active states
|
||||
according to the policy's aim. The policy gets as parameter the event
|
||||
which activated the submachine and returns an array of active states
|
||||
ids.</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class Event> int* const history_exit(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>
|
||||
<code>(</code>Event const&<code>)</code>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div></div><div class="refsect2" title="Out-of-the-box policies:"><a name="d0e5455"></a><h3>Out-of-the-box policies: </h3><div class="refsect3" title="NoHistory"><a name="d0e5458"></a><h4>NoHistory</h4><p>This policy is the default used by state_machine. No active state of a
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div></div><div class="refsect2" title="Out-of-the-box policies:"><a name="d0e5471"></a><h3>Out-of-the-box policies: </h3><div class="refsect3" title="NoHistory"><a name="d0e5474"></a><h4>NoHistory</h4><p>This policy is the default used by state_machine. No active state of a
|
||||
submachine is remembered and at every new activation of the submachine,
|
||||
the initial state(s) are activated. </p></div><div class="refsect3" title="AlwaysHistory"><a name="d0e5463"></a><h4>AlwaysHistory</h4><p>This policy is a non-UML-standard extension. The active state(s) of a
|
||||
the initial state(s) are activated. </p></div><div class="refsect3" title="AlwaysHistory"><a name="d0e5479"></a><h4>AlwaysHistory</h4><p>This policy is a non-UML-standard extension. The active state(s) of a
|
||||
submachine is (are) always remembered at every new activation of the
|
||||
submachine. </p></div><div class="refsect3" title="ShallowHistory"><a name="d0e5468"></a><h4>ShallowHistory</h4><p>This policy activates the active state(s) of a submachine if the event
|
||||
is found in the policy's event list. </p></div></div></div><div class="refsect1" title="msm/back/default_compile_policy.hpp"><a name="d0e5473"></a><h2>msm/back/default_compile_policy.hpp</h2><p>This header contains the definition of favor_runtime_speed. This policy has
|
||||
submachine. </p></div><div class="refsect3" title="ShallowHistory"><a name="d0e5484"></a><h4>ShallowHistory</h4><p>This policy activates the active state(s) of a submachine if the event
|
||||
is found in the policy's event list. </p></div></div></div><div class="refsect1" title="msm/back/default_compile_policy.hpp"><a name="d0e5489"></a><h2>msm/back/default_compile_policy.hpp</h2><p>This header contains the definition of favor_runtime_speed. This policy has
|
||||
two settings:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Submachines dispatch faster because their transitions are added
|
||||
into their containing machine's transition table instead of simply
|
||||
forwarding events.</p></li><li class="listitem"><p>It solves transition conflicts at compile-time</p></li></ul></div></div><div class="refsect1" title="msm/back/favor_compile_time.hpp"><a name="d0e5485"></a><h2>msm/back/favor_compile_time.hpp</h2><p>This header contains the definition of favor_compile_time. This policy has two settings:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Submachines dispatch is slower because all events, even those with
|
||||
forwarding events.</p></li><li class="listitem"><p>It solves transition conflicts at compile-time</p></li></ul></div></div><div class="refsect1" title="msm/back/favor_compile_time.hpp"><a name="d0e5501"></a><h2>msm/back/favor_compile_time.hpp</h2><p>This header contains the definition of favor_compile_time. This policy has two settings:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Submachines dispatch is slower because all events, even those with
|
||||
no dispatch chance, are forwarded to submachines. In exchange, no
|
||||
row is added into the containing machine's transition table, which
|
||||
reduces compile-time.</p></li><li class="listitem"><p>It solves transition conflicts at run-time.</p></li></ul></div></div><div class="refsect1" title="msm/back/metafunctions.hpp"><a name="d0e5497"></a><h2>msm/back/metafunctions.hpp </h2><p>This header contains metafunctions for use by the library. Three metafunctions
|
||||
reduces compile-time.</p></li><li class="listitem"><p>It solves transition conflicts at run-time.</p></li></ul></div></div><div class="refsect1" title="msm/back/metafunctions.hpp"><a name="d0e5513"></a><h2>msm/back/metafunctions.hpp </h2><p>This header contains metafunctions for use by the library. Three metafunctions
|
||||
can be useful for the user:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">generate_state_set< stt ></code>: generates the list of
|
||||
all states referenced by the transition table stt. If stt is a
|
||||
recursive table (generated by
|
||||
@ -86,10 +86,10 @@
|
||||
finds recursively all events of the submachines. A non-recursive
|
||||
table can be obtained with some_backend_fsm::stt.</p></li><li class="listitem"><p><code class="code">recursive_get_transition_table<fsm></code>: recursively
|
||||
extends the transition table of the state machine fsm with tables
|
||||
from the submachines.</p></li></ul></div></div><div class="refsect1" title="msm/back/tools.hpp"><a name="d0e5524"></a><h2>msm/back/tools.hpp </h2><p> This header contains a few metaprogramming tools to get some information out
|
||||
of a state machine.</p><div class="refsect2" title="fill_state_names"><a name="d0e5529"></a><h3>fill_state_names </h3><div class="refsect3" title="attributes"><a name="d0e5532"></a><h4>attributes </h4><p> fill_state_names has for attribute:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">char const** m_names</code>: an already allocated
|
||||
from the submachines.</p></li></ul></div></div><div class="refsect1" title="msm/back/tools.hpp"><a name="d0e5540"></a><h2>msm/back/tools.hpp </h2><p> This header contains a few metaprogramming tools to get some information out
|
||||
of a state machine.</p><div class="refsect2" title="fill_state_names"><a name="d0e5545"></a><h3>fill_state_names </h3><div class="refsect3" title="attributes"><a name="d0e5548"></a><h4>attributes </h4><p> fill_state_names has for attribute:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">char const** m_names</code>: an already allocated
|
||||
array of const char* where the typeid-generated names of a
|
||||
state machine states will be witten.</p></li></ul></div></div><div class="refsect3" title="constructor"><a name="d0e5543"></a><h4>constructor </h4><code class="constructorsynopsis"><span class="methodparam">char const** names_to_fill</span>(<span class="methodparam">char const** names_to_fill</span>);</code></div><div class="refsect3" title="usage"><a name="d0e5550"></a><h4>usage</h4><p> fill_state_names is made for use in a mpl::for_each iterating on a
|
||||
state machine states will be witten.</p></li></ul></div></div><div class="refsect3" title="constructor"><a name="d0e5559"></a><h4>constructor </h4><code class="constructorsynopsis"><span class="methodparam">char const** names_to_fill</span>(<span class="methodparam">char const** names_to_fill</span>);</code></div><div class="refsect3" title="usage"><a name="d0e5566"></a><h4>usage</h4><p> fill_state_names is made for use in a mpl::for_each iterating on a
|
||||
state list and writing inside a pre-allocated array the state names.
|
||||
Example:</p><pre class="programlisting">typedef some_fsm::stt Stt;
|
||||
typedef msm::back::generate_state_set<Stt>::type all_states; //states
|
||||
@ -104,9 +104,9 @@ for (unsigned int i=0;i<some_fsm::nr_regions::value;++i)
|
||||
std::cout << " -> "
|
||||
<< state_names[my_fsm_instance.current_state()[i]]
|
||||
<< std::endl;
|
||||
}</pre></div></div><div class="refsect2" title="get_state_name"><a name="d0e5557"></a><h3>get_state_name </h3><div class="refsect3" title="attributes"><a name="d0e5560"></a><h4> attributes </h4><p>get_state_name has for attributes:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>std::string& m_name: the return value of the
|
||||
iteration</p></li><li class="listitem"><p>int m_state_id: the searched state's id</p></li></ul></div></div><div class="refsect3" title="constructor"><a name="d0e5572"></a><h4>constructor</h4><p>The constructor takes as argument a reference to the string to fill
|
||||
with the state name and the id which must be searched.</p><code class="constructorsynopsis"><span class="methodparam">string& name_to_fill,int state_id</span>(<span class="methodparam">string& name_to_fill,int state_id</span>);</code></div><div class="refsect3" title="usage"><a name="d0e5581"></a><h4> usage</h4><p>This type is made for the same search as in the previous example,
|
||||
}</pre></div></div><div class="refsect2" title="get_state_name"><a name="d0e5573"></a><h3>get_state_name </h3><div class="refsect3" title="attributes"><a name="d0e5576"></a><h4> attributes </h4><p>get_state_name has for attributes:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>std::string& m_name: the return value of the
|
||||
iteration</p></li><li class="listitem"><p>int m_state_id: the searched state's id</p></li></ul></div></div><div class="refsect3" title="constructor"><a name="d0e5588"></a><h4>constructor</h4><p>The constructor takes as argument a reference to the string to fill
|
||||
with the state name and the id which must be searched.</p><code class="constructorsynopsis"><span class="methodparam">string& name_to_fill,int state_id</span>(<span class="methodparam">string& name_to_fill,int state_id</span>);</code></div><div class="refsect3" title="usage"><a name="d0e5597"></a><h4> usage</h4><p>This type is made for the same search as in the previous example,
|
||||
using a mpl::for_each to iterate on states. After the iteration, the
|
||||
state name reference has been set.</p><pre class="programlisting">// we need a fsm's table
|
||||
typedef player::stt Stt;
|
||||
@ -115,6 +115,6 @@ std::string name_of_open; // id of Open is 1
|
||||
// fill name_of_open for state of id 1
|
||||
boost::mpl::for_each<all_states,boost::msm::wrap<mpl::placeholders::_1> >
|
||||
(msm::back::get_state_name<Stt>(name_of_open,1));
|
||||
std::cout << "typeid-generated name Open is: " << name_of_open << std::endl;</pre></div></div><div class="refsect2" title="display_type"><a name="d0e5588"></a><h3>display_type </h3><div class="refsect3" title="attributes"><a name="d0e5591"></a><h4> attributes </h4><p>none</p></div><div class="refsect3" title="usage"><a name="d0e5596"></a><h4> usage</h4><p>Reusing the state list from the previous example, we can output all
|
||||
std::cout << "typeid-generated name Open is: " << name_of_open << std::endl;</pre></div></div><div class="refsect2" title="display_type"><a name="d0e5604"></a><h3>display_type </h3><div class="refsect3" title="attributes"><a name="d0e5607"></a><h4> attributes </h4><p>none</p></div><div class="refsect3" title="usage"><a name="d0e5612"></a><h4> usage</h4><p>Reusing the state list from the previous example, we can output all
|
||||
state names:</p><p><code class="code">mpl::for_each<all_states,boost::msm::wrap<mpl::placeholders::_1>
|
||||
>(msm::back::display_type ());</code></p></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="re01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="re03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Common headers </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Front-end</td></tr></table></div></body></html>
|
@ -1,11 +1,11 @@
|
||||
<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Front-end</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="re02.html" title="Back-end"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Front-end</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re02.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="refentry" title="Front-end"><a name="d0e5604"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>Front-end — The front-end headers</p></div><div class="refsect1" title="msm/front/common_states.hpp"><a name="d0e5610"></a><h2>msm/front/common_states.hpp</h2><p>This header contains the predefined types to serve as base for states or state machines:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>default_base_state: non-polymorphic empty type.</p></li><li class="listitem"><p>polymorphic_state: type with a virtual destructor, which makes all
|
||||
states polymorphic.</p></li></ul></div></div><div class="refsect1" title="msm/front/completion_event.hpp"><a name="d0e5622"></a><h2>msm/front/completion_event.hpp</h2><p>This header contains one type, <code class="code">none</code>. This type has several
|
||||
<title>Front-end</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="pt02.html" title="Part II. Reference"><link rel="prev" href="re02.html" title="Back-end"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Front-end</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re02.html">Prev</a> </td><th width="60%" align="center">Part II. Reference</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="refentry" title="Front-end"><a name="d0e5620"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>Front-end — The front-end headers</p></div><div class="refsect1" title="msm/front/common_states.hpp"><a name="d0e5626"></a><h2>msm/front/common_states.hpp</h2><p>This header contains the predefined types to serve as base for states or state machines:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>default_base_state: non-polymorphic empty type.</p></li><li class="listitem"><p>polymorphic_state: type with a virtual destructor, which makes all
|
||||
states polymorphic.</p></li></ul></div></div><div class="refsect1" title="msm/front/completion_event.hpp"><a name="d0e5638"></a><h2>msm/front/completion_event.hpp</h2><p>This header contains one type, <code class="code">none</code>. This type has several
|
||||
meanings inside a transition table:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>as action or guard: that there is no action or guard</p></li><li class="listitem"><p>as target state: that the transition is an internal
|
||||
transition</p></li><li class="listitem"><p>as event: the transition is an anonymous (completion)
|
||||
transition</p></li></ul></div></div><div class="refsect1" title="msm/front/functor_row.hpp"><a name="d0e5640"></a><h2>msm/front/functor_row.hpp</h2><p>This header implements the functor front-end's transitions and helpers.</p><div class="refsect2" title="Row"><a name="d0e5645"></a><h3>Row</h3><div class="refsect3" title="definition"><a name="d0e5648"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Source,class Event,class Target,class
|
||||
Action,class Guard> Row</span></span> {<br>}</pre></div><div class="refsect3" title="tags"><a name="d0e5655"></a><h4>tags</h4><p>row_type_tag is defined differently for every specialization:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>all 5 template parameters means a normal transition with
|
||||
transition</p></li></ul></div></div><div class="refsect1" title="msm/front/functor_row.hpp"><a name="d0e5656"></a><h2>msm/front/functor_row.hpp</h2><p>This header implements the functor front-end's transitions and helpers.</p><div class="refsect2" title="Row"><a name="d0e5661"></a><h3>Row</h3><div class="refsect3" title="definition"><a name="d0e5664"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Source,class Event,class Target,class
|
||||
Action,class Guard> Row</span></span> {<br>}</pre></div><div class="refsect3" title="tags"><a name="d0e5671"></a><h4>tags</h4><p>row_type_tag is defined differently for every specialization:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>all 5 template parameters means a normal transition with
|
||||
action and guard: <code class="code">typedef row_tag
|
||||
row_type_tag;</code></p></li><li class="listitem"><p>Row<Source,Event,Target,none,none> a normal transition
|
||||
without action or guard: <code class="code">typedef _row_tag
|
||||
@ -21,7 +21,7 @@
|
||||
transition with action and guard: <code class="code">typedef irow_tag
|
||||
row_type_tag;</code></p></li><li class="listitem"><p>Row<Source,Event,none,none,none> an internal transition
|
||||
without action or guard: <code class="code">typedef _irow_tag
|
||||
row_type_tag;</code></p></li></ul></div></div><div class="refsect3" title="methods"><a name="d0e5701"></a><h4>methods</h4><p>Like any other front-end, Row implements the two necessary static
|
||||
row_type_tag;</code></p></li></ul></div></div><div class="refsect3" title="methods"><a name="d0e5717"></a><h4>methods</h4><p>Like any other front-end, Row implements the two necessary static
|
||||
functions for action and guard call. Each function receives as parameter
|
||||
the (deepest-level) state machine processsing the event, the event
|
||||
itself, the source and target states and all the states contained in a
|
||||
@ -33,8 +33,8 @@
|
||||
class AllStates> static bool guard_call(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>
|
||||
<code>(</code>Fsm& fsm,Event const&
|
||||
evt,SourceState&,TargetState,AllStates&<code>)</code>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div></div><div class="refsect2" title="Internal"><a name="d0e5724"></a><h3>Internal</h3><div class="refsect3" title="definition"><a name="d0e5727"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Event,class Action,class Guard>
|
||||
Internal</span></span> {<br>}</pre></div><div class="refsect3" title="tags"><a name="d0e5734"></a><h4>tags</h4><p>row_type_tag is defined differently for every specialization:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>all 3 template parameters means an internal transition
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div></div><div class="refsect2" title="Internal"><a name="d0e5740"></a><h3>Internal</h3><div class="refsect3" title="definition"><a name="d0e5743"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Event,class Action,class Guard>
|
||||
Internal</span></span> {<br>}</pre></div><div class="refsect3" title="tags"><a name="d0e5750"></a><h4>tags</h4><p>row_type_tag is defined differently for every specialization:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>all 3 template parameters means an internal transition
|
||||
with action and guard: <code class="code">typedef sm_i_row_tag
|
||||
row_type_tag;</code></p></li><li class="listitem"><p>Internal<Event,none,none> an internal transition
|
||||
without action or guard: <code class="code">typedef sm__i_row_tag
|
||||
@ -42,7 +42,7 @@
|
||||
without guard: <code class="code">typedef sm_a_i_row_tag
|
||||
row_type_tag;</code></p></li><li class="listitem"><p>Internal<Event,none,Guard> an internal transition
|
||||
without action: <code class="code">typedef sm_g_i_row_tag
|
||||
row_type_tag;</code></p></li></ul></div></div><div class="refsect3" title="methods"><a name="d0e5760"></a><h4>methods</h4><p>Like any other front-end, Internal implements the two necessary static
|
||||
row_type_tag;</code></p></li></ul></div></div><div class="refsect3" title="methods"><a name="d0e5776"></a><h4>methods</h4><p>Like any other front-end, Internal implements the two necessary static
|
||||
functions for action and guard call. Each function receives as parameter
|
||||
the (deepest-level) state machine processsing the event, the event
|
||||
itself, the source and target states and all the states contained in a
|
||||
@ -54,9 +54,9 @@
|
||||
class AllStates> static bool guard_call(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>
|
||||
<code>(</code>Fsm& fsm,Event const&
|
||||
evt,SourceState&,TargetState,AllStates&<code>)</code>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div></div><div class="refsect2" title="ActionSequence_"><a name="d0e5783"></a><h3>ActionSequence_</h3><p>This functor calls every element of the template Sequence (which are also
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div></div><div class="refsect2" title="ActionSequence_"><a name="d0e5799"></a><h3>ActionSequence_</h3><p>This functor calls every element of the template Sequence (which are also
|
||||
callable functors) in turn. It is also the underlying implementation of the
|
||||
eUML sequence grammar (action1,action2,...).</p><div class="refsect3" title="definition"><a name="d0e5788"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Sequence> ActionSequence_</span></span> {<br>}</pre></div><div class="refsect3" title="methods"><a name="d0e5795"></a><h4>methods</h4><p>This helper functor is made for use in a transition table and in a
|
||||
eUML sequence grammar (action1,action2,...).</p><div class="refsect3" title="definition"><a name="d0e5804"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Sequence> ActionSequence_</span></span> {<br>}</pre></div><div class="refsect3" title="methods"><a name="d0e5811"></a><h4>methods</h4><p>This helper functor is made for use in a transition table and in a
|
||||
state behavior and therefore implements an operator() with 3 and with 4
|
||||
arguments:</p><p>
|
||||
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class Evt,class Fsm,class
|
||||
@ -65,13 +65,13 @@
|
||||
</p><p>
|
||||
</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class Evt,class Fsm,class State>
|
||||
operator()(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Evt const&, Fsm&, State&</code>;</div><div class="funcprototype-spacer"> </div></div><p>
|
||||
</p></div></div><div class="refsect2" title="Defer"><a name="d0e5818"></a><h3>Defer</h3><div class="refsect3" title="definition"><a name="d0e5821"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">Defer</span></span> {<br>}</pre></div><div class="refsect3" title="methods"><a name="d0e5828"></a><h4>methods</h4><p>This helper functor is made for use in a transition table and
|
||||
</p></div></div><div class="refsect2" title="Defer"><a name="d0e5834"></a><h3>Defer</h3><div class="refsect3" title="definition"><a name="d0e5837"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">Defer</span></span> {<br>}</pre></div><div class="refsect3" title="methods"><a name="d0e5844"></a><h4>methods</h4><p>This helper functor is made for use in a transition table and
|
||||
therefore implements an operator() with 4 arguments:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class Evt,class Fsm,class SourceState,class
|
||||
TargetState> operator()(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Evt const&, Fsm& , SourceState&,
|
||||
TargetState&</code>;</div><div class="funcprototype-spacer"> </div></div></div></div></div><div class="refsect1" title="msm/front/internal_row.hpp"><a name="d0e5839"></a><h2>msm/front/internal_row.hpp</h2><p>This header implements the internal transition rows for use inside an
|
||||
TargetState&</code>;</div><div class="funcprototype-spacer"> </div></div></div></div></div><div class="refsect1" title="msm/front/internal_row.hpp"><a name="d0e5855"></a><h2>msm/front/internal_row.hpp</h2><p>This header implements the internal transition rows for use inside an
|
||||
internal_transition_table. All these row types have no source or target state,
|
||||
as the backend will recognize internal transitions from this
|
||||
internal_transition_table.</p><div class="refsect2" title="methods"><a name="d0e5844"></a><h3>methods</h3><p>Like any other front-end, the following transition row types implements
|
||||
internal_transition_table.</p><div class="refsect2" title="methods"><a name="d0e5860"></a><h3>methods</h3><p>Like any other front-end, the following transition row types implements
|
||||
the two necessary static functions for action and guard call. Each function
|
||||
receives as parameter the (deepest-level) state machine processsing the
|
||||
event, the event itself, the source and target states and all the states
|
||||
@ -83,30 +83,30 @@
|
||||
class AllStates> static bool guard_call(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>
|
||||
<code>(</code>Fsm& fsm,Event const&
|
||||
evt,SourceState&,TargetState,AllStates&<code>)</code>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect2" title="a_internal"><a name="d0e5867"></a><h3>a_internal</h3><div class="refsect3" title="definition"><a name="d0e5870"></a><h4>definition</h4><p>This is an internal transition with an action called during the
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect2" title="a_internal"><a name="d0e5883"></a><h3>a_internal</h3><div class="refsect3" title="definition"><a name="d0e5886"></a><h4>definition</h4><p>This is an internal transition with an action called during the
|
||||
transition.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Event, class CalledForAction, void
|
||||
(CalledForAction::*action)(Event const&)>
|
||||
a_internal</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e5879"></a><h4>template parameters</h4><p>
|
||||
a_internal</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e5895"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the internal
|
||||
transition.</p></li><li class="listitem"><p>CalledForAction: the type on which the action method will
|
||||
be called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>action: a pointer to the method which CalledForAction
|
||||
provides.</p></li></ul></div><p>
|
||||
</p></div></div><div class="refsect2" title="g_internal"><a name="d0e5895"></a><h3>g_internal</h3><p>This is an internal transition with a guard called before the transition
|
||||
and allowing the transition if returning true.</p><div class="refsect3" title="definition"><a name="d0e5900"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Event, class CalledForGuard, bool
|
||||
</p></div></div><div class="refsect2" title="g_internal"><a name="d0e5911"></a><h3>g_internal</h3><p>This is an internal transition with a guard called before the transition
|
||||
and allowing the transition if returning true.</p><div class="refsect3" title="definition"><a name="d0e5916"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Event, class CalledForGuard, bool
|
||||
(CalledForGuard::*guard)(Event const&)>
|
||||
g_internal</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e5907"></a><h4>template parameters</h4><p>
|
||||
g_internal</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e5923"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the internal
|
||||
transition.</p></li><li class="listitem"><p>CalledForGuard: the type on which the guard method will be
|
||||
called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>guard: a pointer to the method which CalledForGuard
|
||||
provides.</p></li></ul></div><p>
|
||||
</p></div></div><div class="refsect2" title="internal"><a name="d0e5923"></a><h3>internal</h3><p>This is an internal transition with a guard called before the transition
|
||||
</p></div></div><div class="refsect2" title="internal"><a name="d0e5939"></a><h3>internal</h3><p>This is an internal transition with a guard called before the transition
|
||||
and allowing the transition if returning true. It also calls an action
|
||||
called during the transition.</p><div class="refsect3" title="definition"><a name="d0e5928"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Event, class CalledForAction, void
|
||||
called during the transition.</p><div class="refsect3" title="definition"><a name="d0e5944"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Event, class CalledForAction, void
|
||||
(CalledForAction::*action)(Event const&), class
|
||||
CalledForGuard, bool (CalledForGuard::*guard)(Event const&)>
|
||||
internal</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e5935"></a><h4>template parameters</h4><p>
|
||||
internal</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e5951"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the internal transition</p></li><li class="listitem"><p>CalledForAction: the type on which the action method will
|
||||
be called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>action: a pointer to the method which CalledForAction
|
||||
@ -114,15 +114,15 @@
|
||||
called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>guard: a pointer to the method which CalledForGuard
|
||||
provides.</p></li></ul></div><p>
|
||||
</p></div></div><div class="refsect2" title="_internal"><a name="d0e5957"></a><h3>_internal</h3><p>This is an internal transition without action or guard. This is equivalent
|
||||
to an explicit "ignore event".</p><div class="refsect3" title="definition"><a name="d0e5962"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Event > _internal</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e5969"></a><h4>template parameters</h4><p>
|
||||
</p></div></div><div class="refsect2" title="_internal"><a name="d0e5973"></a><h3>_internal</h3><p>This is an internal transition without action or guard. This is equivalent
|
||||
to an explicit "ignore event".</p><div class="refsect3" title="definition"><a name="d0e5978"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Event > _internal</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e5985"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the internal
|
||||
transition.</p></li></ul></div><p>
|
||||
</p></div></div></div><div class="refsect1" title="msm/front/row2.hpp"><a name="d0e5979"></a><h2>msm/front/row2.hpp</h2><p>This header contains the variants of row2, which are an extension of the
|
||||
</p></div></div></div><div class="refsect1" title="msm/front/row2.hpp"><a name="d0e5995"></a><h2>msm/front/row2.hpp</h2><p>This header contains the variants of row2, which are an extension of the
|
||||
standard row transitions for use in the transition table. They offer the
|
||||
possibility to define action and guard not only in the state machine, but in any
|
||||
state of the state machine. They can also be used in internal transition tables
|
||||
through their irow2 variants.</p><div class="refsect2" title="methods"><a name="d0e5984"></a><h3>methods</h3><p>Like any other front-end, the following transition row types implements
|
||||
through their irow2 variants.</p><div class="refsect2" title="methods"><a name="d0e6000"></a><h3>methods</h3><p>Like any other front-end, the following transition row types implements
|
||||
the two necessary static functions for action and guard call. Each function
|
||||
receives as parameter the (deepest-level) state machine processsing the
|
||||
event, the event itself, the source and target states and all the states
|
||||
@ -134,28 +134,28 @@
|
||||
class AllStates> static bool guard_call(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>
|
||||
<code>(</code>Fsm& fsm,Event const&
|
||||
evt,SourceState&,TargetState,AllStates&<code>)</code>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect2" title="_row2"><a name="d0e6007"></a><h3>_row2</h3><p>This is a transition without action or guard. The state machine only
|
||||
changes active state.</p><div class="refsect3" title="definition"><a name="d0e6012"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, class Target >
|
||||
_row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6019"></a><h4>template parameters</h4><p>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect2" title="_row2"><a name="d0e6023"></a><h3>_row2</h3><p>This is a transition without action or guard. The state machine only
|
||||
changes active state.</p><div class="refsect3" title="definition"><a name="d0e6028"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, class Target >
|
||||
_row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6035"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>Target: the target state of the transition.</p></li></ul></div><p>
|
||||
</p></div></div><div class="refsect2" title="a_row2"><a name="d0e6035"></a><h3>a_row2</h3><p>This is a transition with action and without guard.</p><div class="refsect3" title="definition"><a name="d0e6040"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, class Target,
|
||||
</p></div></div><div class="refsect2" title="a_row2"><a name="d0e6051"></a><h3>a_row2</h3><p>This is a transition with action and without guard.</p><div class="refsect3" title="definition"><a name="d0e6056"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, class Target,
|
||||
</span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForAction, void
|
||||
(CalledForAction::*action)(Event const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6051"></a><h4>template parameters</h4><p>
|
||||
(CalledForAction::*action)(Event const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6067"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>Target: the target state of the transition.</p></li><li class="listitem"><p>CalledForAction: the type on which the action method will
|
||||
be called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>action: a pointer to the method which CalledForAction
|
||||
provides.</p></li></ul></div><p>
|
||||
</p></div></div><div class="refsect2" title="g_row2"><a name="d0e6073"></a><h3>g_row2</h3><p>This is a transition with guard and without action.</p><div class="refsect3" title="definition"><a name="d0e6078"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, class Target,
|
||||
</p></div></div><div class="refsect2" title="g_row2"><a name="d0e6089"></a><h3>g_row2</h3><p>This is a transition with guard and without action.</p><div class="refsect3" title="definition"><a name="d0e6094"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, class Target,
|
||||
</span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForGuard, bool (CalledForGuard::*guard)(Event
|
||||
const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6089"></a><h4>template parameters</h4><p>
|
||||
const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6105"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>Target: the target state of the transition.</p></li><li class="listitem"><p>CalledForGuard: the type on which the guard method will be
|
||||
called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>guard: a pointer to the method which CalledForGuard
|
||||
provides.</p></li></ul></div><p>
|
||||
</p></div></div><div class="refsect2" title="row2"><a name="d0e6111"></a><h3>row2</h3><p>This is a transition with guard and action.</p><div class="refsect3" title="definition"><a name="d0e6116"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, class Target,
|
||||
</p></div></div><div class="refsect2" title="row2"><a name="d0e6127"></a><h3>row2</h3><p>This is a transition with guard and action.</p><div class="refsect3" title="definition"><a name="d0e6132"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, class Target,
|
||||
</span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForAction, void
|
||||
(CalledForAction::*action)(Event const&), </span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForGuard, bool (CalledForGuard::*guard)(Event
|
||||
const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6131"></a><h4>template parameters</h4><p>
|
||||
const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6147"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>Target: the target state of the transition.</p></li><li class="listitem"><p>CalledForAction: the type on which the action method will
|
||||
be called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>action: a pointer to the method which CalledForAction
|
||||
@ -163,24 +163,24 @@
|
||||
called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>guard: a pointer to the method which CalledForGuard
|
||||
provides.</p></li></ul></div><p>
|
||||
</p></div></div><div class="refsect2" title="a_irow2"><a name="d0e6159"></a><h3>a_irow2</h3><p>This is an internal transition for use inside a transition table, with
|
||||
action and without guard.</p><div class="refsect3" title="definition"><a name="d0e6164"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, </span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForAction, void
|
||||
(CalledForAction::*action)(Event const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6175"></a><h4>template parameters</h4><p>
|
||||
</p></div></div><div class="refsect2" title="a_irow2"><a name="d0e6175"></a><h3>a_irow2</h3><p>This is an internal transition for use inside a transition table, with
|
||||
action and without guard.</p><div class="refsect3" title="definition"><a name="d0e6180"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, </span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForAction, void
|
||||
(CalledForAction::*action)(Event const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6191"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>CalledForAction: the type on which the action method will
|
||||
be called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>action: a pointer to the method which CalledForAction
|
||||
provides.</p></li></ul></div><p>
|
||||
</p></div></div><div class="refsect2" title="g_irow2"><a name="d0e6194"></a><h3>g_irow2</h3><p>This is an internal transition for use inside a transition table, with
|
||||
guard and without action.</p><div class="refsect3" title="definition"><a name="d0e6199"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, </span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForGuard, bool (CalledForGuard::*guard)(Event
|
||||
const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6210"></a><h4>template parameters</h4><p>
|
||||
</p></div></div><div class="refsect2" title="g_irow2"><a name="d0e6210"></a><h3>g_irow2</h3><p>This is an internal transition for use inside a transition table, with
|
||||
guard and without action.</p><div class="refsect3" title="definition"><a name="d0e6215"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, </span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForGuard, bool (CalledForGuard::*guard)(Event
|
||||
const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6226"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>CalledForGuard: the type on which the guard method will be
|
||||
called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>guard: a pointer to the method which CalledForGuard
|
||||
provides.</p></li></ul></div><p>
|
||||
</p></div></div><div class="refsect2" title="irow2"><a name="d0e6229"></a><h3>irow2</h3><p>This is an internal transition for use inside a transition table, with
|
||||
guard and action.</p><div class="refsect3" title="definition"><a name="d0e6234"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, </span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForAction, void
|
||||
</p></div></div><div class="refsect2" title="irow2"><a name="d0e6245"></a><h3>irow2</h3><p>This is an internal transition for use inside a transition table, with
|
||||
guard and action.</p><div class="refsect3" title="definition"><a name="d0e6250"></a><h4>definition</h4><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template< class Source, class Event, </span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForAction, void
|
||||
(CalledForAction::*action)(Event const&), </span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class CalledForGuard, bool (CalledForGuard::*guard)(Event
|
||||
const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6249"></a><h4>template parameters</h4><p>
|
||||
const&) > _row2</span></span> {<br>}</pre></div><div class="refsect3" title="template parameters"><a name="d0e6265"></a><h4>template parameters</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>CalledForAction: the type on which the action method will
|
||||
be called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>action: a pointer to the method which CalledForAction
|
||||
@ -188,16 +188,16 @@
|
||||
called. It can be either a state of the containing state
|
||||
machine or the state machine itself.</p></li><li class="listitem"><p>guard: a pointer to the method which CalledForGuard
|
||||
provides.</p></li></ul></div><p>
|
||||
</p></div></div></div><div class="refsect1" title="msm/front/state_machine_def.hpp"><a name="d0e6274"></a><h2>msm/front/state_machine_def.hpp</h2><p>This header provides the implementation of the <span class="command"><strong><a class="command" href="ch03s02.html#basic-front-end">basic front-end</a></strong></span>. It contains one
|
||||
type, <code class="code">state_machine_def</code></p><div class="refsect2" title="state_machine_def definition"><a name="d0e6284"></a><h3>state_machine_def definition</h3><p>This type is the basic class for a basic (or possibly any other)
|
||||
</p></div></div></div><div class="refsect1" title="msm/front/state_machine_def.hpp"><a name="d0e6290"></a><h2>msm/front/state_machine_def.hpp</h2><p>This header provides the implementation of the <span class="command"><strong><a class="command" href="ch03s02.html#basic-front-end">basic front-end</a></strong></span>. It contains one
|
||||
type, <code class="code">state_machine_def</code></p><div class="refsect2" title="state_machine_def definition"><a name="d0e6300"></a><h3>state_machine_def definition</h3><p>This type is the basic class for a basic (or possibly any other)
|
||||
front-end. It provides the standard row types (which includes internal
|
||||
transitions) and a default implementation of the required methods and
|
||||
typedefs.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class Derived,class BaseState =
|
||||
default_base_state> state_machine_def</span></span> {<br>}</pre><div class="refsect3" title="typedefs"><a name="d0e6293"></a><h4>typedefs</h4><p>
|
||||
default_base_state> state_machine_def</span></span> {<br>}</pre><div class="refsect3" title="typedefs"><a name="d0e6309"></a><h4>typedefs</h4><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>flag_list: by default, no flag is set in the state
|
||||
machine</p></li><li class="listitem"><p>deferred_events: by default, no event is deferred.</p></li><li class="listitem"><p>configuration: by default, no configuration customization
|
||||
is done.</p></li></ul></div><p>
|
||||
</p></div><div class="refsect3" title="row methods"><a name="d0e6309"></a><h4>row methods</h4><p>Like any other front-end, the following transition row types
|
||||
</p></div><div class="refsect3" title="row methods"><a name="d0e6325"></a><h4>row methods</h4><p>Like any other front-end, the following transition row types
|
||||
implements the two necessary static functions for action and guard call.
|
||||
Each function receives as parameter the (deepest-level) state machine
|
||||
processsing the event, the event itself, the source and target states
|
||||
@ -209,30 +209,30 @@
|
||||
class AllStates> static bool guard_call(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>
|
||||
<code>(</code>Fsm& fsm,Event const&
|
||||
evt,SourceState&,TargetState,AllStates&<code>)</code>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect3" title="a_row"><a name="d0e6332"></a><h4>a_row</h4><p>This is a transition with action and without guard.</p><p><code class="classname">template< class Source, class Event, class Target,
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect3" title="a_row"><a name="d0e6348"></a><h4>a_row</h4><p>This is a transition with action and without guard.</p><p><code class="classname">template< class Source, class Event, class Target,
|
||||
void (Derived::*action)(Event const&) > a_row</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>Target: the target state of the transition.</p></li><li class="listitem"><p>action: a pointer to the method provided by the concrete
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="g_row"><a name="d0e6357"></a><h4>g_row</h4><p>This is a transition with guard and without action.</p><p><code class="classname">template< class Source, class Event, class Target,
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="g_row"><a name="d0e6373"></a><h4>g_row</h4><p>This is a transition with guard and without action.</p><p><code class="classname">template< class Source, class Event, class Target,
|
||||
bool (Derived::*guard)(Event const&) > g_row</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>Target: the target state of the transition.</p></li><li class="listitem"><p>guard: a pointer to the method provided by the concrete
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="row"><a name="d0e6382"></a><h4>row</h4><p>This is a transition with guard and action.</p><p><code class="classname">template< class Source, class Event, class Target,
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="row"><a name="d0e6398"></a><h4>row</h4><p>This is a transition with guard and action.</p><p><code class="classname">template< class Source, class Event, class Target,
|
||||
void (Derived::*action)(Event const&), bool
|
||||
(Derived::*guard)(Event const&) > row</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>Target: the target state of the transition.</p></li><li class="listitem"><p>action: a pointer to the method provided by the concrete
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li><li class="listitem"><p>guard: a pointer to the method provided by the concrete
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="_row"><a name="d0e6413"></a><h4>_row</h4><p>This is a transition without action or guard. The state machine only
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="_row"><a name="d0e6429"></a><h4>_row</h4><p>This is a transition without action or guard. The state machine only
|
||||
changes active state.</p><p><code class="classname">template< class Source, class Event, class Target >
|
||||
_row</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>Target: the target state of the transition.</p></li></ul></div></div><div class="refsect3" title="a_irow"><a name="d0e6432"></a><h4>a_irow</h4><p>This is an internal transition for use inside a transition table, with
|
||||
_row</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>Target: the target state of the transition.</p></li></ul></div></div><div class="refsect3" title="a_irow"><a name="d0e6448"></a><h4>a_irow</h4><p>This is an internal transition for use inside a transition table, with
|
||||
action and without guard.</p><p><code class="classname">template< class Source, class Event, void
|
||||
(Derived::*action)(Event const&) > a_irow</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>action: a pointer to the method provided by the concrete
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="g_irow"><a name="d0e6454"></a><h4>g_irow</h4><p>This is an internal transition for use inside a transition table, with
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="g_irow"><a name="d0e6470"></a><h4>g_irow</h4><p>This is an internal transition for use inside a transition table, with
|
||||
guard and without action.</p><p><code class="classname">template< class Source, class Event, bool
|
||||
(Derived::*guard)(Event const&) > g_irow</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>guard: a pointer to the method provided by the concrete
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="irow"><a name="d0e6476"></a><h4>irow</h4><p>This is an internal transition for use inside a transition table, with
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="irow"><a name="d0e6492"></a><h4>irow</h4><p>This is an internal transition for use inside a transition table, with
|
||||
guard and action.</p><p><code class="classname">template< class Source, class Event, void
|
||||
(Derived::*action)(Event const&), bool
|
||||
(Derived::*guard)(Event const&) > irow</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li><li class="listitem"><p>action: a pointer to the method provided by the concrete
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li><li class="listitem"><p>guard: a pointer to the method provided by the concrete
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="_irow"><a name="d0e6504"></a><h4>_irow</h4><p>This is an internal transition without action or guard. As it does
|
||||
front-end (represented by <code class="code">Derived</code>).</p></li></ul></div></div><div class="refsect3" title="_irow"><a name="d0e6520"></a><h4>_irow</h4><p>This is an internal transition without action or guard. As it does
|
||||
nothing, it means "ignore event".</p><p><code class="classname">template< class Source, class Event >
|
||||
_irow</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li></ul></div></div><div class="refsect3" title="methods"><a name="d0e6520"></a><h4>methods</h4><p><code class="code">state_machine_def</code> provides a default implementation in
|
||||
_irow</code></p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Event: the event triggering the transition.</p></li><li class="listitem"><p>Source: the source state of the transition.</p></li></ul></div></div><div class="refsect3" title="methods"><a name="d0e6536"></a><h4>methods</h4><p><code class="code">state_machine_def</code> provides a default implementation in
|
||||
case of an event which cannot be processed by a state machine (no
|
||||
transition found). The implementation is using a
|
||||
<code class="code">BOOST_ASSERT</code> so that the error will only be noticed in
|
||||
@ -256,19 +256,19 @@
|
||||
<code>(</code>Event const& ,Fsm&,
|
||||
std::exception&<code>)</code>
|
||||
</code>;</div><div class="funcprototype-spacer"> </div></div><p>
|
||||
</p></div></div></div><div class="refsect1" title="msm/front/states.hpp"><a name="d0e6564"></a><h2>msm/front/states.hpp </h2><p>This header provides the different states (except state machines) for the
|
||||
basic front-end (or mixed with other front-ends).</p><div class="refsect2" title="types"><a name="d0e6569"></a><h3>types</h3><p>This header provides the following types:</p><div class="refsect3" title="no_sm_ptr"><a name="d0e6574"></a><h4>no_sm_ptr</h4><p>deprecated: default policy for states. It means that states do not
|
||||
need to save a pointer to their containing state machine.</p></div><div class="refsect3" title="sm_ptr"><a name="d0e6579"></a><h4>sm_ptr</h4><p>deprecated: state policy. It means that states need to save a pointer
|
||||
</p></div></div></div><div class="refsect1" title="msm/front/states.hpp"><a name="d0e6580"></a><h2>msm/front/states.hpp </h2><p>This header provides the different states (except state machines) for the
|
||||
basic front-end (or mixed with other front-ends).</p><div class="refsect2" title="types"><a name="d0e6585"></a><h3>types</h3><p>This header provides the following types:</p><div class="refsect3" title="no_sm_ptr"><a name="d0e6590"></a><h4>no_sm_ptr</h4><p>deprecated: default policy for states. It means that states do not
|
||||
need to save a pointer to their containing state machine.</p></div><div class="refsect3" title="sm_ptr"><a name="d0e6595"></a><h4>sm_ptr</h4><p>deprecated: state policy. It means that states need to save a pointer
|
||||
to their containing state machine. When seeing this flag, the back-end
|
||||
will call set_sm_ptr(fsm*) and give itself as argument.</p></div><div class="refsect3" title="state"><a name="d0e6584"></a><h4>state</h4><p>Basic type for simple states. Inherit from this type to define a
|
||||
will call set_sm_ptr(fsm*) and give itself as argument.</p></div><div class="refsect3" title="state"><a name="d0e6600"></a><h4>state</h4><p>Basic type for simple states. Inherit from this type to define a
|
||||
simple state. The first argument is needed if you want your state (and
|
||||
all others used in a concrete state machine) to inherit a basic type for
|
||||
logging or providing a common behavior.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template<class Base = default_base_state,class
|
||||
SMPtrPolicy = no_sm_ptr> state</span></span> {<br>}</pre></div><div class="refsect3" title="terminate_state"><a name="d0e6593"></a><h4>terminate_state</h4><p>Basic type for terminate states. Inherit from this type to define a
|
||||
SMPtrPolicy = no_sm_ptr> state</span></span> {<br>}</pre></div><div class="refsect3" title="terminate_state"><a name="d0e6609"></a><h4>terminate_state</h4><p>Basic type for terminate states. Inherit from this type to define a
|
||||
terminate state. The first argument is needed if you want your state
|
||||
(and all others used in a concrete state machine) to inherit a basic
|
||||
type for logging or providing a common behavior.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template<class Base = default_base_state,class
|
||||
SMPtrPolicy = no_sm_ptr> terminate_state</span></span> {<br>}</pre></div><div class="refsect3" title="interrupt_state"><a name="d0e6602"></a><h4>interrupt_state</h4><p>Basic type for interrupt states. Interrupt states prevent any further
|
||||
SMPtrPolicy = no_sm_ptr> terminate_state</span></span> {<br>}</pre></div><div class="refsect3" title="interrupt_state"><a name="d0e6618"></a><h4>interrupt_state</h4><p>Basic type for interrupt states. Interrupt states prevent any further
|
||||
event handling until EndInterruptEvent is sent. Inherit from this type
|
||||
to define a terminate state. The first argument is the name of the event
|
||||
ending the interrupt. The second argument is needed if you want your
|
||||
@ -276,11 +276,11 @@
|
||||
basic type for logging or providing a common behavior.</p><p>The EndInterruptEvent can also be a sequence of events:
|
||||
mpl::vector<EndInterruptEvent,EndInterruptEvent2>.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template<class EndInterruptEvent,class Base =
|
||||
default_base_state,</span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class SMPtrPolicy = no_sm_ptr>
|
||||
interrupt_state</span></span> {<br>}</pre></div><div class="refsect3" title="explicit_entry"><a name="d0e6617"></a><h4>explicit_entry</h4><p>Inherit from this type <span class="underline">in
|
||||
interrupt_state</span></span> {<br>}</pre></div><div class="refsect3" title="explicit_entry"><a name="d0e6633"></a><h4>explicit_entry</h4><p>Inherit from this type <span class="underline">in
|
||||
addition</span> to the desired state type to enable this state
|
||||
for direct entering. The template parameter gives the region id of the
|
||||
state (regions are numbered in the order of the
|
||||
<code class="code">initial_state</code> typedef).</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <int ZoneIndex=-1> explicit_entry</span></span> {<br>}</pre></div><div class="refsect3" title="entry_pseudo_state"><a name="d0e6632"></a><h4>entry_pseudo_state</h4><p>Basic type for entry pseudo states. Entry pseudo states are an
|
||||
<code class="code">initial_state</code> typedef).</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <int ZoneIndex=-1> explicit_entry</span></span> {<br>}</pre></div><div class="refsect3" title="entry_pseudo_state"><a name="d0e6648"></a><h4>entry_pseudo_state</h4><p>Basic type for entry pseudo states. Entry pseudo states are an
|
||||
predefined entry into a submachine and connect two transitions. The
|
||||
first argument is the id of the region entered by this state (regions
|
||||
are numbered in the order of the <code class="code">initial_state</code> typedef).
|
||||
@ -288,7 +288,7 @@
|
||||
used in a concrete state machine) to inherit a basic type for logging or
|
||||
providing a common behavior.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template<int RegionIndex=-1,class Base =
|
||||
default_base_state,</span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class SMPtrPolicy = no_sm_ptr>
|
||||
entry_pseudo_state</span></span> {<br>}</pre></div><div class="refsect3" title="exit_pseudo_state"><a name="d0e6648"></a><h4>exit_pseudo_state</h4><p>Basic type for exit pseudo states. Exit pseudo states are an
|
||||
entry_pseudo_state</span></span> {<br>}</pre></div><div class="refsect3" title="exit_pseudo_state"><a name="d0e6664"></a><h4>exit_pseudo_state</h4><p>Basic type for exit pseudo states. Exit pseudo states are an
|
||||
predefined exit from a submachine and connect two transitions. The first
|
||||
argument is the name of the event which will be "thrown" out of the exit
|
||||
point. This event does not need to be the same as the one sent by the
|
||||
@ -297,32 +297,32 @@
|
||||
machine) to inherit a basic type for logging or providing a common
|
||||
behavior.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template<class Event,class Base =
|
||||
default_base_state,</span></span> {<br>}</pre><pre class="classsynopsis"> <span class="ooclass"><span class="classname">class SMPtrPolicy = no_sm_ptr>
|
||||
exit_pseudo_state</span></span> {<br>}</pre></div></div></div><div class="refsect1" title="msm/front/euml/euml.hpp"><a name="d0e6661"></a><h2>msm/front/euml/euml.hpp</h2><p>This header includes all of eUML except the STL functors.</p></div><div class="refsect1" title="msm/front/euml/stl.hpp"><a name="d0e6666"></a><h2>msm/front/euml/stl.hpp</h2><p>This header includes all the functors for STL support in eUML. These <span class="command"><strong><a class="command" href="ch11.html#eUML-STL-all">tables</a></strong></span> show a full description.</p></div><div class="refsect1" title="msm/front/euml/algorithm.hpp"><a name="d0e6674"></a><h2>msm/front/euml/algorithm.hpp</h2><p>This header includes all the functors for STL algorithms support in eUML.
|
||||
exit_pseudo_state</span></span> {<br>}</pre></div></div></div><div class="refsect1" title="msm/front/euml/euml.hpp"><a name="d0e6677"></a><h2>msm/front/euml/euml.hpp</h2><p>This header includes all of eUML except the STL functors.</p></div><div class="refsect1" title="msm/front/euml/stl.hpp"><a name="d0e6682"></a><h2>msm/front/euml/stl.hpp</h2><p>This header includes all the functors for STL support in eUML. These <span class="command"><strong><a class="command" href="ch11.html#eUML-STL-all">tables</a></strong></span> show a full description.</p></div><div class="refsect1" title="msm/front/euml/algorithm.hpp"><a name="d0e6690"></a><h2>msm/front/euml/algorithm.hpp</h2><p>This header includes all the functors for STL algorithms support in eUML.
|
||||
These <span class="command"><strong><a class="command" href="ch11.html#eUML-STL-all">tables</a></strong></span> show a full
|
||||
description.</p></div><div class="refsect1" title="msm/front/euml/iteration.hpp"><a name="d0e6682"></a><h2>msm/front/euml/iteration.hpp</h2><p>This header includes iteration functors for STL support in eUML. This <span class="command"><strong><a class="command" href="ch11.html#eUML-STL-iteration">tables</a></strong></span> shows a full
|
||||
description.</p></div><div class="refsect1" title="msm/front/euml/querying.hpp"><a name="d0e6690"></a><h2>msm/front/euml/querying.hpp</h2><p>This header includes querying functors for STL support in eUML. This <span class="command"><strong><a class="command" href="ch11.html#eUML-STL-querying">tables</a></strong></span> shows a full
|
||||
description.</p></div><div class="refsect1" title="msm/front/euml/transformation.hpp"><a name="d0e6698"></a><h2>msm/front/euml/transformation.hpp</h2><p>This header includes transformation functors for STL support in eUML. This
|
||||
description.</p></div><div class="refsect1" title="msm/front/euml/iteration.hpp"><a name="d0e6698"></a><h2>msm/front/euml/iteration.hpp</h2><p>This header includes iteration functors for STL support in eUML. This <span class="command"><strong><a class="command" href="ch11.html#eUML-STL-iteration">tables</a></strong></span> shows a full
|
||||
description.</p></div><div class="refsect1" title="msm/front/euml/querying.hpp"><a name="d0e6706"></a><h2>msm/front/euml/querying.hpp</h2><p>This header includes querying functors for STL support in eUML. This <span class="command"><strong><a class="command" href="ch11.html#eUML-STL-querying">tables</a></strong></span> shows a full
|
||||
description.</p></div><div class="refsect1" title="msm/front/euml/transformation.hpp"><a name="d0e6714"></a><h2>msm/front/euml/transformation.hpp</h2><p>This header includes transformation functors for STL support in eUML. This
|
||||
<span class="command"><strong><a class="command" href="ch11.html#eUML-STL-transformation">tables</a></strong></span> shows a full
|
||||
description.</p></div><div class="refsect1" title="msm/front/euml/container.hpp"><a name="d0e6706"></a><h2>msm/front/euml/container.hpp</h2><p>This header includes container functors for STL support in eUML (functors
|
||||
description.</p></div><div class="refsect1" title="msm/front/euml/container.hpp"><a name="d0e6722"></a><h2>msm/front/euml/container.hpp</h2><p>This header includes container functors for STL support in eUML (functors
|
||||
calling container methods). This <span class="command"><strong><a class="command" href="ch11.html#eUML-STL-container">tables</a></strong></span> shows a full description. It also provides npos for
|
||||
strings.</p><div class="refsect2" title="Npos_<container type>"><a name="d0e6714"></a><h3>Npos_<container type></h3><p>Functor returning npos for transition or state behaviors. Like all
|
||||
strings.</p><div class="refsect2" title="Npos_<container type>"><a name="d0e6730"></a><h3>Npos_<container type></h3><p>Functor returning npos for transition or state behaviors. Like all
|
||||
constants, only the functor form exists, so parenthesis are necessary.
|
||||
Example:</p><p><code class="code">string_find_(event_(m_song),Char_<'S'>(),Size_t_<0>()) !=
|
||||
Npos_<string>() // compare result of string::find with
|
||||
npos</code></p></div></div><div class="refsect1" title="msm/front/euml/stt_grammar.hpp"><a name="d0e6722"></a><h2>msm/front/euml/stt_grammar.hpp</h2><p>This header provides the transition table grammars. This includes internal
|
||||
transition tables.</p><div class="refsect2" title="functions"><a name="d0e6727"></a><h3>functions</h3><div class="refsect3" title="build_stt"><a name="d0e6730"></a><h4>build_stt</h4><p>The function build_stt evaluates the grammar-conform expression as
|
||||
npos</code></p></div></div><div class="refsect1" title="msm/front/euml/stt_grammar.hpp"><a name="d0e6738"></a><h2>msm/front/euml/stt_grammar.hpp</h2><p>This header provides the transition table grammars. This includes internal
|
||||
transition tables.</p><div class="refsect2" title="functions"><a name="d0e6743"></a><h3>functions</h3><div class="refsect3" title="build_stt"><a name="d0e6746"></a><h4>build_stt</h4><p>The function build_stt evaluates the grammar-conform expression as
|
||||
parameter. It returns a transition table, which is a mpl::vector of
|
||||
transitions (rows) or, if the expression is ill-formed (does not match
|
||||
the grammar), the type <code class="code">invalid_type</code>, which will lead to a
|
||||
compile-time static assertion when this transition table is passed to a
|
||||
state machine. </p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template<class Expr> [mpl::vector<...> /
|
||||
msm::front::euml::invalid_type] build_stt(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Expr const& expr</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect3" title="build_internal_stt"><a name="d0e6744"></a><h4>build_internal_stt</h4><p>The function build_internal_stt evaluates the grammar-conform
|
||||
msm::front::euml::invalid_type] build_stt(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Expr const& expr</code>;</div><div class="funcprototype-spacer"> </div></div></div><div class="refsect3" title="build_internal_stt"><a name="d0e6760"></a><h4>build_internal_stt</h4><p>The function build_internal_stt evaluates the grammar-conform
|
||||
expression as parameter. It returns a transition table, which is a
|
||||
mpl::vector of transitions (rows) or, if the expression is ill-formed
|
||||
(does not match the grammar), the type <code class="code">invalid_type</code>, which
|
||||
will lead to a compile-time static assertion when this transition table
|
||||
is passed to a state machine. </p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template<class Expr> [mpl::vector<...> /
|
||||
msm::front::euml::invalid_type] build_internal_stt(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Expr const& expr</code>;</div><div class="funcprototype-spacer"> </div></div></div></div><div class="refsect2" title="grammars"><a name="d0e6758"></a><h3>grammars</h3><div class="refsect3" title="transition table"><a name="d0e6761"></a><h4><span class="command"><strong><a name="reference-stt-grammar"></a>transition
|
||||
msm::front::euml::invalid_type] build_internal_stt(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Expr const& expr</code>;</div><div class="funcprototype-spacer"> </div></div></div></div><div class="refsect2" title="grammars"><a name="d0e6774"></a><h3>grammars</h3><div class="refsect3" title="transition table"><a name="d0e6777"></a><h4><span class="command"><strong><a name="reference-stt-grammar"></a>transition
|
||||
table</strong></span></h4><p>The transition table accepts the following grammar:</p><pre class="programlisting">Stt := Row | (Stt ',' Stt)
|
||||
Row := (Target '==' (SourcePlusEvent)) /* first syntax*/
|
||||
| ( (SourcePlusEvent) '==' Target ) /* second syntax*/
|
||||
@ -347,15 +347,15 @@ target == source + event / action,
|
||||
source + event /action == target,
|
||||
source / action == target, /*anonymous transition*/
|
||||
target == source / action, /*anonymous transition*/
|
||||
source + event /action, /* internal transition*/</pre></div><div class="refsect3" title="internal transition table"><a name="d0e6773"></a><h4>internal transition table</h4><p>The internal transition table accepts the following grammar:</p><pre class="programlisting">IStt := BuildEvent | (IStt ',' IStt)</pre><p>BuildEvent being defined for both internal and standard transition
|
||||
tables.</p></div></div></div><div class="refsect1" title="msm/front/euml/guard_grammar.hpp"><a name="d0e6782"></a><h2>msm/front/euml/guard_grammar.hpp</h2><p>This header contains the <code class="code">Guard</code> grammar used in the previous
|
||||
source + event /action, /* internal transition*/</pre></div><div class="refsect3" title="internal transition table"><a name="d0e6789"></a><h4>internal transition table</h4><p>The internal transition table accepts the following grammar:</p><pre class="programlisting">IStt := BuildEvent | (IStt ',' IStt)</pre><p>BuildEvent being defined for both internal and standard transition
|
||||
tables.</p></div></div></div><div class="refsect1" title="msm/front/euml/guard_grammar.hpp"><a name="d0e6798"></a><h2>msm/front/euml/guard_grammar.hpp</h2><p>This header contains the <code class="code">Guard</code> grammar used in the previous
|
||||
section. This grammar is long but pretty simple:</p><pre class="programlisting">Guard := action_tag | (Guard '&&' Guard)
|
||||
| (Guard '||' Guard) | ... /* operators*/
|
||||
| (if_then_else_(Guard,Guard,Guard)) | (function (Action,...Action))</pre><p>Most C++ operators are supported (address-of is not). With
|
||||
<code class="code">function</code> is meant any eUML predefined function or any self-made
|
||||
(using <code class="code">MSM_EUML_METHOD</code> or <code class="code">MSM_EUML_FUNCTION</code>). Action
|
||||
is a grammar defined in state_grammar.hpp.</p></div><div class="refsect1" title="msm/front/euml/state_grammar.hpp"><a name="d0e6803"></a><h2>msm/front/euml/state_grammar.hpp</h2><p>This header provides the grammar for actions and the different grammars and
|
||||
functions to build states using eUML.</p><div class="refsect2" title="action grammar"><a name="d0e6808"></a><h3>action grammar</h3><p>Like the guard grammar, this grammar supports relevant C++ operators and
|
||||
is a grammar defined in state_grammar.hpp.</p></div><div class="refsect1" title="msm/front/euml/state_grammar.hpp"><a name="d0e6819"></a><h2>msm/front/euml/state_grammar.hpp</h2><p>This header provides the grammar for actions and the different grammars and
|
||||
functions to build states using eUML.</p><div class="refsect2" title="action grammar"><a name="d0e6824"></a><h3>action grammar</h3><p>Like the guard grammar, this grammar supports relevant C++ operators and
|
||||
eUML functions:</p><pre class="programlisting">Action := action_tag | (Action '+' Action)
|
||||
| ('--' Action) | ... /* operators*/
|
||||
| if_then_else_(Guard,Action,Action) | if_then_(Action)
|
||||
@ -364,10 +364,10 @@ source + event /action, /* internal transition*/</pre></div><div class="refsect3
|
||||
| (function(Action,...Action))
|
||||
ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: ++ (post/pre), -- (post/pre), dereferencing, +
|
||||
(unary/binary), - (unary/binary), *, /, %, &(bitwise), | (bitwise),
|
||||
^(bitwise), +=, -=, *=, /=, %=, <<=, >>=, <<, >>, =, [].</p></div><div class="refsect2" title="attributes"><a name="d0e6817"></a><h3>attributes</h3><p>This grammar is used to add attributes to states (or state machines) or
|
||||
^(bitwise), +=, -=, *=, /=, %=, <<=, >>=, <<, >>, =, [].</p></div><div class="refsect2" title="attributes"><a name="d0e6833"></a><h3>attributes</h3><p>This grammar is used to add attributes to states (or state machines) or
|
||||
events: It evaluates to a fusion::map. You can use two forms:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">attributes_ << no_attributes_</code></p></li><li class="listitem"><p><code class="code">attributes_ << attribute_1 << ... <<
|
||||
attribute_n</code></p></li></ul></div><p>Attributes can be of any default-constructible type (fusion
|
||||
requirement).</p></div><div class="refsect2" title="configure"><a name="d0e6833"></a><h3>configure</h3><p>This grammar also has two forms:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">configure_ << no_configure_</code></p></li><li class="listitem"><p><code class="code">configure_ << type_1 << ... <<
|
||||
requirement).</p></div><div class="refsect2" title="configure"><a name="d0e6849"></a><h3>configure</h3><p>This grammar also has two forms:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">configure_ << no_configure_</code></p></li><li class="listitem"><p><code class="code">configure_ << type_1 << ... <<
|
||||
type_n</code></p></li></ul></div><p>This grammar is used to create inside one syntax:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>flags: <code class="code">configure_ << some_flag</code> where
|
||||
some_flag inherits from <code class="code">euml_flag<some_flag></code> or
|
||||
is defined using BOOST_MSM_EUML_FLAG.</p></li><li class="listitem"><p>deferred events: <code class="code">configure_ << some_event</code>
|
||||
@ -379,12 +379,12 @@ ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: +
|
||||
some_config inherits from
|
||||
<code class="code">euml_config<some_config></code>. At the moment,
|
||||
three predefined objects exist (in msm//front/euml/common.hpp):</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>no_exception: disable catching exceptions</p></li><li class="listitem"><p>no_msg_queue: disable message queue</p></li><li class="listitem"><p>deferred_events: manually enable handling of
|
||||
deferred events</p></li></ul></div></li></ul></div></div><div class="refsect2" title="initial states"><a name="d0e6887"></a><h3>initial states</h3><p>The grammar to define initial states for a state machine is: <code class="code">init_
|
||||
deferred events</p></li></ul></div></li></ul></div></div><div class="refsect2" title="initial states"><a name="d0e6903"></a><h3>initial states</h3><p>The grammar to define initial states for a state machine is: <code class="code">init_
|
||||
<< state_1 << ... << state_n</code> where
|
||||
state_1...state_n inherit from euml_state or is defined using
|
||||
BOOST_MSM_EUML_STATE, BOOST_MSM_EUML_INTERRUPT_STATE,
|
||||
BOOST_MSM_EUML_TERMINATE_STATE, BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE,
|
||||
BOOST_MSM_EUML_ENTRY_STATE or BOOST_MSM_EUML_EXIT_STATE.</p></div><div class="refsect2" title="functions"><a name="d0e6895"></a><h3>functions</h3><div class="refsect3" title="build_sm"><a name="d0e6898"></a><h4>build_sm</h4><p>This function has several overloads. The return type is not relevant
|
||||
BOOST_MSM_EUML_ENTRY_STATE or BOOST_MSM_EUML_EXIT_STATE.</p></div><div class="refsect2" title="functions"><a name="d0e6911"></a><h3>functions</h3><div class="refsect3" title="build_sm"><a name="d0e6914"></a><h4>build_sm</h4><p>This function has several overloads. The return type is not relevant
|
||||
to you as only decltype (return type) is what one needs.</p><p>Defines a state machine without entry or exit:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class Stt,class Init>
|
||||
func_state_machine<...> build_sm(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Stt ,Init</code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines a state machine with entry behavior:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class Stt,class Init,class
|
||||
Expr1> func_state_machine<...> build_sm(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Stt ,Init,Expr1 const&</code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines a state machine with entry and exit behaviors:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class Stt,class Init,class
|
||||
@ -403,7 +403,7 @@ ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: +
|
||||
Base> func_state_machine<...> build_sm(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Stt ,Init,Expr1 const&, Expr2 const&, Attributes
|
||||
const&, Configure const&, Base</code>;</div><div class="funcprototype-spacer"> </div></div><p>Notice that this function requires the extra parameter class
|
||||
StateNameTag to disambiguate state machines having the same parameters
|
||||
but still being different.</p></div><div class="refsect3" title="build_state"><a name="d0e6953"></a><h4>build_state</h4><p>This function has several overloads. The return type is not relevant
|
||||
but still being different.</p></div><div class="refsect3" title="build_state"><a name="d0e6969"></a><h4>build_state</h4><p>This function has several overloads. The return type is not relevant
|
||||
to you as only decltype (return type) is what one needs.</p><p>Defines a simple state without entry or exit:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">func_state<class StateNameTag,...> build_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code></code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines a simple state with entry behavior:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class Expr1>
|
||||
func_state<...> build_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Expr1 const&</code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines a simple state with entry and exit behaviors:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class Expr1, class Expr2>
|
||||
func_state<...> build_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Expr1 const&,Expr2 const&</code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines a simple state with entry, exit behaviors and
|
||||
@ -419,7 +419,7 @@ ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: +
|
||||
func_state<...> build_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Expr1 const&, Expr2 const&, Attributes const&,
|
||||
Configure const&, Base</code>;</div><div class="funcprototype-spacer"> </div></div><p>Notice that this function requires the extra parameter class
|
||||
StateNameTag to disambiguate states having the same parameters but still
|
||||
being different.</p></div><div class="refsect3" title="build_terminate_state"><a name="d0e7007"></a><h4>build_terminate_state</h4><p>This function has the same overloads as build_state.</p></div><div class="refsect3" title="build_interrupt_state"><a name="d0e7012"></a><h4>build_interrupt_state</h4><p>This function has several overloads. The return type is not relevant
|
||||
being different.</p></div><div class="refsect3" title="build_terminate_state"><a name="d0e7023"></a><h4>build_terminate_state</h4><p>This function has the same overloads as build_state.</p></div><div class="refsect3" title="build_interrupt_state"><a name="d0e7028"></a><h4>build_interrupt_state</h4><p>This function has several overloads. The return type is not relevant
|
||||
to you as only decltype (return type) is what one needs.</p><p>Defines an interrupt state without entry or exit:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class EndInterruptEvent>
|
||||
func_state<...> build_interrupt_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>EndInterruptEvent const&</code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines an interrupt state with entry behavior:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class
|
||||
EndInterruptEvent,class Expr1> func_state<...>
|
||||
@ -444,7 +444,7 @@ ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: +
|
||||
const&, Attributes const&, Configure const&,
|
||||
Base</code>;</div><div class="funcprototype-spacer"> </div></div><p>Notice that this function requires the extra parameter class
|
||||
StateNameTag to disambiguate states having the same parameters but still
|
||||
being different.</p></div><div class="refsect3" title="build_entry_state"><a name="d0e7067"></a><h4>build_entry_state</h4><p>This function has several overloads. The return type is not relevant
|
||||
being different.</p></div><div class="refsect3" title="build_entry_state"><a name="d0e7083"></a><h4>build_entry_state</h4><p>This function has several overloads. The return type is not relevant
|
||||
to you as only decltype (return type) is what one needs.</p><p>Defines an entry pseudo state without entry or exit:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,int RegionIndex>
|
||||
entry_func_state<...> build_entry_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code></code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines an entry pseudo state with entry behavior:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,int RegionIndex,class
|
||||
Expr1> entry_func_state<...> build_entry_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Expr1 const&</code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines an entry pseudo state with entry and exit behaviors:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,int RegionIndex,class
|
||||
@ -463,7 +463,7 @@ ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: +
|
||||
Base> entry_func_state<...> build_entry_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Expr1 const&, Expr2 const&, Attributes const&,
|
||||
Configure const&, Base</code>;</div><div class="funcprototype-spacer"> </div></div><p>Notice that this function requires the extra parameter class
|
||||
StateNameTag to disambiguate states having the same parameters but still
|
||||
being different.</p></div><div class="refsect3" title="build_exit_state"><a name="d0e7121"></a><h4>build_exit_state</h4><p>This function has several overloads. The return type is not relevant
|
||||
being different.</p></div><div class="refsect3" title="build_exit_state"><a name="d0e7137"></a><h4>build_exit_state</h4><p>This function has several overloads. The return type is not relevant
|
||||
to you as only decltype (return type) is what one needs.</p><p>Defines an exit pseudo state without entry or exit:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class Event>
|
||||
exit_func_state<...> build_exit_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Event const&</code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines an exit pseudo state with entry behavior:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class Event,class Expr1>
|
||||
exit_func_state<...> build_exit_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Event const&,Expr1 const&</code>;</div><div class="funcprototype-spacer"> </div></div><p>Defines an exit pseudo state with entry and exit behaviors:</p><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">template <class StateNameTag,class Event,class Expr1,
|
||||
@ -482,8 +482,8 @@ ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: +
|
||||
exit_func_state<...> build_exit_state(</code></td><td><code>)</code>;</td><td> </td></tr></table><div class="paramdef-list"><code>Event const&,Expr1 const&, Expr2 const&,
|
||||
Attributes const&, Configure const&, Base</code>;</div><div class="funcprototype-spacer"> </div></div><p>Notice that this function requires the extra parameter class
|
||||
StateNameTag to disambiguate states having the same parameters but still
|
||||
being different.</p></div><div class="refsect3" title="build_explicit_entry_state"><a name="d0e7176"></a><h4>build_explicit_entry_state</h4><p>This function has the same overloads as build_entry_state and
|
||||
explicit_entry_func_state as return type.</p></div></div></div><div class="refsect1" title="msm/front/euml/common.hpp"><a name="d0e7181"></a><h2>msm/front/euml/common.hpp</h2><div class="refsect2" title="types"><a name="d0e7184"></a><h3>types</h3><div class="refsect3" title="euml_event"><a name="d0e7187"></a><h4>euml_event</h4><p>The basic type for events with eUML.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class EventName> euml_event;</span></span> {<br>}</pre><pre class="programlisting">struct play : euml_event<play>{};</pre></div><div class="refsect3" title="euml_state"><a name="d0e7198"></a><h4>euml_state</h4><p>The basic type for states with eUML. You will usually not use this
|
||||
being different.</p></div><div class="refsect3" title="build_explicit_entry_state"><a name="d0e7192"></a><h4>build_explicit_entry_state</h4><p>This function has the same overloads as build_entry_state and
|
||||
explicit_entry_func_state as return type.</p></div></div></div><div class="refsect1" title="msm/front/euml/common.hpp"><a name="d0e7197"></a><h2>msm/front/euml/common.hpp</h2><div class="refsect2" title="types"><a name="d0e7200"></a><h3>types</h3><div class="refsect3" title="euml_event"><a name="d0e7203"></a><h4>euml_event</h4><p>The basic type for events with eUML.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class EventName> euml_event;</span></span> {<br>}</pre><pre class="programlisting">struct play : euml_event<play>{};</pre></div><div class="refsect3" title="euml_state"><a name="d0e7214"></a><h4>euml_state</h4><p>The basic type for states with eUML. You will usually not use this
|
||||
type directly as it is easier to use BOOST_MSM_EUML_STATE,
|
||||
BOOST_MSM_EUML_INTERRUPT_STATE, BOOST_MSM_EUML_TERMINATE_STATE,
|
||||
BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE, BOOST_MSM_EUML_ENTRY_STATE or
|
||||
@ -494,7 +494,7 @@ ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: +
|
||||
void foo() {...}
|
||||
template <class Event,class Fsm>
|
||||
void on_entry(Event const& evt,Fsm& fsm){...}
|
||||
};</pre></div><div class="refsect3" title="euml_flag"><a name="d0e7211"></a><h4>euml_flag</h4><p>The basic type for flags with eUML.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class FlagName> euml_flag;</span></span> {<br>}</pre><pre class="programlisting">struct PlayingPaused: euml_flag<PlayingPaused>{};</pre></div><div class="refsect3" title="euml_action"><a name="d0e7222"></a><h4>euml_action</h4><p>The basic type for state or transition behaviors and guards with
|
||||
};</pre></div><div class="refsect3" title="euml_flag"><a name="d0e7227"></a><h4>euml_flag</h4><p>The basic type for flags with eUML.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class FlagName> euml_flag;</span></span> {<br>}</pre><pre class="programlisting">struct PlayingPaused: euml_flag<PlayingPaused>{};</pre></div><div class="refsect3" title="euml_action"><a name="d0e7238"></a><h4>euml_action</h4><p>The basic type for state or transition behaviors and guards with
|
||||
eUML.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class AcionName> euml_action;</span></span> {<br>}</pre><pre class="programlisting">struct close_drawer : euml_action<close_drawer>
|
||||
{
|
||||
template <class Fsm,class Evt,class SourceState,class TargetState>
|
||||
@ -503,41 +503,41 @@ ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: +
|
||||
{
|
||||
template <class Event,class Fsm,class State>
|
||||
void operator()(Event const&,Fsm& fsm,State& ){...}
|
||||
};</pre></div><div class="refsect3" title="euml_config"><a name="d0e7237"></a><h4>euml_config</h4><p>The basic type for configuration possibilities with eUML.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class ConfigName> euml_config;</span></span> {<br>}</pre><p>You normally do not use this type directly but instead the instances
|
||||
};</pre></div><div class="refsect3" title="euml_config"><a name="d0e7253"></a><h4>euml_config</h4><p>The basic type for configuration possibilities with eUML.</p><pre class="classsynopsis"> <span class="ooclass"><span class="classname">template <class ConfigName> euml_config;</span></span> {<br>}</pre><p>You normally do not use this type directly but instead the instances
|
||||
of predefined configuration:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>no_exception: disable catching exceptions</p></li><li class="listitem"><p>no_msg_queue: disable message queue. The message queue
|
||||
allows you to send an event for procesing while in an event
|
||||
processing.</p></li><li class="listitem"><p>deferred_events: manually enable handling of deferred
|
||||
events</p></li></ul></div></div><div class="refsect3" title="invalid_type"><a name="d0e7258"></a><h4>invalid_type</h4><p>Type returned by grammar parsers if the grammar is invalid. Seeing
|
||||
this type will result in a static assertion.</p></div><div class="refsect3" title="no_action"><a name="d0e7263"></a><h4>no_action</h4><p>Placeholder type for use in entry/exit or transition behaviors, which
|
||||
does absolutely nothing.</p></div><div class="refsect3" title="source_"><a name="d0e7268"></a><h4>source_</h4><p>Generic object or function for the source state of a given transition:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>as object: returns by reference the source state of a
|
||||
events</p></li></ul></div></div><div class="refsect3" title="invalid_type"><a name="d0e7274"></a><h4>invalid_type</h4><p>Type returned by grammar parsers if the grammar is invalid. Seeing
|
||||
this type will result in a static assertion.</p></div><div class="refsect3" title="no_action"><a name="d0e7279"></a><h4>no_action</h4><p>Placeholder type for use in entry/exit or transition behaviors, which
|
||||
does absolutely nothing.</p></div><div class="refsect3" title="source_"><a name="d0e7284"></a><h4>source_</h4><p>Generic object or function for the source state of a given transition:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>as object: returns by reference the source state of a
|
||||
transition, usually to be used by another function (usually
|
||||
one created by MSM_EUML_METHOD or MSM_EUML_FUNCTION).</p><p>Example:
|
||||
</p><pre class="programlisting">some_user_function_(source_)</pre></li><li class="listitem"><p>as function: returns by reference the attribute passed as
|
||||
parameter.</p><p>Example:
|
||||
</p><pre class="programlisting">source_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="target_"><a name="d0e7288"></a><h4>target_</h4><p>Generic object or function for the target state of a given transition:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>as object: returns by reference the target state of a
|
||||
</p><pre class="programlisting">source_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="target_"><a name="d0e7304"></a><h4>target_</h4><p>Generic object or function for the target state of a given transition:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>as object: returns by reference the target state of a
|
||||
transition, usually to be used by another function (usually
|
||||
one created by MSM_EUML_METHOD or MSM_EUML_FUNCTION).</p><p>Example:
|
||||
</p><pre class="programlisting">some_user_function_(target_)</pre></li><li class="listitem"><p>as function: returns by reference the attribute passed as
|
||||
parameter.</p><p>Example:
|
||||
</p><pre class="programlisting">target_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="state_"><a name="d0e7308"></a><h4>state_</h4><p>Generic object or function for the state of a given entry / exit
|
||||
</p><pre class="programlisting">target_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="state_"><a name="d0e7324"></a><h4>state_</h4><p>Generic object or function for the state of a given entry / exit
|
||||
behavior. state_ means source_ while in the context of an exit behavior
|
||||
and target_ in the context of an entry behavior:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>as object: returns by reference the current state, usually
|
||||
to be used by another function (usually one created by
|
||||
MSM_EUML_METHOD or MSM_EUML_FUNCTION).</p><p>Example:
|
||||
</p><pre class="programlisting">some_user_function_(state_) // calls some_user_function on the current state</pre></li><li class="listitem"><p>as function: returns by reference the attribute passed as
|
||||
parameter.</p><p>Example:
|
||||
</p><pre class="programlisting">state_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="event_"><a name="d0e7328"></a><h4>event_</h4><p>Generic object or function for the event triggering a given transition
|
||||
</p><pre class="programlisting">state_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="event_"><a name="d0e7344"></a><h4>event_</h4><p>Generic object or function for the event triggering a given transition
|
||||
(valid in a transition behavior, as well as in state entry/exit behaviors):</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>as object: returns by reference the event of a transition,
|
||||
usually to be used by another function (usually one created
|
||||
by MSM_EUML_METHOD or MSM_EUML_FUNCTION).</p><p>Example:
|
||||
</p><pre class="programlisting">some_user_function_(event_)</pre></li><li class="listitem"><p>as function: returns by reference the attribute passed as
|
||||
parameter.</p><p>Example:
|
||||
</p><pre class="programlisting">event_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="fsm_"><a name="d0e7348"></a><h4>fsm_</h4><p>Generic object or function for the state machine containing a given transition:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>as object: returns by reference the event of a transition,
|
||||
</p><pre class="programlisting">event_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="fsm_"><a name="d0e7364"></a><h4>fsm_</h4><p>Generic object or function for the state machine containing a given transition:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>as object: returns by reference the event of a transition,
|
||||
usually to be used by another function (usually one created
|
||||
by MSM_EUML_METHOD or MSM_EUML_FUNCTION).</p><p>Example:
|
||||
</p><pre class="programlisting">some_user_function_(fsm_)</pre></li><li class="listitem"><p>as function: returns by reference the attribute passed as
|
||||
parameter.</p><p>Example:
|
||||
</p><pre class="programlisting">fsm_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="substate_"><a name="d0e7368"></a><h4>substate_</h4><p>Generic object or function returning a state of a given state machine:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>with 1 parameter: returns by reference the state passed as
|
||||
</p><pre class="programlisting">fsm_(m_counter)++</pre></li></ul></div></div><div class="refsect3" title="substate_"><a name="d0e7384"></a><h4>substate_</h4><p>Generic object or function returning a state of a given state machine:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>with 1 parameter: returns by reference the state passed as
|
||||
parameter, usually to be used by another function (usually
|
||||
one created by MSM_EUML_METHOD or MSM_EUML_FUNCTION).</p><p>Example:
|
||||
</p><pre class="programlisting">some_user_function_(substate_(my_state))</pre></li><li class="listitem"><p>with 2 parameters: returns by reference the state passed
|
||||
@ -545,46 +545,46 @@ ActionSequence := Action | (Action ',' Action)</pre><p>Relevant operators are: +
|
||||
parameter, usually to be used by another function (usually
|
||||
one created by MSM_EUML_METHOD or MSM_EUML_FUNCTION). This
|
||||
makes sense when used in combination with attribute_.</p><p>Example (equivalent to the previous example):
|
||||
</p><pre class="programlisting">some_user_function_(substate_(my_state,fsm_))</pre></li></ul></div></div><div class="refsect3" title="attribute_"><a name="d0e7388"></a><h4>attribute_</h4><p>Generic object or function returning the attribute passed (by name) as
|
||||
</p><pre class="programlisting">some_user_function_(substate_(my_state,fsm_))</pre></li></ul></div></div><div class="refsect3" title="attribute_"><a name="d0e7404"></a><h4>attribute_</h4><p>Generic object or function returning the attribute passed (by name) as
|
||||
second parameter of the thing passed as first (a state, event or state
|
||||
machine). Example: </p><p>
|
||||
</p><pre class="programlisting">attribute_(substate_(my_state),cd_name_attribute)++</pre><p>
|
||||
</p></div><div class="refsect3" title="True_"><a name="d0e7398"></a><h4>True_</h4><p>Functor returning true for transition or state behaviors. Like all
|
||||
</p></div><div class="refsect3" title="True_"><a name="d0e7414"></a><h4>True_</h4><p>Functor returning true for transition or state behaviors. Like all
|
||||
constants, only the functor form exists, so parenthesis are necessary.
|
||||
Example:</p><p>
|
||||
</p><pre class="programlisting">if_then_(True_(),/* some action always called*/)</pre><p>
|
||||
</p></div><div class="refsect3" title="False_"><a name="d0e7408"></a><h4>False_</h4><p>Functor returning false for transition or state behaviors. Like all
|
||||
</p></div><div class="refsect3" title="False_"><a name="d0e7424"></a><h4>False_</h4><p>Functor returning false for transition or state behaviors. Like all
|
||||
constants, only the functor form exists, so parenthesis are necessary.
|
||||
Example:</p><p>
|
||||
</p><pre class="programlisting">if_then_(False_(),/* some action never called */)</pre><p>
|
||||
</p></div><div class="refsect3" title="Int_<int value>"><a name="d0e7418"></a><h4>Int_<int value></h4><p>Functor returning an integer value for transition or state behaviors.
|
||||
</p></div><div class="refsect3" title="Int_<int value>"><a name="d0e7434"></a><h4>Int_<int value></h4><p>Functor returning an integer value for transition or state behaviors.
|
||||
Like all constants, only the functor form exists, so parenthesis are
|
||||
necessary. Example:</p><p>
|
||||
</p><pre class="programlisting">target_(m_ringing_cpt) = Int_<RINGING_TIME>() // RINGING_TIME is a constant</pre><p>
|
||||
</p></div><div class="refsect3" title="Char_<char value>"><a name="d0e7428"></a><h4>Char_<char value></h4><p>Functor returning a char value for transition or state behaviors. Like
|
||||
</p></div><div class="refsect3" title="Char_<char value>"><a name="d0e7444"></a><h4>Char_<char value></h4><p>Functor returning a char value for transition or state behaviors. Like
|
||||
all constants, only the functor form exists, so parenthesis are
|
||||
necessary. Example:</p><p>
|
||||
</p><pre class="programlisting">// look for 'S' in event.m_song
|
||||
[string_find_(event_(m_song),Char_<'S'>(),Size_t_<0>()) != Npos_<string>()]</pre><p>
|
||||
</p></div><div class="refsect3" title="Size_t_<size_t value>"><a name="d0e7438"></a><h4>Size_t_<size_t value></h4><p>Functor returning a size_t value for transition or state behaviors.
|
||||
</p></div><div class="refsect3" title="Size_t_<size_t value>"><a name="d0e7454"></a><h4>Size_t_<size_t value></h4><p>Functor returning a size_t value for transition or state behaviors.
|
||||
Like all constants, only the functor form exists, so parenthesis are
|
||||
necessary. Example:</p><p>
|
||||
</p><pre class="programlisting">substr_(event_(m_song),Size_t_<1>()) // returns a substring of event.m_song</pre><p>
|
||||
</p></div><div class="refsect3" title="String_ < mpl::string >"><a name="d0e7448"></a><h4>String_ < mpl::string ></h4><p>Functor returning a string for transition or state behaviors. Like all
|
||||
</p></div><div class="refsect3" title="String_ < mpl::string >"><a name="d0e7464"></a><h4>String_ < mpl::string ></h4><p>Functor returning a string for transition or state behaviors. Like all
|
||||
constants, only the functor form exists, so parenthesis are necessary.
|
||||
Requires boost >= 1.40 for mpl::string.</p><p>Example:</p><p>
|
||||
</p><pre class="programlisting">// adds "Let it be" to fsm.m_src_container
|
||||
push_back_(fsm_(m_src_container), String_<mpl::string<'Let','it ','be'> >())</pre><p>
|
||||
</p></div><div class="refsect3" title="Predicate_ < some_stl_compatible_functor >"><a name="d0e7460"></a><h4>Predicate_ < some_stl_compatible_functor ></h4><p>This functor eUML-enables a STL functor (for use in an algorithm).
|
||||
</p></div><div class="refsect3" title="Predicate_ < some_stl_compatible_functor >"><a name="d0e7476"></a><h4>Predicate_ < some_stl_compatible_functor ></h4><p>This functor eUML-enables a STL functor (for use in an algorithm).
|
||||
This is necessary because all what is in the transition table must be a
|
||||
eUML terminal.</p><p>Example:</p><pre class="programlisting">//equivalent to:
|
||||
//std::accumulate(fsm.m_vec.begin(),fsm.m_vec.end(),1,std::plus<int>())== 1
|
||||
accumulate_(begin_(fsm_(m_vec)),end_(fsm_(m_vec)),Int_<1>(),
|
||||
Predicate_<std::plus<int> >()) == Int_<1>())</pre></div><div class="refsect3" title="process_"><a name="d0e7469"></a><h4>process_</h4><p>This function sends an event to up to 4 state machines by calling
|
||||
Predicate_<std::plus<int> >()) == Int_<1>())</pre></div><div class="refsect3" title="process_"><a name="d0e7485"></a><h4>process_</h4><p>This function sends an event to up to 4 state machines by calling
|
||||
<code class="code">process_event</code> on them:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">process_(some_event)</code> : processes an event in
|
||||
the current (containing) state machine.</p></li><li class="listitem"><p><code class="code">process_(some_event [,fsm1...fsm4] )</code> :
|
||||
processes the same event in the 1-4 state machines passed as
|
||||
argument.</p></li></ul></div></div><div class="refsect3" title="process2_"><a name="d0e7488"></a><h4>process2_</h4><p>This function sends an event to up to 3 state machines by calling
|
||||
argument.</p></li></ul></div></div><div class="refsect3" title="process2_"><a name="d0e7504"></a><h4>process2_</h4><p>This function sends an event to up to 3 state machines by calling
|
||||
<code class="code">process_event</code> on them and copy-constructing the event
|
||||
from the data passed as second parameter:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">process2_(some_event, some_data)</code> : processes
|
||||
an event in the current (containing) state machine.</p></li><li class="listitem"><p><code class="code">process2_(some_event, some_data [,fsm1...fsm3]
|
||||
@ -594,24 +594,24 @@ accumulate_(begin_(fsm_(m_vec)),end_(fsm_(m_vec)),Int_<1>(),
|
||||
// copy-constructed with event.m_song
|
||||
process2_(NotFound,event_(m_song))</pre><p>
|
||||
</p><p>With the following definitions:</p><pre class="programlisting">BOOST_MSM_EUML_DECLARE_ATTRIBUTE(std::string,m_song)//declaration of m_song
|
||||
NotFound (const string& data) // copy-constructor of NotFound</pre></div><div class="refsect3" title="is_flag_"><a name="d0e7518"></a><h4>is_flag_</h4><p>This function tells if a flag is active by calling
|
||||
NotFound (const string& data) // copy-constructor of NotFound</pre></div><div class="refsect3" title="is_flag_"><a name="d0e7534"></a><h4>is_flag_</h4><p>This function tells if a flag is active by calling
|
||||
<code class="code">is_flag_active</code> on the current state machine or one
|
||||
passed as parameter:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">is_flag_(some_flag)</code> : calls
|
||||
<code class="code">is_flag_active</code> on the current (containing)
|
||||
state machine.</p></li><li class="listitem"><p><code class="code">is_flag_(some_flag, some_fsm)</code> :calls
|
||||
<code class="code">is_flag_active</code> on the state machine.passed
|
||||
as argument.</p></li></ul></div></div><div class="refsect3" title="defer_"><a name="d0e7543"></a><h4>defer_</h4><p>This object defers the current event by calling
|
||||
as argument.</p></li></ul></div></div><div class="refsect3" title="defer_"><a name="d0e7559"></a><h4>defer_</h4><p>This object defers the current event by calling
|
||||
<code class="code">defer_event</code> on the current state machine.
|
||||
Example:</p><pre class="programlisting">Empty() + play() / defer_</pre></div><div class="refsect3" title="explicit_(submachine-name,state-name)"><a name="d0e7553"></a><h4>explicit_(submachine-name,state-name)</h4><p>Used as transition's target, causes an explicit entry into the given
|
||||
Example:</p><pre class="programlisting">Empty() + play() / defer_</pre></div><div class="refsect3" title="explicit_(submachine-name,state-name)"><a name="d0e7569"></a><h4>explicit_(submachine-name,state-name)</h4><p>Used as transition's target, causes an explicit entry into the given
|
||||
state from the given submachine. Several explicit_ as targets, separated
|
||||
by commas, means a fork. The state must have been declared as such using
|
||||
BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE.</p></div><div class="refsect3" title="entry_pt_(submachine-name,state-name)"><a name="d0e7558"></a><h4>entry_pt_(submachine-name,state-name)</h4><p>Used as transition's target from a containing state machine, causes
|
||||
BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE.</p></div><div class="refsect3" title="entry_pt_(submachine-name,state-name)"><a name="d0e7574"></a><h4>entry_pt_(submachine-name,state-name)</h4><p>Used as transition's target from a containing state machine, causes
|
||||
submachine-name to be entered using the given entry pseudo-state. This
|
||||
state must have been declared as pseudo entry using
|
||||
BOOST_MSM_EUML_ENTRY_STATE.</p></div><div class="refsect3" title="exit_pt_(submachine-name,state-name)"><a name="d0e7563"></a><h4>exit_pt_(submachine-name,state-name)</h4><p>Used as transition's source from a containing state machine, causes
|
||||
BOOST_MSM_EUML_ENTRY_STATE.</p></div><div class="refsect3" title="exit_pt_(submachine-name,state-name)"><a name="d0e7579"></a><h4>exit_pt_(submachine-name,state-name)</h4><p>Used as transition's source from a containing state machine, causes
|
||||
submachine-name to be left using the given exit pseudo-state. This state
|
||||
must have been declared as pseudo exit using
|
||||
BOOST_MSM_EUML_EXIT_STATE.</p></div><div class="refsect3" title="MSM_EUML_FUNCTION"><a name="d0e7568"></a><h4>MSM_EUML_FUNCTION</h4><p>This macro creates a eUML function and a functor for use with the
|
||||
BOOST_MSM_EUML_EXIT_STATE.</p></div><div class="refsect3" title="MSM_EUML_FUNCTION"><a name="d0e7584"></a><h4>MSM_EUML_FUNCTION</h4><p>This macro creates a eUML function and a functor for use with the
|
||||
functor front-end, based on a free function:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>first parameter: the name of the functor</p></li><li class="listitem"><p>second parameter: the underlying function</p></li><li class="listitem"><p>third parameter: the eUML function name</p></li><li class="listitem"><p>fourth parameter: the return type if used in a transition
|
||||
behavior</p></li><li class="listitem"><p>fifth parameter: the return type if used in a state
|
||||
behavior (entry/exit)</p></li></ul></div><p> Note that the function itself can take up to 5
|
||||
@ -619,7 +619,7 @@ NotFound (const string& data) // copy-constructor of NotFound</pre></div><di
|
||||
</p><pre class="programlisting">MSM_EUML_FUNCTION(BinarySearch_,std::binary_search,binary_search_,bool,bool)</pre><p>
|
||||
</p><p>Can be used like:</p><p>
|
||||
</p><pre class="programlisting">binary_search_(begin_(fsm_(m_var)),end_(fsm_(m_var)),Int_<9>())</pre><p>
|
||||
</p></div><div class="refsect3" title="MSM_EUML_METHOD"><a name="d0e7604"></a><h4>MSM_EUML_METHOD</h4><p>This macro creates a eUML function and a functor for use with the
|
||||
</p></div><div class="refsect3" title="MSM_EUML_METHOD"><a name="d0e7620"></a><h4>MSM_EUML_METHOD</h4><p>This macro creates a eUML function and a functor for use with the
|
||||
functor front-end, based on a method:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>first parameter: the name of the functor</p></li><li class="listitem"><p>second parameter: the underlying function</p></li><li class="listitem"><p>third parameter: the eUML function name</p></li><li class="listitem"><p>fourth parameter: the return type if used in a transition
|
||||
behavior</p></li><li class="listitem"><p>fifth parameter: the return type if used in a state
|
||||
behavior (entry/exit)</p></li></ul></div><p> Note that the method itself can take up to 4 arguments
|
||||
@ -631,40 +631,40 @@ NotFound (const string& data) // copy-constructor of NotFound</pre></div><di
|
||||
};
|
||||
MSM_EUML_METHOD(ActivateEmpty_,activate_empty,activate_empty_,void,void)</pre><p>Can be used like:</p><p>
|
||||
</p><pre class="programlisting">Empty == Open + open_close / (close_drawer , activate_empty_(target_))</pre><p>
|
||||
</p></div><div class="refsect3" title="BOOST_MSM_EUML_ACTION(action-instance-name)"><a name="d0e7637"></a><h4>BOOST_MSM_EUML_ACTION(action-instance-name)</h4><p>This macro declares a behavior type and a const instance for use in
|
||||
</p></div><div class="refsect3" title="BOOST_MSM_EUML_ACTION(action-instance-name)"><a name="d0e7653"></a><h4>BOOST_MSM_EUML_ACTION(action-instance-name)</h4><p>This macro declares a behavior type and a const instance for use in
|
||||
state or transition behaviors. The action implementation itself follows
|
||||
the macro declaration, for example:</p><pre class="programlisting">BOOST_MSM_EUML_ACTION(good_disk_format)
|
||||
{
|
||||
template <class Fsm,class Evt,class SourceState,class TargetState>
|
||||
void/bool operator()(Evt const& evt,Fsm&,SourceState& ,TargetState& ){...}
|
||||
};</pre></div><div class="refsect3" title="BOOST_MSM_EUML_FLAG(flag-instance-name)"><a name="d0e7644"></a><h4>BOOST_MSM_EUML_FLAG(flag-instance-name)</h4><p>This macro declares a flag type and a const instance for use in
|
||||
behaviors.</p></div><div class="refsect3" title="BOOST_MSM_EUML_FLAG_NAME(flag-instance-name)"><a name="d0e7649"></a><h4>BOOST_MSM_EUML_FLAG_NAME(flag-instance-name)</h4><p>This macro returns the name of the flag type generated by
|
||||
};</pre></div><div class="refsect3" title="BOOST_MSM_EUML_FLAG(flag-instance-name)"><a name="d0e7660"></a><h4>BOOST_MSM_EUML_FLAG(flag-instance-name)</h4><p>This macro declares a flag type and a const instance for use in
|
||||
behaviors.</p></div><div class="refsect3" title="BOOST_MSM_EUML_FLAG_NAME(flag-instance-name)"><a name="d0e7665"></a><h4>BOOST_MSM_EUML_FLAG_NAME(flag-instance-name)</h4><p>This macro returns the name of the flag type generated by
|
||||
BOOST_MSM_EUML_FLAG. You need this where the type is required (usually
|
||||
with the back-end method is_flag_active). For example:</p><pre class="programlisting">fsm.is_flag_active<BOOST_MSM_EUML_FLAG_NAME(CDLoaded)>()</pre></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_ATTRIBUTE(event-type,event-name)"><a name="d0e7656"></a><h4>BOOST_MSM_EUML_DECLARE_ATTRIBUTE(event-type,event-name)</h4><p>This macro declares an attribute called event-name of type event-type.
|
||||
with the back-end method is_flag_active). For example:</p><pre class="programlisting">fsm.is_flag_active<BOOST_MSM_EUML_FLAG_NAME(CDLoaded)>()</pre></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_ATTRIBUTE(event-type,event-name)"><a name="d0e7672"></a><h4>BOOST_MSM_EUML_DECLARE_ATTRIBUTE(event-type,event-name)</h4><p>This macro declares an attribute called event-name of type event-type.
|
||||
This attribute can then be made part of an attribute list using
|
||||
BOOST_MSM_EUML_ATTRIBUTES.</p></div><div class="refsect3" title="BOOST_MSM_EUML_ATTRIBUTES(attributes-expression,attributes-name)"><a name="d0e7661"></a><h4>BOOST_MSM_EUML_ATTRIBUTES(attributes-expression,attributes-name)</h4><p>This macro declares an attribute list called attributes-name based on
|
||||
BOOST_MSM_EUML_ATTRIBUTES.</p></div><div class="refsect3" title="BOOST_MSM_EUML_ATTRIBUTES(attributes-expression,attributes-name)"><a name="d0e7677"></a><h4>BOOST_MSM_EUML_ATTRIBUTES(attributes-expression,attributes-name)</h4><p>This macro declares an attribute list called attributes-name based on
|
||||
the expression as first argument. These attributes can then be made part
|
||||
of an event using BOOST_MSM_EUML_EVENT_WITH_ATTRIBUTES, of a state as
|
||||
3rd parameter of BOOST_MSM_EUML_STATE or of a state machine as 5th
|
||||
parameter of BOOST_MSM_EUML_DECLARE_STATE_MACHINE.</p><p>Attributes are added using left-shift, for example:</p><pre class="programlisting">// m_song is of type std::string
|
||||
BOOST_MSM_EUML_DECLARE_ATTRIBUTE(std::string,m_song)
|
||||
// contains one attribute, m_song
|
||||
BOOST_MSM_EUML_ATTRIBUTES((attributes_ << m_song ), FoundDef)</pre></div><div class="refsect3" title="BOOST_MSM_EUML_EVENT(event-instance name)"><a name="d0e7670"></a><h4>BOOST_MSM_EUML_EVENT(event-instance name)</h4><p>This macro defines an event type (event-instance-name_helper) and
|
||||
BOOST_MSM_EUML_ATTRIBUTES((attributes_ << m_song ), FoundDef)</pre></div><div class="refsect3" title="BOOST_MSM_EUML_EVENT(event-instance name)"><a name="d0e7686"></a><h4>BOOST_MSM_EUML_EVENT(event-instance name)</h4><p>This macro defines an event type (event-instance-name_helper) and
|
||||
declares a const instance of this event type called event-instance-name
|
||||
for use in a transition table or state behaviors.</p></div><div class="refsect3" title="BOOST_MSM_EUML_EVENT_WITH_ATTRIBUTES(event-instance-name,attributes)"><a name="d0e7675"></a><h4>BOOST_MSM_EUML_EVENT_WITH_ATTRIBUTES(event-instance-name,attributes)</h4><p>This macro defines an event type (event-instance-name_helper) and
|
||||
for use in a transition table or state behaviors.</p></div><div class="refsect3" title="BOOST_MSM_EUML_EVENT_WITH_ATTRIBUTES(event-instance-name,attributes)"><a name="d0e7691"></a><h4>BOOST_MSM_EUML_EVENT_WITH_ATTRIBUTES(event-instance-name,attributes)</h4><p>This macro defines an event type (event-instance-name_helper) and
|
||||
declares a const instance of this event type called event-instance-name
|
||||
for use in a transition table or state behaviors. The event will have as
|
||||
attributes the ones passed by the second argument:</p><p><code class="code">BOOST_MSM_EUML_EVENT_WITH_ATTRIBUTES(Found,FoundDef)</code>
|
||||
</p><p>The created event instance supports operator()(attributes) so that
|
||||
</p><pre class="programlisting">my_back_end.process_event(Found(some_string))</pre><p>
|
||||
is possible.</p></div><div class="refsect3" title="BOOST_MSM_EUML_EVENT_NAME(event-instance-name)"><a name="d0e7689"></a><h4>BOOST_MSM_EUML_EVENT_NAME(event-instance-name)</h4><p>This macro returns the name of the event type generated by
|
||||
is possible.</p></div><div class="refsect3" title="BOOST_MSM_EUML_EVENT_NAME(event-instance-name)"><a name="d0e7705"></a><h4>BOOST_MSM_EUML_EVENT_NAME(event-instance-name)</h4><p>This macro returns the name of the event type generated by
|
||||
BOOST_MSM_EUML_EVENT or BOOST_MSM_EUML_EVENT_WITH_ATTRIBUTES. You need
|
||||
this where the type is required (usually inside a back-end definition).
|
||||
For example:</p><p>
|
||||
</p><pre class="programlisting">typedef msm::back::state_machine<Playing_,
|
||||
msm::back::ShallowHistory<mpl::vector<BOOST_MSM_EUML_EVENT_NAME(end_pause)
|
||||
> > > Playing_type;</pre><p>
|
||||
</p></div><div class="refsect3" title="BOOST_MSM_EUML_STATE(build-expression,state-instance-name)"><a name="d0e7699"></a><h4>BOOST_MSM_EUML_STATE(build-expression,state-instance-name)</h4><p>This macro defines a state type (state-instance-name_helper) and
|
||||
</p></div><div class="refsect3" title="BOOST_MSM_EUML_STATE(build-expression,state-instance-name)"><a name="d0e7715"></a><h4>BOOST_MSM_EUML_STATE(build-expression,state-instance-name)</h4><p>This macro defines a state type (state-instance-name_helper) and
|
||||
declares a const instance of this state type called state-instance-name
|
||||
for use in a transition table or state behaviors.</p><p>There are several possibilitites for the expression syntax:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>(): state without entry or exit action.</p></li><li class="listitem"><p>(Expr1): state with entry but no exit action.</p></li><li class="listitem"><p>(Expr1,Expr2): state with entry and exit action.</p></li><li class="listitem"><p>(Expr1,Expr2,Attributes): state with entry and exit
|
||||
action, defining some attributes.</p></li><li class="listitem"><p>(Expr1,Expr2,Attributes,Configure): state with entry and
|
||||
@ -673,7 +673,7 @@ msm::back::ShallowHistory<mpl::vector<BOOST_MSM_EUML_EVENT_NAME(end_pause)
|
||||
events).</p></li><li class="listitem"><p>(Expr1,Expr2,Attributes,Configure,Base): state with entry
|
||||
and exit action, defining some attributes, flags and
|
||||
deferred events (plain msm deferred events) and a
|
||||
non-default base state (as defined in standard MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_INTERRUPT_STATE(build-expression,state-instance-name)"><a name="d0e7725"></a><h4>BOOST_MSM_EUML_INTERRUPT_STATE(build-expression,state-instance-name)</h4><p>This macro defines an interrupt state type
|
||||
non-default base state (as defined in standard MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_INTERRUPT_STATE(build-expression,state-instance-name)"><a name="d0e7741"></a><h4>BOOST_MSM_EUML_INTERRUPT_STATE(build-expression,state-instance-name)</h4><p>This macro defines an interrupt state type
|
||||
(state-instance-name_helper) and declares a const instance of this state
|
||||
type called state-instance-name for use in a transition table or state
|
||||
behaviors.</p><p>There are several possibilitites for the expression syntax. In all of
|
||||
@ -690,7 +690,7 @@ msm::back::ShallowHistory<mpl::vector<BOOST_MSM_EUML_EVENT_NAME(end_pause)
|
||||
interrupt state with entry and exit action, defining some
|
||||
attributes, flags and deferred events (plain msm deferred
|
||||
events) and a non-default base state (as defined in standard
|
||||
MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_TERMINATE_STATE(build-expression,state-instance-name)"><a name="d0e7751"></a><h4>BOOST_MSM_EUML_TERMINATE_STATE(build-expression,state-instance-name)</h4><p>This macro defines a terminate pseudo-state type
|
||||
MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_TERMINATE_STATE(build-expression,state-instance-name)"><a name="d0e7767"></a><h4>BOOST_MSM_EUML_TERMINATE_STATE(build-expression,state-instance-name)</h4><p>This macro defines a terminate pseudo-state type
|
||||
(state-instance-name_helper) and declares a const instance of this state
|
||||
type called state-instance-name for use in a transition table or state
|
||||
behaviors.</p><p>There are several possibilitites for the expression syntax:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>(): terminate pseudo-state without entry or exit
|
||||
@ -704,7 +704,7 @@ msm::back::ShallowHistory<mpl::vector<BOOST_MSM_EUML_EVENT_NAME(end_pause)
|
||||
pseudo-state with entry and exit action, defining some
|
||||
attributes, flags and deferred events (plain msm deferred
|
||||
events) and a non-default base state (as defined in standard
|
||||
MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_EXIT_STATE(build-expression,state-instance-name)"><a name="d0e7777"></a><h4>BOOST_MSM_EUML_EXIT_STATE(build-expression,state-instance-name)</h4><p>This macro defines an exit pseudo-state type
|
||||
MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_EXIT_STATE(build-expression,state-instance-name)"><a name="d0e7793"></a><h4>BOOST_MSM_EUML_EXIT_STATE(build-expression,state-instance-name)</h4><p>This macro defines an exit pseudo-state type
|
||||
(state-instance-name_helper) and declares a const instance of this state
|
||||
type called state-instance-name for use in a transition table or state
|
||||
behaviors.</p><p>There are several possibilitites for the expression syntax:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>(forwarded_event):exit pseudo-state without entry or exit
|
||||
@ -720,7 +720,7 @@ msm::back::ShallowHistory<mpl::vector<BOOST_MSM_EUML_EVENT_NAME(end_pause)
|
||||
attributes, flags and deferred events (plain msm deferred
|
||||
events) and a non-default base state (as defined in standard
|
||||
MSM).</p></li></ul></div><p>Note that the forwarded_event must be constructible from the event
|
||||
sent by the submachine containing the exit point.</p></div><div class="refsect3" title="BOOST_MSM_EUML_ENTRY_STATE(int region-index,build-expression,state-instance-name)"><a name="d0e7805"></a><h4>BOOST_MSM_EUML_ENTRY_STATE(int
|
||||
sent by the submachine containing the exit point.</p></div><div class="refsect3" title="BOOST_MSM_EUML_ENTRY_STATE(int region-index,build-expression,state-instance-name)"><a name="d0e7821"></a><h4>BOOST_MSM_EUML_ENTRY_STATE(int
|
||||
region-index,build-expression,state-instance-name)</h4><p>This macro defines an entry pseudo-state type
|
||||
(state-instance-name_helper) and declares a const instance of this state
|
||||
type called state-instance-name for use in a transition table or state
|
||||
@ -735,7 +735,7 @@ msm::back::ShallowHistory<mpl::vector<BOOST_MSM_EUML_EVENT_NAME(end_pause)
|
||||
pseudo-state with entry and exit action, defining some
|
||||
attributes, flags and deferred events (plain msm deferred
|
||||
events) and a non-default base state (as defined in standard
|
||||
MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE(int region-index,build-expression,state-instance-name)"><a name="d0e7831"></a><h4>BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE(int
|
||||
MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE(int region-index,build-expression,state-instance-name)"><a name="d0e7847"></a><h4>BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE(int
|
||||
region-index,build-expression,state-instance-name)</h4><p>This macro defines a submachine's substate type
|
||||
(state-instance-name_helper), which can be explicitly entered and also
|
||||
declares a const instance of this state type called state-instance-name
|
||||
@ -746,28 +746,28 @@ msm::back::ShallowHistory<mpl::vector<BOOST_MSM_EUML_EVENT_NAME(end_pause)
|
||||
events).</p></li><li class="listitem"><p>(Expr1,Expr2,Attributes,Configure,Base): state with entry
|
||||
and exit action, defining some attributes, flags and
|
||||
deferred events (plain msm deferred events) and a
|
||||
non-default base state (as defined in standard MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_STATE_NAME(state-instance-name)"><a name="d0e7857"></a><h4>BOOST_MSM_EUML_STATE_NAME(state-instance-name)</h4><p>This macro returns the name of the state type generated by
|
||||
non-default base state (as defined in standard MSM).</p></li></ul></div></div><div class="refsect3" title="BOOST_MSM_EUML_STATE_NAME(state-instance-name)"><a name="d0e7873"></a><h4>BOOST_MSM_EUML_STATE_NAME(state-instance-name)</h4><p>This macro returns the name of the state type generated by
|
||||
BOOST_MSM_EUML_STATE or other state macros. You need this where the type
|
||||
is required (usually using a backend function). For example:</p><p>
|
||||
</p><pre class="programlisting">fsm.get_state<BOOST_MSM_EUML_STATE_NAME(StringFind)&>().some_state_function();</pre><p>
|
||||
</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_STATE(build-expression,state-instance-name)"><a name="d0e7867"></a><h4>BOOST_MSM_EUML_DECLARE_STATE(build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_STATE but does not provide an instance, simply a
|
||||
type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_INTERRUPT_STATE(build-expression,state-instance-name)"><a name="d0e7872"></a><h4>BOOST_MSM_EUML_DECLARE_INTERRUPT_STATE(build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_INTERRUPT_STATE but does not provide an instance,
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_TERMINATE_STATE(build-expression,state-instance-name)"><a name="d0e7877"></a><h4>BOOST_MSM_EUML_DECLARE_TERMINATE_STATE(build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_TERMINATE_STATE but does not provide an instance,
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_EXIT_STATE(build-expression,state-instance-name)"><a name="d0e7882"></a><h4>BOOST_MSM_EUML_DECLARE_EXIT_STATE(build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_EXIT_STATE but does not provide an instance,
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_ENTRY_STATE(int region-index,build-expression,state-instance-name)"><a name="d0e7887"></a><h4>BOOST_MSM_EUML_DECLARE_ENTRY_STATE(int
|
||||
</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_STATE(build-expression,state-instance-name)"><a name="d0e7883"></a><h4>BOOST_MSM_EUML_DECLARE_STATE(build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_STATE but does not provide an instance, simply a
|
||||
type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_INTERRUPT_STATE(build-expression,state-instance-name)"><a name="d0e7888"></a><h4>BOOST_MSM_EUML_DECLARE_INTERRUPT_STATE(build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_INTERRUPT_STATE but does not provide an instance,
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_TERMINATE_STATE(build-expression,state-instance-name)"><a name="d0e7893"></a><h4>BOOST_MSM_EUML_DECLARE_TERMINATE_STATE(build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_TERMINATE_STATE but does not provide an instance,
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_EXIT_STATE(build-expression,state-instance-name)"><a name="d0e7898"></a><h4>BOOST_MSM_EUML_DECLARE_EXIT_STATE(build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_EXIT_STATE but does not provide an instance,
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_ENTRY_STATE(int region-index,build-expression,state-instance-name)"><a name="d0e7903"></a><h4>BOOST_MSM_EUML_DECLARE_ENTRY_STATE(int
|
||||
region-index,build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_ENTRY_STATE but does not provide an instance,
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_EXPLICIT_ENTRY_STATE(int region-index,build-expression,state-instance-name)"><a name="d0e7892"></a><h4>BOOST_MSM_EUML_DECLARE_EXPLICIT_ENTRY_STATE(int
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_EXPLICIT_ENTRY_STATE(int region-index,build-expression,state-instance-name)"><a name="d0e7908"></a><h4>BOOST_MSM_EUML_DECLARE_EXPLICIT_ENTRY_STATE(int
|
||||
region-index,build-expression,state-instance-name)</h4><p>Like BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE but does not provide an
|
||||
instance, simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_TRANSITION_TABLE(expression, table-instance-name)"><a name="d0e7897"></a><h4>BOOST_MSM_EUML_TRANSITION_TABLE(expression,
|
||||
instance, simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_TRANSITION_TABLE(expression, table-instance-name)"><a name="d0e7913"></a><h4>BOOST_MSM_EUML_TRANSITION_TABLE(expression,
|
||||
table-instance-name)</h4><p>This macro declares a transition table type and also declares a const
|
||||
instance of the table which can then be used in a state machine
|
||||
declaration (see BOOST_MSM_EUML_DECLARE_STATE_MACHINE).The expression
|
||||
must follow the <span class="command"><strong><a class="command" href="re03.html#reference-stt-grammar">transition
|
||||
table grammar</a></strong></span>.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_TRANSITION_TABLE(iexpression,table-instance-name)"><a name="d0e7905"></a><h4>BOOST_MSM_EUML_DECLARE_TRANSITION_TABLE(iexpression,table-instance-name)</h4><p>Like BOOST_MSM_EUML_TRANSITION_TABLE but does not provide an instance,
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_INTERNAL_TRANSITION_TABLE(expression, table-instance-name)"><a name="d0e7910"></a><h4>BOOST_MSM_EUML_INTERNAL_TRANSITION_TABLE(expression,
|
||||
table grammar</a></strong></span>.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_TRANSITION_TABLE(iexpression,table-instance-name)"><a name="d0e7921"></a><h4>BOOST_MSM_EUML_DECLARE_TRANSITION_TABLE(iexpression,table-instance-name)</h4><p>Like BOOST_MSM_EUML_TRANSITION_TABLE but does not provide an instance,
|
||||
simply a type declaration.</p></div><div class="refsect3" title="BOOST_MSM_EUML_INTERNAL_TRANSITION_TABLE(expression, table-instance-name)"><a name="d0e7926"></a><h4>BOOST_MSM_EUML_INTERNAL_TRANSITION_TABLE(expression,
|
||||
table-instance-name)</h4><p>This macro declares a transition table type and also declares a const
|
||||
instance of the table.The expression must follow the <span class="command"><strong><a class="command" href="re03.html#reference-stt-grammar">transition table
|
||||
grammar</a></strong></span>. For the moment, this macro is not used.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_INTERNAL_TRANSITION_TABLE(iexpression,table-instance-name)"><a name="d0e7918"></a><h4>BOOST_MSM_EUML_DECLARE_INTERNAL_TRANSITION_TABLE(iexpression,table-instance-name)</h4><p>Like BOOST_MSM_EUML_TRANSITION_TABLE but does not provide an instance,
|
||||
grammar</a></strong></span>. For the moment, this macro is not used.</p></div><div class="refsect3" title="BOOST_MSM_EUML_DECLARE_INTERNAL_TRANSITION_TABLE(iexpression,table-instance-name)"><a name="d0e7934"></a><h4>BOOST_MSM_EUML_DECLARE_INTERNAL_TRANSITION_TABLE(iexpression,table-instance-name)</h4><p>Like BOOST_MSM_EUML_TRANSITION_TABLE but does not provide an instance,
|
||||
simply a type declaration. This is currently the only way to declare an
|
||||
internal transition table with eUML. For example:</p><pre class="programlisting">BOOST_MSM_EUML_DECLARE_STATE((Open_Entry,Open_Exit),Open_def)
|
||||
struct Open_impl : public Open_def
|
||||
|
BIN
doc/PDF/msm.pdf
BIN
doc/PDF/msm.pdf
Binary file not shown.
@ -1902,11 +1902,12 @@ struct Empty : public msm::front::euml::func_state<Empty_tag,Empty_Entry,Empt
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1>
|
||||
<title><command xml:id="eUML-front-end"/>eUML (experimental)</title>
|
||||
<title><command xml:id="eUML-front-end"/>eUML</title>
|
||||
<para><emphasis role="underline">Important note</emphasis>: eUML requires a compiler
|
||||
supporting Boost.Typeof. More generally, eUML has experimental status because
|
||||
some compilers will start crashing when a state machine becomes too big (usually
|
||||
when you write huge actions).</para>
|
||||
supporting Boost.Typeof. Full eUML has experimental status (but not if only the
|
||||
transition table is written using eUML) because some compilers will start
|
||||
crashing when a state machine becomes too big (usually when you write huge
|
||||
actions).</para>
|
||||
<para>The previous front-ends are simple to write but still force an amount of
|
||||
noise, mostly MPL types, so it would be nice to write code looking like C++
|
||||
(with a C++ action language) directly inside the transition table, like UML
|
||||
@ -4033,6 +4034,22 @@ typename ::boost::enable_if<
|
||||
</chapter>
|
||||
<chapter>
|
||||
<title>Version history</title>
|
||||
<sect1>
|
||||
<title>From V2.26 to V2.27 (Boost 1.56)</title>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Bugfix: no_transition in case of an exception.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Bugfix: Trac 9280</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Bugfix: incomplete namespace names in eUML</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1>
|
||||
<title>From V2.25 to V2.26 (Boost 1.55)</title>
|
||||
<para>
|
||||
|
Loading…
Reference in New Issue
Block a user