Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r57648 - in sandbox/msm: boost/msm/back libs/msm/doc libs/msm/doc/index-Dateien
From: christophe.j.henry_at_[hidden]
Date: 2009-11-14 10:36:29


Author: chenry
Date: 2009-11-14 10:36:28 EST (Sat, 14 Nov 2009)
New Revision: 57648
URL: http://svn.boost.org/trac/boost/changeset/57648

Log:
fixed default-constructor problem
Binary files modified:
   sandbox/msm/libs/msm/doc/index-Dateien/image035.jpg
   sandbox/msm/libs/msm/doc/index-Dateien/image036.jpg
   sandbox/msm/libs/msm/doc/index-Dateien/image037.jpg
   sandbox/msm/libs/msm/doc/index-Dateien/image038.jpg
   sandbox/msm/libs/msm/doc/index-Dateien/image039.jpg
Text files modified:
   sandbox/msm/boost/msm/back/state_machine.hpp | 57 ++
   sandbox/msm/libs/msm/doc/index-Dateien/props0033.xml | 2
   sandbox/msm/libs/msm/doc/index.htm | 816 +++++++++++++++++++++++----------------
   3 files changed, 538 insertions(+), 337 deletions(-)

Modified: sandbox/msm/boost/msm/back/state_machine.hpp
==============================================================================
--- sandbox/msm/boost/msm/back/state_machine.hpp (original)
+++ sandbox/msm/boost/msm/back/state_machine.hpp 2009-11-14 10:36:28 EST (Sat, 14 Nov 2009)
@@ -55,6 +55,10 @@
 BOOST_MPL_HAS_XXX_TRAIT_DEF(non_forwarding_flag)
 BOOST_MPL_HAS_XXX_TRAIT_DEF(direct_entry)
 
+#ifndef BOOST_MSM_CONSTRUCTOR_ARG_SIZE
+#define BOOST_MSM_CONSTRUCTOR_ARG_SIZE 5 // default max number of arguments for constructors
+#endif
+
 namespace boost { namespace msm { namespace back
 {
 // event used internally for wrapping a direct entry
@@ -827,6 +831,59 @@
          fill_states(this);
      }
  
+ // Construct with the default initial states and some default argument(s)
+#ifdef BOOST_MSVC
+
+#define MSM_CONSTRUCTOR_HELPER_EXECUTE_SUB(z, n, unused) ARG ## n t ## n
+#define MSM_CONSTRUCTOR_HELPER_EXECUTE(z, n, unused) \
+ template <BOOST_PP_ENUM_PARAMS(n, class ARG)> \
+ state_machine<Derived,HistoryPolicy \
+ ,WorkaroundVC9 \
+ >(BOOST_PP_ENUM(n, MSM_CONSTRUCTOR_HELPER_EXECUTE_SUB, ~ ) ) \
+ :Derived(BOOST_PP_ENUM_PARAMS(n,t)) \
+ ,m_events_queue() \
+ ,m_deferred_events_queue() \
+ ,m_history() \
+ ,m_event_processing(false) \
+ ,m_is_included(false) \
+ ,m_visitors() \
+ ,m_substate_list() \
+ { \
+ ::boost::mpl::for_each< seq_initial_states, ::boost::msm::back::wrap<mpl::placeholders::_1> > \
+ (init_states(m_states)); \
+ m_history.set_initial_states(m_states); \
+ fill_states(this); \
+ }
+ BOOST_PP_REPEAT_FROM_TO(1,BOOST_PP_ADD(BOOST_MSM_CONSTRUCTOR_ARG_SIZE,1), MSM_CONSTRUCTOR_HELPER_EXECUTE, ~)
+#undef MSM_CONSTRUCTOR_HELPER_EXECUTE
+#undef MSM_CONSTRUCTOR_HELPER_EXECUTE_SUB
+#else
+
+#define MSM_CONSTRUCTOR_HELPER_EXECUTE_SUB(z, n, unused) ARG ## n t ## n
+#define MSM_CONSTRUCTOR_HELPER_EXECUTE(z, n, unused) \
+ template <BOOST_PP_ENUM_PARAMS(n, class ARG)> \
+ state_machine<Derived,HistoryPolicy \
+ >(BOOST_PP_ENUM(n, MSM_CONSTRUCTOR_HELPER_EXECUTE_SUB, ~ ) ) \
+ :Derived(BOOST_PP_ENUM_PARAMS(n,t)) \
+ ,m_events_queue() \
+ ,m_deferred_events_queue() \
+ ,m_history() \
+ ,m_event_processing(false) \
+ ,m_is_included(false) \
+ ,m_visitors() \
+ ,m_substate_list() \
+ { \
+ ::boost::mpl::for_each< seq_initial_states, ::boost::msm::back::wrap<mpl::placeholders::_1> > \
+ (init_states(m_states)); \
+ m_history.set_initial_states(m_states); \
+ fill_states(this); \
+ }
+ BOOST_PP_REPEAT_FROM_TO(1,BOOST_PP_ADD(BOOST_MSM_CONSTRUCTOR_ARG_SIZE,1), MSM_CONSTRUCTOR_HELPER_EXECUTE, ~)
+#undef MSM_CONSTRUCTOR_HELPER_EXECUTE
+#undef MSM_CONSTRUCTOR_HELPER_EXECUTE_SUB
+
+#endif
+
      // assignment operator using the copy policy to decide if non_copyable, shallow or deep copying is necessary
      library_sm& operator= (library_sm const& rhs)
      {

Modified: sandbox/msm/libs/msm/doc/index-Dateien/image035.jpg
==============================================================================
Binary files. No diff available.

Modified: sandbox/msm/libs/msm/doc/index-Dateien/image036.jpg
==============================================================================
Binary files. No diff available.

Modified: sandbox/msm/libs/msm/doc/index-Dateien/image037.jpg
==============================================================================
Binary files. No diff available.

Modified: sandbox/msm/libs/msm/doc/index-Dateien/image038.jpg
==============================================================================
Binary files. No diff available.

Modified: sandbox/msm/libs/msm/doc/index-Dateien/image039.jpg
==============================================================================
Binary files. No diff available.

Modified: sandbox/msm/libs/msm/doc/index-Dateien/props0033.xml
==============================================================================
--- sandbox/msm/libs/msm/doc/index-Dateien/props0033.xml (original)
+++ sandbox/msm/libs/msm/doc/index-Dateien/props0033.xml 2009-11-14 10:36:28 EST (Sat, 14 Nov 2009)
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<ds:datastoreItem ds:itemID="{510B9391-7F97-4F18-AFC4-2B3C5A63EA09}" xmlns:ds="http://schemas.openxmlformats.org/officeDocument/2006/customXml"><ds:schemaRefs><ds:schemaRef ds:uri="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"/></ds:schemaRefs></ds:datastoreItem>
\ No newline at end of file
+<ds:datastoreItem ds:itemID="{2F692F76-3B14-40AE-8571-9C8DCBB2B21F}" xmlns:ds="http://schemas.openxmlformats.org/officeDocument/2006/customXml"><ds:schemaRefs><ds:schemaRef ds:uri="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"/></ds:schemaRefs></ds:datastoreItem>
\ No newline at end of file

Modified: sandbox/msm/libs/msm/doc/index.htm
==============================================================================
--- sandbox/msm/libs/msm/doc/index.htm (original)
+++ sandbox/msm/libs/msm/doc/index.htm 2009-11-14 10:36:28 EST (Sat, 14 Nov 2009)
@@ -23,15 +23,15 @@
   <o:Author>Christophe</o:Author>
   <o:Template>Normal</o:Template>
   <o:LastAuthor>Christophe</o:LastAuthor>
- <o:Revision>277</o:Revision>
+ <o:Revision>279</o:Revision>
   <o:Created>2009-09-03T20:17:00Z</o:Created>
- <o:LastSaved>2009-11-09T22:04:00Z</o:LastSaved>
+ <o:LastSaved>2009-11-14T15:27:00Z</o:LastSaved>
   <o:Pages>39</o:Pages>
- <o:Words>18815</o:Words>
- <o:Characters>118541</o:Characters>
- <o:Lines>987</o:Lines>
- <o:Paragraphs>274</o:Paragraphs>
- <o:CharactersWithSpaces>137082</o:CharactersWithSpaces>
+ <o:Words>18935</o:Words>
+ <o:Characters>119293</o:Characters>
+ <o:Lines>994</o:Lines>
+ <o:Paragraphs>275</o:Paragraphs>
+ <o:CharactersWithSpaces>137953</o:CharactersWithSpaces>
   <o:Version>12.00</o:Version>
  </o:DocumentProperties>
 </xml><![endif]-->
@@ -449,65 +449,73 @@
         panose-1:2 2 6 9 4 2 5 8 3 4;
         mso-font-alt:"\FF2D\FF33 \660E\671D";
         mso-font-charset:128;
- mso-generic-font-family:modern;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:fixed;
- mso-font-signature:-536870145 1791491579 18 0 131231 0;}
+ mso-font-signature:1 134676480 16 0 131072 0;}
 @font-face
         {font-family:Batang;
         panose-1:2 3 6 0 0 1 1 1 1 1;
         mso-font-alt:\BC14\D0D5;
         mso-font-charset:129;
- mso-generic-font-family:roman;
- mso-font-pitch:variable;
- mso-font-signature:-1342176593 1775729915 48 0 524447 0;}
+ mso-generic-font-family:auto;
+ mso-font-format:other;
+ mso-font-pitch:fixed;
+ mso-font-signature:1 151388160 16 0 524288 0;}
 @font-face
         {font-family:SimSun;
         panose-1:2 1 6 0 3 1 1 1 1 1;
         mso-font-alt:\5B8B\4F53;
         mso-font-charset:134;
         mso-generic-font-family:auto;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:3 680460288 22 0 262145 0;}
+ mso-font-signature:1 135135232 16 0 262144 0;}
 @font-face
         {font-family:PMingLiU;
         panose-1:2 2 5 0 0 0 0 0 0 0;
         mso-font-alt:\65B0\7D30\660E\9AD4;
         mso-font-charset:136;
- mso-generic-font-family:roman;
+ mso-generic-font-family:auto;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:-1610611969 684719354 22 0 1048577 0;}
+ mso-font-signature:1 134742016 16 0 1048576 0;}
 @font-face
         {font-family:"MS Gothic";
         panose-1:2 11 6 9 7 2 5 8 2 4;
         mso-font-alt:"\FF2D\FF33 \30B4\30B7\30C3\30AF";
         mso-font-charset:128;
         mso-generic-font-family:modern;
+ mso-font-format:other;
         mso-font-pitch:fixed;
- mso-font-signature:-536870145 1791491579 18 0 131231 0;}
+ mso-font-signature:1 134676480 16 0 131072 0;}
 @font-face
         {font-family:Dotum;
         panose-1:2 11 6 0 0 1 1 1 1 1;
         mso-font-alt:\B3CB\C6C0;
         mso-font-charset:129;
- mso-generic-font-family:swiss;
- mso-font-pitch:variable;
- mso-font-signature:-1342176593 1775729915 48 0 524447 0;}
+ mso-generic-font-family:modern;
+ mso-font-format:other;
+ mso-font-pitch:fixed;
+ mso-font-signature:1 151388160 16 0 524288 0;}
 @font-face
         {font-family:SimHei;
         panose-1:2 1 6 9 6 1 1 1 1 1;
         mso-font-alt:\9ED1\4F53;
         mso-font-charset:134;
         mso-generic-font-family:modern;
+ mso-font-format:other;
         mso-font-pitch:fixed;
- mso-font-signature:-2147482945 953122042 22 0 262145 0;}
+ mso-font-signature:1 135135232 16 0 262144 0;}
 @font-face
         {font-family:MingLiU;
         panose-1:2 2 5 9 0 0 0 0 0 0;
         mso-font-alt:\7D30\660E\9AD4;
         mso-font-charset:136;
         mso-generic-font-family:modern;
+ mso-font-format:other;
         mso-font-pitch:fixed;
- mso-font-signature:-1610611969 684719354 22 0 1048577 0;}
+ mso-font-signature:1 134742016 16 0 1048576 0;}
 @font-face
         {font-family:Mincho;
         panose-1:2 2 6 9 4 3 5 8 3 5;
@@ -522,37 +530,42 @@
         panose-1:2 11 6 0 0 1 1 1 1 1;
         mso-font-alt:\AD74\B9BC;
         mso-font-charset:129;
- mso-generic-font-family:swiss;
- mso-font-pitch:variable;
- mso-font-signature:-1342176593 1775729915 48 0 524447 0;}
+ mso-generic-font-family:roman;
+ mso-font-format:other;
+ mso-font-pitch:fixed;
+ mso-font-signature:1 151388160 16 0 524288 0;}
 @font-face
         {font-family:Century;
         panose-1:2 4 6 4 5 5 5 2 3 4;
         mso-font-charset:0;
         mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:647 0 0 0 159 0;}
+ mso-font-signature:3 0 0 0 1 0;}
 @font-face
         {font-family:"Angsana New";
         panose-1:2 2 6 3 5 4 5 2 3 4;
- mso-font-charset:0;
+ mso-font-charset:222;
         mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:-2130706429 0 0 0 65537 0;}
+ mso-font-signature:16777217 0 0 0 65536 0;}
 @font-face
         {font-family:"Cordia New";
         panose-1:2 11 3 4 2 2 2 2 2 4;
- mso-font-charset:0;
- mso-generic-font-family:swiss;
+ mso-font-charset:222;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:-2130706429 0 0 0 65537 0;}
+ mso-font-signature:16777217 0 0 0 65536 0;}
 @font-face
         {font-family:Mangal;
         panose-1:2 4 5 3 5 2 3 3 2 2;
- mso-font-charset:0;
+ mso-font-charset:1;
         mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:32771 0 0 0 1 0;}
+ mso-font-signature:8192 0 0 0 0 0;}
 @font-face
         {font-family:Latha;
         panose-1:2 0 4 0 0 0 0 0 0 0;
@@ -566,29 +579,33 @@
         panose-1:1 10 5 2 5 3 6 3 3 3;
         mso-font-charset:0;
         mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:67110535 0 0 0 159 0;}
+ mso-font-signature:12583555 0 0 0 13 0;}
 @font-face
         {font-family:Vrinda;
         panose-1:1 1 6 0 1 1 1 1 1 1;
- mso-font-charset:0;
- mso-generic-font-family:auto;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:65539 0 0 0 1 0;}
+ mso-font-signature:0 0 0 0 0 0;}
 @font-face
         {font-family:Raavi;
         panose-1:2 0 5 0 0 0 0 0 0 0;
- mso-font-charset:0;
- mso-generic-font-family:auto;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:131075 0 0 0 1 0;}
+ mso-font-signature:0 0 0 0 0 0;}
 @font-face
         {font-family:Shruti;
         panose-1:2 11 6 4 2 2 2 2 2 4;
- mso-font-charset:0;
- mso-generic-font-family:swiss;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:262147 0 0 0 1 0;}
+ mso-font-signature:0 0 0 0 0 0;}
 @font-face
         {font-family:Sendnya;
         panose-1:0 0 4 0 0 0 0 0 0 0;
@@ -600,38 +617,43 @@
 @font-face
         {font-family:Gautami;
         panose-1:2 0 5 0 0 0 0 0 0 0;
- mso-font-charset:0;
- mso-generic-font-family:auto;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:-2145386493 0 0 0 1 0;}
+ mso-font-signature:0 0 0 0 0 0;}
 @font-face
         {font-family:Tunga;
         panose-1:0 0 4 0 0 0 0 0 0 0;
- mso-font-charset:0;
- mso-generic-font-family:auto;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:4194307 0 0 0 1 0;}
+ mso-font-signature:0 0 0 0 0 0;}
 @font-face
         {font-family:"Estrangelo Edessa";
         panose-1:3 8 6 0 0 0 0 0 0 0;
- mso-font-charset:0;
- mso-generic-font-family:script;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:-2147475389 0 128 0 1 0;}
+ mso-font-signature:0 0 0 0 0 0;}
 @font-face
         {font-family:"Cambria Math";
         panose-1:2 4 5 3 5 4 6 3 2 4;
- mso-font-charset:0;
+ mso-font-charset:1;
         mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:-1610611985 1107304683 0 0 159 0;}
+ mso-font-signature:0 0 0 0 0 0;}
 @font-face
         {font-family:"Arial Unicode MS";
         panose-1:2 11 6 4 2 2 2 2 2 4;
- mso-font-charset:128;
- mso-generic-font-family:swiss;
+ mso-font-charset:0;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
         mso-font-pitch:variable;
- mso-font-signature:-134238209 -371195905 63 0 4129279 0;}
+ mso-font-signature:3 0 0 0 1 0;}
 @font-face
         {font-family:Cambria;
         panose-1:2 4 5 3 5 4 6 3 2 4;
@@ -1763,7 +1785,8 @@
         font-weight:bold;
         font-style:italic;}
 a:link, span.MsoHyperlink
- {mso-style-priority:99;
+ {mso-style-noshow:yes;
+ mso-style-priority:99;
         color:blue;
         text-decoration:underline;
         text-underline:single;}
@@ -3598,6 +3621,38 @@
         mso-level-number-position:left;
         text-indent:-18.0pt;
         font-family:Symbol;}
+@list l36:level2
+ {mso-level-tab-stop:72.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l36:level3
+ {mso-level-tab-stop:108.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l36:level4
+ {mso-level-tab-stop:144.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l36:level5
+ {mso-level-tab-stop:180.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l36:level6
+ {mso-level-tab-stop:216.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l36:level7
+ {mso-level-tab-stop:252.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l36:level8
+ {mso-level-tab-stop:288.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l36:level9
+ {mso-level-tab-stop:324.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
 @list l37
         {mso-list-id:1745571200;
         mso-list-template-ids:-429486050;}
@@ -4944,7 +4999,7 @@
 <meta name=CHANGEDBY content=xtoff>
 <meta name=CHANGEDBY content=xtoff>
 <!--[if gte mso 9]><xml>
- <o:shapedefaults v:ext="edit" spidmax="38914"/>
+ <o:shapedefaults v:ext="edit" spidmax="40962"/>
 </xml><![endif]--><!--[if gte mso 9]><xml>
  <o:shapelayout v:ext="edit">
   <o:idmap v:ext="edit" data="1"/>
@@ -5110,6 +5165,13 @@
 lang=EN-US style='mso-ansi-language:EN-US'><a href="#_Processing_events_inside">Processing
 events inside from within the front-end</a><o:p></o:p></span></p>
 
+<p style='margin-left:54.0pt;text-indent:-18.0pt;mso-list:l29 level1 lfo3'><![if !supportLists]><span
+lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
+lang=EN-US style='mso-ansi-language:EN-US'><a href="#_State_machine_constructor">State
+machine constructor with arguments</a><o:p></o:p></span></p>
+
 <p style='margin-left:18.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'><a
 href="#_Customizing_states">Customizing states</a><o:p></o:p></span></p>
 
@@ -5290,13 +5352,13 @@
 lang=EN-US style='font-size:16.0pt;font-family:"Arial","sans-serif";mso-fareast-font-family:
 "Times New Roman";mso-ansi-language:EN-US'>Introduction<o:p></o:p></span></h1>
 
-<p><span lang=EN-US style='mso-ansi-language:EN-US'>Msm is a framework which
-enables you to build a Finite State Machine in a straightforward, descriptive
-and easy-to-use manner. It requires minimal effort to generate a working
-program from an UML state machine diagram. This work was inspired by the state
-machine described in the book of David Abrahams and Aleksey Gurtovoy &#8220;C++
-Template Metaprogramming&#8221; and adds most of what UML Designers are expecting
-from an UML State Machine framework:<o:p></o:p></span></p>
+<p><span lang=EN-US style='mso-ansi-language:EN-US'>Msm is a framework which enables
+you to build a Finite State Machine in a straightforward, descriptive and
+easy-to-use manner. It requires minimal effort to generate a working program
+from an UML state machine diagram. This work was inspired by the state machine
+described in the book of David Abrahams and Aleksey Gurtovoy &#8220;C++
+Template Metaprogramming&#8221; and adds most of what UML Designers are
+expecting from an UML State Machine framework:<o:p></o:p></span></p>
 
 <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l40 level1 lfo7;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
@@ -5411,8 +5473,8 @@
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
 style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 </span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>A
-new concept named &#8220;flags&#8221;. This can be seen as an alternative to Boost.Statechart&#8217;s
-state_downcast<o:p></o:p></span></p>
+new concept named &#8220;flags&#8221;. This can be seen as an alternative to
+Boost.Statechart&#8217;s state_downcast<o:p></o:p></span></p>
 
 <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l12 level1 lfo8;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
@@ -5440,20 +5502,21 @@
 to describe a state machine. Msm now proudly offers as a frontend actions made
 of functors instead of actions methods and a new Domain-Specific-Embedded
 Language for UML-like description of transition tables named eUML. This
-frontend also allows writing actions and guards directly in the transition
-table or state definition, without the need to define extra functions.<o:p></o:p></span></p>
+frontend also allows writing actions and guards directly in the transition table
+or state definition, without the need to define extra functions.<o:p></o:p></span></p>
 
 <p style='margin-bottom:12.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'>Msm
-was designed with the idea of helping developers build software the Model-Driven-Development
-way. State machines are a very useful tool for MDD, as they allow a graphical
-representation of a dynamic view from a modeled system. Msm aims to provide a
-Model-Driven approach with the reversible and repeatable properties. But the
-help provided by state machines usually stops with the structure definition
-(states, transitions, etc.) and there is little help for actually writing the
-actions, guards and stat actions. Msm now brings MDD further by providing a new
-functional language for the definition of actions and guards directly in the
-transition table. Functional languages have interesting properties, one of
-which is relevant to MDD, the ability to be easily graphically represented.<o:p></o:p></span></p>
+was designed with the idea of helping developers build software the
+Model-Driven-Development way. State machines are a very useful tool for MDD, as
+they allow a graphical representation of a dynamic view from a modeled system.
+Msm aims to provide a Model-Driven approach with the reversible and repeatable
+properties. But the help provided by state machines usually stops with the
+structure definition (states, transitions, etc.) and there is little help for
+actually writing the actions, guards and stat actions. Msm now brings MDD
+further by providing a new functional language for the definition of actions
+and guards directly in the transition table. Functional languages have
+interesting properties, one of which is relevant to MDD, the ability to be
+easily graphically represented.<o:p></o:p></span></p>
 
 <p style='margin-bottom:12.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'>In
 a UML diagram, a transition is represented as:<o:p></o:p></span></p>
@@ -5724,11 +5787,10 @@
 
 <p style='margin-bottom:12.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
 
-<p><span lang=EN-US style='mso-ansi-language:EN-US'>For people working on
-embedded systems, selling Boost.Statechart has got the handicap O (n)
-double-dispatch, the virtual calls and the fact that many of them are coming
-from the C world and thus no fans of big template argument lists or
-forward-declarations.<o:p></o:p></span></p>
+<p><span lang=EN-US style='mso-ansi-language:EN-US'>For people working on embedded
+systems, selling Boost.Statechart has got the handicap O (n) double-dispatch,
+the virtual calls and the fact that many of them are coming from the C world
+and thus no fans of big template argument lists or forward-declarations.<o:p></o:p></span></p>
 
 <p><span lang=EN-US style='mso-ansi-language:EN-US'>The declarative interface
 of Msm is transparent, and a developer not needing the more complex features is
@@ -5751,9 +5813,9 @@
 
 <p style='margin-bottom:12.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
 
-<p><span lang=EN-US style='mso-ansi-language:EN-US'>If you are looking for an
-efficient and straightforward UML-based finite state machine framework, we sincerely
-hope you will enjoy this work!<o:p></o:p></span></p>
+<p><span lang=EN-US style='mso-ansi-language:EN-US'>If you are looking for an efficient
+and straightforward UML-based finite state machine framework, we sincerely hope
+you will enjoy this work!<o:p></o:p></span></p>
 
 <h2><a name="_Founding_example"></a><span lang=EN-US style='mso-fareast-font-family:
 "Times New Roman";mso-ansi-language:EN-US'>Founding example<o:p></o:p></span></h2>
@@ -5772,8 +5834,8 @@
 style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
 <p><code><b style='mso-bidi-font-weight:normal'><span lang=EN-US
-style='font-size:10.0pt;mso-ansi-language:EN-US'>p.start(); // activates the init
-state (calls on_entry on the state machine and the first state)</span></b></code><b
+style='font-size:10.0pt;mso-ansi-language:EN-US'>p.start(); // activates the
+init state (calls on_entry on the state machine and the first state)</span></b></code><b
 style='mso-bidi-font-weight:normal'><span lang=EN-US style='mso-ansi-language:
 EN-US'><o:p></o:p></span></b></p>
 
@@ -6486,8 +6548,9 @@
 
 <p><span lang=EN-US style='mso-ansi-language:EN-US'>SimpleTutorial.cpp<o:p></o:p></span></p>
 
-<p><span lang=EN-US style='mso-ansi-language:EN-US'>The previously described transition
-table is an easily-generated view of the following UML State Machine Diagram:<o:p></o:p></span></p>
+<p><span lang=EN-US style='mso-ansi-language:EN-US'>The previously described
+transition table is an easily-generated view of the following UML State Machine
+Diagram:<o:p></o:p></span></p>
 
 <p style='margin-bottom:12.0pt'><span style='mso-no-proof:yes'><!--[if gte vml 1]><v:shape
  id="Grafik_x0020_15" o:spid="_x0000_i1036" type="#_x0000_t75" alt="SimpleTutorial.jpg"
@@ -6783,8 +6846,8 @@
 color:black;mso-ansi-language:EN-US'>No id as an int has to be defined</span></u></code><code><span
 lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
 font-family:"Times New Roman","serif";color:black;mso-ansi-language:EN-US'>,
-which allows reuse of states in other state machines. The ids get generated at
-compile-time. The disadvantage is that it makes debugging harder. See <a
+which allows reuse of states in other state machines. The ids get generated at compile-time.
+The disadvantage is that it makes debugging harder. See <a
 href="#_Annex_A_Debugging">Annex A</a> for an explanation of how to find the
 generated id. A small helper to get a state array as typeid-generated names is
 explained in Annex A and an example is shown
@@ -6846,7 +6909,8 @@
 <p style='margin-bottom:0cm;margin-bottom:.0001pt'><code><span lang=EN-US
 style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
 color:black;mso-ansi-language:EN-US'>Quite easy, isn't it? You may however
-think the added value is not as great as promised, which leads us to the next tutorials...<o:p></o:p></span></code></p>
+think the added value is not as great as promised, which leads us to the next
+tutorials...<o:p></o:p></span></code></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt'><span lang=EN-US
 style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
@@ -6861,9 +6925,9 @@
 
 <p><span lang=EN-US style='mso-ansi-language:EN-US'>The framework would not be
 a very big subset of an UML state machine if it didn't support composite
-states. The UML specification isn't too clear about the difference between composite
-states and sub-state machines, so Msm ignores it for simplicity and defines
-that a composite state is a state machine itself.<o:p></o:p></span></p>
+states. The UML specification isn't too clear about the difference between
+composite states and sub-state machines, so Msm ignores it for simplicity and
+defines that a composite state is a state machine itself.<o:p></o:p></span></p>
 
 <p><span lang=EN-US style='mso-ansi-language:EN-US'>A small example is better
 as a long explanation, so, we had player defined as:<o:p></o:p></span></p>
@@ -7112,8 +7176,8 @@
 <p style='margin-bottom:12.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
 
 <h3><a name="_Orthogonal_States_(+Defer"></a><span lang=EN-US style='mso-fareast-font-family:
-"Times New Roman";mso-ansi-language:EN-US'>Orthogonal States (+Defer and Terminate
-State)<o:p></o:p></span></h3>
+"Times New Roman";mso-ansi-language:EN-US'>Orthogonal States (+Defer and
+Terminate State)<o:p></o:p></span></h3>
 
 <p><span lang=EN-US style='mso-ansi-language:EN-US'><a
 href="Orthogonal-deferred.cpp">Orthogonal-deferred.cpp</a><o:p></o:p></span></p>
@@ -7183,12 +7247,12 @@
 style='font-family:"Courier New";mso-ansi-language:EN-US'>Empty</span><span
 lang=EN-US style='mso-ansi-language:EN-US'> and </span><span lang=EN-US
 style='font-family:"Courier New";mso-ansi-language:EN-US'>Open</span><span
-lang=EN-US style='mso-ansi-language:EN-US'> states and get it handled in the first
-state where the event is not to be deferred. It can then be handled or
-rejected. In this example, only when </span><span lang=EN-US style='font-family:
-"Courier New";mso-ansi-language:EN-US'>Stopped</span><span lang=EN-US
-style='mso-ansi-language:EN-US'> becomes active will the event be handled as </span><span
-lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>Empty</span><span
+lang=EN-US style='mso-ansi-language:EN-US'> states and get it handled in the
+first state where the event is not to be deferred. It can then be handled or rejected.
+In this example, only when </span><span lang=EN-US style='font-family:"Courier New";
+mso-ansi-language:EN-US'>Stopped</span><span lang=EN-US style='mso-ansi-language:
+EN-US'> becomes active will the event be handled as </span><span lang=EN-US
+style='font-family:"Courier New";mso-ansi-language:EN-US'>Empty</span><span
 lang=EN-US style='mso-ansi-language:EN-US'> and </span><span lang=EN-US
 style='font-family:"Courier New";mso-ansi-language:EN-US'>Open</span><span
 lang=EN-US style='mso-ansi-language:EN-US'> defer the event.<o:p></o:p></span></p>
@@ -7236,9 +7300,8 @@
 style='font-size:10.0pt;color:#030003;mso-ansi-language:EN-US'>ErrorMode</span></code><code><span
 lang=EN-US style='font-size:10.0pt;color:black;mso-ansi-language:EN-US'> : </span></code><code><span
 lang=EN-US style='font-size:10.0pt;color:blue;mso-ansi-language:EN-US'>public</span></code><code><span
-lang=EN-US style='font-size:10.0pt;color:black;mso-ansi-language:EN-US'>
-msm::front::</span></code><code><span lang=EN-US style='font-size:10.0pt;
-color:#030003;mso-ansi-language:EN-US'>terminate_state&lt;&gt;</span></code><span
+lang=EN-US style='font-size:10.0pt;color:black;mso-ansi-language:EN-US'> msm::front::</span></code><code><span
+lang=EN-US style='font-size:10.0pt;color:#030003;mso-ansi-language:EN-US'>terminate_state&lt;&gt;</span></code><span
 lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
 <p><code><span lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:
@@ -7360,9 +7423,9 @@
 example, isn't it? To solve this problem, you define what is called a shallow
 or a deep history.<o:p></o:p></span></p>
 
-<p><span lang=EN-US style='mso-ansi-language:EN-US'>A shallow history reactivates
-the last active state of a submachine when this state machine becomes active
-again. <o:p></o:p></span></p>
+<p><span lang=EN-US style='mso-ansi-language:EN-US'>A shallow history
+reactivates the last active state of a submachine when this state machine
+becomes active again. <o:p></o:p></span></p>
 
 <p><span lang=EN-US style='mso-ansi-language:EN-US'>The deep history does the
 same recursively, so if this last active state of the submachine was itself a
@@ -7461,9 +7524,9 @@
 <p><span lang=EN-US style='mso-ansi-language:EN-US'>Flags.cpp<o:p></o:p></span></p>
 
 <p><span lang=EN-US style='mso-ansi-language:EN-US'>This tutorial is devoted to
-a concept not defined in UML: flags. It has been added into Msm after proving
-itself useful on many occasions. Please, do not be frightened as we are not
-talking about ugly shortcuts made of an improbable collusion of Booleans.<o:p></o:p></span></p>
+a concept not defined in UML: flags. It has been added into Msm after proving itself
+useful on many occasions. Please, do not be frightened as we are not talking
+about ugly shortcuts made of an improbable collusion of Booleans.<o:p></o:p></span></p>
 
 <p><span lang=EN-US style='mso-ansi-language:EN-US'>So what is it and what is
 its use?<o:p></o:p></span></p>
@@ -7548,8 +7611,8 @@
 lang=EN-US style='mso-ansi-language:EN-US'> supports both properties.<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>Now to check if your player has a
-loaded CD, check if your flag is active in the current state:<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>Now to check if your player has a loaded
+CD, check if your flag is active in the current state:<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><code><span
 lang=EN-US style='font-size:10.0pt;color:#030003;mso-ansi-language:EN-US'>player</span></code><code><span
@@ -7730,9 +7793,9 @@
 href="DirectEntryTutorial.cpp">DirectEntryTutorial</a>.<o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>This tutorial is for expert UML
-designers, and most designers will fortunately never need any of the explained
-concepts, with the possible exception of exit points.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>This tutorial is for expert UML designers,
+and most designers will fortunately never need any of the explained concepts,
+with the possible exception of exit points.<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>Let us count the ways to enter a
@@ -7788,11 +7851,11 @@
 EN-US'>: Entering a submachine through an entry point pseudo state. A pseudo
 state is defined as connecting exactly one transition ending on the pseudo
 state outside of the submachine to one transition inside the submachine and
-having the pseudo state as source. There are two differences with explicit
-entries. First you have two transitions, meaning two actions (but just one
-guard as UML forbids guard conditions on the inside transition), second you
-have only one transition inside the composite. It is supposed to provide some
-kind of encapsulation.<o:p></o:p></span></p>
+having the pseudo state as source. There are two differences with explicit entries.
+First you have two transitions, meaning two actions (but just one guard as UML
+forbids guard conditions on the inside transition), second you have only one
+transition inside the composite. It is supposed to provide some kind of
+encapsulation.<o:p></o:p></span></p>
 
 <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l13 level1 lfo17;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
@@ -7967,10 +8030,10 @@
 EN-US'>Explicit entry<o:p></o:p></span></h4>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>First, to define that a state is an
-explicit entry, you have to make it a state and mark it as explicit, giving as
-template parameters the zone id (the zone id starts with 0 and corresponds to
-the first initial state of the </span><span lang=EN-US style='font-family:"Courier New";
+lang=EN-US style='mso-ansi-language:EN-US'>First, to define that a state is an explicit
+entry, you have to make it a state and mark it as explicit, giving as template
+parameters the zone id (the zone id starts with 0 and corresponds to the first
+initial state of the </span><span lang=EN-US style='font-family:"Courier New";
 mso-ansi-language:EN-US'>initial_state</span><span lang=EN-US style='mso-ansi-language:
 EN-US'> type sequence).<o:p></o:p></span></p>
 
@@ -8094,8 +8157,8 @@
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>Of course, if these states are found
-in the transition table, which is the common case, this is not necessary. The
-tutorial makes use of this typedef for teaching purposes.<o:p></o:p></span></p>
+in the transition table, which is the common case, this is not necessary. The tutorial
+makes use of this typedef for teaching purposes.<o:p></o:p></span></p>
 
 <h4 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><a
 name="_Fork_1"></a><span lang=EN-US style='mso-fareast-font-family:"Times New Roman";
@@ -8190,9 +8253,9 @@
 lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='color:black;mso-ansi-language:EN-US'>And add the
-corresponding transition in Fsm's transition table:</span><span lang=EN-US
-style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
+lang=EN-US style='color:black;mso-ansi-language:EN-US'>And add the corresponding
+transition in Fsm's transition table:</span><span lang=EN-US style='mso-ansi-language:
+EN-US'><o:p></o:p></span></p>
 
 <p style='margin-bottom:12.0pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
@@ -8231,9 +8294,9 @@
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='color:black;mso-ansi-language:EN-US'>And another in the
-SubFsm2_ submachine definition (remember that UML defines an entry point as a
-connection between two transitions), for example this time with an action
-method:</span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
+SubFsm2_ submachine definition (remember that UML defines an entry point as a connection
+between two transitions), for example this time with an action method:</span><span
+lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
 <p style='margin-bottom:12.0pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
@@ -8479,8 +8542,8 @@
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>According to the UML standard, two
 transitions are said to be in conflict if they can both trigger an exit from
-the same state with the same event, meaning if at a certain time and for a
-given event, these two transitions can be triggered.<o:p></o:p></span></p>
+the same state with the same event, meaning if at a certain time and for a given
+event, these two transitions can be triggered.<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>There are two kinds of conflicts,
@@ -8704,8 +8767,8 @@
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><i
 style='mso-bidi-font-style:normal'><span lang=EN-US style='mso-ansi-language:
-EN-US'>to get a pointer to the containing state machine. The same applies to
-terminate_state / interrupt_state and entry_pseudo_state / exit_pseudo_state.<o:p></o:p></span></i></p>
+EN-US'>to get a pointer to the containing state machine. The same applies to terminate_state
+/ interrupt_state and entry_pseudo_state / exit_pseudo_state.<o:p></o:p></span></i></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><i
 style='mso-bidi-font-style:normal'><span lang=EN-US style='mso-ansi-language:
@@ -8717,11 +8780,11 @@
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>It is sometimes necessary to have
-the client code get access to the states' data. After all, the states are
-created once for good and hang around as long as the state machine does so why
-not use it? You simply just need sometimes to get information about any state,
-even inactive ones. An example is if you want to write a coverage tool and know
-how many times a state was visited. How to do it? Again, quite simply:<o:p></o:p></span></p>
+the client code get access to the states' data. After all, the states are created
+once for good and hang around as long as the state machine does so why not use
+it? You simply just need sometimes to get information about any state, even
+inactive ones. An example is if you want to write a coverage tool and know how
+many times a state was visited. How to do it? Again, quite simply:<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><code><span
 lang=EN-US style='font-size:10.0pt;color:blue;mso-ansi-language:EN-US'>player::Stopped</span></code><code><span
@@ -8773,8 +8836,8 @@
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><code><span
 lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
 font-family:"Times New Roman","serif";mso-ansi-language:EN-US'>Of course,
-errors happen. In this case, the state machine is said to be unstable, because
-a transition may have been partially executed. The framework offers a chance to
+errors happen. In this case, the state machine is said to be unstable, because a
+transition may have been partially executed. The framework offers a chance to
 set it straight by catching std::exception and calling: </span></code><span
 lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
@@ -8889,8 +8952,8 @@
 style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:blue;
 mso-ansi-language:EN-US'>const</span></code><code><span lang=EN-US
 style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman","serif";
-color:black;mso-ansi-language:EN-US'>: returns true if the state machine is used
-as a composite in another state machine, false otherwise.</span></code><span
+color:black;mso-ansi-language:EN-US'>: returns true if the state machine is
+used as a composite in another state machine, false otherwise.</span></code><span
 lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
 <p style='margin-bottom:12.0pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
@@ -8973,11 +9036,12 @@
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><code><span
 lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
-font-family:"Times New Roman","serif";color:black;mso-ansi-language:EN-US'>Of these
-jobs, only the last is absolutely necessary to a state machine (its core job),
-the other ones are nice-to-haves which cost CPU time. In many cases, it is not
-so important, but in embedded systems, this can lead to ad-hoc state machine
-implementations.</span></code><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
+font-family:"Times New Roman","serif";color:black;mso-ansi-language:EN-US'>Of
+these jobs, only the last is absolutely necessary to a state machine (its core
+job), the other ones are nice-to-haves which cost CPU time. In many cases, it
+is not so important, but in embedded systems, this can lead to ad-hoc state
+machine implementations.</span></code><span lang=EN-US style='mso-ansi-language:
+EN-US'><o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><code><span
 lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
@@ -9052,11 +9116,11 @@
 lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
 font-family:"Times New Roman","serif";color:black;mso-ansi-language:EN-US'>What
 is the gain? It will depend on your compiler and target system, so please refer
-to the performance page (where an example is also provided).
-If you use none of these extras, a </span></code><code><span lang=EN-US
-style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:black;
-mso-ansi-language:EN-US'>process_event</span></code><code><span lang=EN-US
-style='font-size:10.0pt;color:black;mso-ansi-language:EN-US'> </span></code><code><span
+to the performance page (where an example is also
+provided). If you use none of these extras, a </span></code><code><span
+lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
+color:black;mso-ansi-language:EN-US'>process_event</span></code><code><span
+lang=EN-US style='font-size:10.0pt;color:black;mso-ansi-language:EN-US'> </span></code><code><span
 lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
 font-family:"Times New Roman","serif";color:black;mso-ansi-language:EN-US'>can
 execute up to 4 times faster. On a Q6600, an average transition execution lasts
@@ -9110,6 +9174,78 @@
 lang=EN-US style='mso-ansi-language:EN-US'>eUML functors have the same
 property.<o:p></o:p></span></p>
 
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
+
+<h3 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><a
+name="_State_machine_constructor"></a><span lang=EN-US style='mso-ansi-language:
+EN-US'>State machine constructor with arguments<o:p></o:p></span></h3>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+lang=EN-US style='mso-ansi-language:EN-US'>You might want to define a state
+machine with a non-default constructor, which was simple to do with Msm v1.x.
+For example, you might want to write:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><code><span
+lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
+color:blue;mso-ansi-language:EN-US'>struct</span></code><code><span lang=EN-US
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:black;
+mso-ansi-language:EN-US'> </span></code><code><span lang=EN-US
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:#030003;
+mso-ansi-language:EN-US'>player_</span></code><code><span lang=EN-US
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:black;
+mso-ansi-language:EN-US'> : </span></code><code><span lang=EN-US
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:blue;
+mso-ansi-language:EN-US'>public</span></code><code><span lang=EN-US
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:black;
+mso-ansi-language:EN-US'> msm::front::</span></code><code><span lang=EN-US
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:#030003;
+mso-ansi-language:EN-US'>state_machine_def</span></code><code><span lang=EN-US
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:black;
+mso-ansi-language:EN-US'>&lt;</span></code><code><span lang=EN-US
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:#030003;
+mso-ansi-language:EN-US'>player_</span></code><code><span lang=EN-US
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;color:black;
+mso-ansi-language:EN-US'>&gt;<o:p></o:p></span></code></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><code><span
+lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
+color:black;mso-ansi-language:EN-US'>{<o:p></o:p></span></code></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><code><span
+lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
+color:black;mso-ansi-language:EN-US'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp; </span>player_(int some_value){&#8230;}<o:p></o:p></span></code></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><code><span
+lang=EN-US style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;
+color:black;mso-ansi-language:EN-US'>}</span></code><span lang=EN-US
+style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+lang=EN-US style='mso-ansi-language:EN-US'>This is still possible, using the
+back-end as forwarding object:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>typedef
+msm::back::state_machine&lt;player_ &gt; player;<o:p></o:p></span></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>player
+p(3);<o:p></o:p></span></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>// do
+something with the state machine<o:p></o:p></span></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+lang=EN-US style='mso-ansi-language:EN-US'>Up to the value of the
+BOOST_MSM_CONSTRUCTOR_ARG_SIZE macro (currently 5) arguments. Change this value
+before including any header if you need to change it.<o:p></o:p></span></p>
+
 <h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><a
 name="_Customizing_states"></a><code><span lang=EN-US style='mso-ansi-font-size:
 18.0pt;mso-bidi-font-size:16.0pt;font-family:"Times New Roman","serif";
@@ -9119,9 +9255,9 @@
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>By default, all states derive from </span><span
 lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>msm::default_base_state</span><span
-lang=EN-US style='mso-ansi-language:EN-US'>, which is neither polymorphic nor
-has any other useful purpose than to define a base for all states. The
-following part will describe the customization possibilities offered by Msm.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>, which is neither polymorphic nor has
+any other useful purpose than to define a base for all states. The following
+part will describe the customization possibilities offered by Msm.<o:p></o:p></span></p>
 
 <h3 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><a
 name="_User-defined_base_state"></a><code><span lang=EN-US style='mso-ansi-font-size:
@@ -9561,11 +9697,11 @@
 lang=EN-US style='color:black;mso-ansi-language:EN-US'>Important warning:</span></u><span
 lang=EN-US style='color:black;mso-ansi-language:EN-US'> The method </span><span
 lang=EN-US style='font-family:"Courier New";color:black;mso-ansi-language:EN-US'>visit_current_states</span><span
-lang=EN-US style='color:black;mso-ansi-language:EN-US'> takes its parameter by
-value, so if the signature of the accept function is to contain a parameter passed
-by reference, pass this parameter with a boost:ref/cref to avoid undesired
-copies or slicing. So, for example, in the above case, call:</span><span
-lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
+lang=EN-US style='color:black;mso-ansi-language:EN-US'> takes its parameter by value,
+so if the signature of the accept function is to contain a parameter passed by
+reference, pass this parameter with a boost:ref/cref to avoid undesired copies
+or slicing. So, for example, in the above case, call:</span><span lang=EN-US
+style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
@@ -9615,13 +9751,13 @@
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>This chapter will introduce the new
-features of Msm. This is actually just the beginning of the story; more, much
-more will come!<o:p></o:p></span></p>
+features of Msm. This is actually just the beginning of the story; more, much more
+will come!<o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>We will first warm up with a front-end
-based on functors before moving on the eUML, which will provide us with a much
-bigger amount of fun.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>We will first warm up with a
+front-end based on functors before moving on the eUML, which will provide us
+with a much bigger amount of fun.<o:p></o:p></span></p>
 
 <h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><a
 name="_Frontends"></a><span lang=EN-US style='mso-ansi-language:EN-US'>Frontends<o:p></o:p></span></h2>
@@ -9673,9 +9809,9 @@
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
-lang=EN-US style='mso-ansi-language:EN-US'>The action/guard signature is limited
-and does not allow for more variations of parameters (source state, target
-state, current state machine, etc.)<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>The action/guard signature is
+limited and does not allow for more variations of parameters (source state,
+target state, current state machine, etc.)<o:p></o:p></span></p>
 
 <p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l20 level1 lfo25;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
@@ -9796,8 +9932,9 @@
 style='mso-spacerun:yes'>&nbsp;&nbsp; </span>&lt; <span style='color:#030003'>Open</span><span
 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span>, <span style='color:#030003'>open_close</span><span
 style='mso-spacerun:yes'>&nbsp; </span>, <span style='color:#030003'>Empty</span><span
-style='mso-spacerun:yes'>&nbsp;&nbsp; </span>, <span style='color:#030003'>close_drawer</span><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>, <span
+style='mso-spacerun:yes'>&nbsp;&nbsp; </span>, <span style='color:#030003'>close_drawer</span>
+<span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>, <span
 style='color:#030003'>none</span><span
 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 </span>&gt;,<o:p></o:p></span></p>
@@ -9829,8 +9966,8 @@
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
 color:#030003;mso-ansi-language:EN-US;mso-no-proof:yes'>Row</span><span
 lang=EN-US style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:
-"Times New Roman";mso-ansi-language:EN-US;mso-no-proof:yes'> <span
-style='mso-spacerun:yes'>&nbsp;&nbsp;</span>&lt; <span style='color:#030003'>Empty</span><span
+"Times New Roman";mso-ansi-language:EN-US;mso-no-proof:yes'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp; </span>&lt; <span style='color:#030003'>Empty</span><span
 style='mso-spacerun:yes'>&nbsp;&nbsp; </span>, <span style='color:#030003'>cd_detected</span>
 , <span style='color:#030003'>Stopped</span> , <span style='color:#030003'>store_cd_info</span><span
 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>, <span
@@ -9886,9 +10023,9 @@
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
-lang=EN-US style='mso-ansi-language:EN-US'>&#8220;Row&#8221; allows reusing
-your functors in other state machines. State machine function pointers cannot
-offer this easily.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>&#8220;Row&#8221; allows reusing your
+functors in other state machines. State machine function pointers cannot offer
+this easily.<o:p></o:p></span></p>
 
 <p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l14 level1 lfo26;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
@@ -9978,9 +10115,8 @@
 "Times New Roman";mso-ansi-language:EN-US;mso-no-proof:yes'><o:p>&nbsp;</o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>It is a functor object taking as
-template arguments, the back-end state machine, event, and source and target states.
-<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>It is a functor object taking as template
+arguments, the back-end state machine, event, and source and target states. <o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>Notice how the functor places a new
@@ -10011,8 +10147,8 @@
 style='mso-spacerun:yes'>&nbsp;</span><o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>We can, and why stop here?
-Wouldn&#8217;t we like to define guards like: <o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>We can, and why stop here? Wouldn&#8217;t
+we like to define guards like: <o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>&#8220;</span><span lang=EN-US
@@ -10059,10 +10195,9 @@
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='color:black;mso-ansi-language:EN-US'>eUML is a
 (Boost.)Proto-based compile-time domain specific embedded language. It provides
-grammars which allow the definition of actions/guards directly inside the
-transition table or entry/exit in the state definition. It is defined in the
-namespace </span><u><span lang=EN-US style='font-family:"Courier New";
-color:black;mso-ansi-language:EN-US'>msm::front::euml</span></u><span
+grammars which allow the definition of actions/guards directly inside the transition
+table or entry/exit in the state definition. It is defined in the namespace </span><u><span
+lang=EN-US style='font-family:"Courier New";color:black;mso-ansi-language:EN-US'>msm::front::euml</span></u><span
 lang=EN-US style='color:black;mso-ansi-language:EN-US'>.<o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
@@ -10125,8 +10260,8 @@
 lang=EN-US style='color:black;mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='color:black;mso-ansi-language:EN-US'>Examples will be
-provided in the next paragraphs. The basic eUML features can be found in:<o:p></o:p></span></p>
+lang=EN-US style='color:black;mso-ansi-language:EN-US'>Examples will be provided
+in the next paragraphs. The basic eUML features can be found in:<o:p></o:p></span></p>
 
 <p class=MsoNormal style='margin-top:12.0pt;margin-right:36.45pt;margin-bottom:
 0cm;margin-left:36.45pt;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
@@ -10219,8 +10354,7 @@
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
 mso-ansi-language:EN-US;mso-no-proof:yes'><span
 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
-style='color:green'>//<span style='mso-spacerun:yes'>&nbsp;
-</span>+------------------------------------------------------------------------------+<o:p></o:p></span></span></p>
+style='color:green'>//<span style='mso-spacerun:yes'>&nbsp; </span>+------------------------------------------------------------------------------+<o:p></o:p></span></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
@@ -10268,7 +10402,8 @@
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
 mso-ansi-language:EN-US;mso-no-proof:yes'><span
 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp; </span><span
-style='color:green'>//<span style='mso-spacerun:yes'>&nbsp; </span>+------------------------------------------------------------------------------+<o:p></o:p></span></span></p>
+style='color:green'>//<span style='mso-spacerun:yes'>&nbsp;
+</span>+------------------------------------------------------------------------------+<o:p></o:p></span></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
@@ -10284,8 +10419,8 @@
 several actions sequentially (our previous </span><span lang=EN-US
 style='font-family:"Courier New";color:black;mso-ansi-language:EN-US'>ActionSequence</span><span
 lang=EN-US style='color:black;mso-ansi-language:EN-US'>) separated by a comma.
-The first transition does just this: 2 actions separated by a comma and
-enclosed inside parenthesis to respect C++ operator precedence.<o:p></o:p></span></p>
+The first transition does just this: 2 actions separated by a comma and enclosed
+inside parenthesis to respect C++ operator precedence.<o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='color:black;mso-ansi-language:EN-US'>Notice the parenthesis
@@ -10397,8 +10532,8 @@
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>The only differences with our
-previous functors is that they return a bool (guards are in UML actions
-returning a bool and producing no side-effect), and they must inherit from </span><span
+previous functors is that they return a bool (guards are in UML actions returning
+a bool and producing no side-effect), and they must inherit from </span><span
 lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>euml_action</span><span
 lang=EN-US style='mso-ansi-language:EN-US'> in order to enable the grammar. The
 same is also necessary for events which must inherit from euml_event:<o:p></o:p></span></p>
@@ -10515,10 +10650,9 @@
 EN-US;mso-no-proof:yes'>A </span><span lang=EN-US style='font-family:"Courier New";
 mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-no-proof:
 yes'>NoAction</span><span lang=EN-US style='mso-fareast-font-family:"Times New Roman";
-mso-ansi-language:EN-US;mso-no-proof:yes'> is also defined, which does, well,
-nothing except being a placeholder (needed for example as entry action if we
-have no entry but an exit).</span><span lang=EN-US style='mso-ansi-language:
-EN-US'><o:p></o:p></span></p>
+mso-ansi-language:EN-US;mso-no-proof:yes'> is also defined, which does, well, nothing
+except being a placeholder (needed for example as entry action if we have no
+entry but an exit).</span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>Expr1</span><span
@@ -10601,8 +10735,8 @@
 lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>Likewise, eUML provides other
-state-building functions for other types of states:<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>Likewise, eUML provides other state-building
+functions for other types of states:<o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
@@ -10681,8 +10815,8 @@
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>Sometimes you might want to define
 the same way a state machine on the fly (if, for example, you need to provide
-an on_entry/on_exit for this state machine as a functor). For this, there is also
-a function, </span><span lang=EN-US style='font-family:"Courier New";
+an on_entry/on_exit for this state machine as a functor). For this, there is
+also a function, </span><span lang=EN-US style='font-family:"Courier New";
 mso-ansi-language:EN-US'>build_sm</span><span lang=EN-US style='mso-ansi-language:
 EN-US'>, which has up to 8 arguments:<o:p></o:p></span></p>
 
@@ -11180,10 +11314,10 @@
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
-EN-US;mso-no-proof:yes'>A fork is a direct entry into
-several regions of a composite substate. EUML also supports this by allowing
-the user to define a list of entry states separated by a comma and enclosed
-inside parenthesis, for eaxample:<o:p></o:p></span></p>
+EN-US;mso-no-proof:yes'>A fork is a direct entry into several
+regions of a composite substate. EUML also supports this by allowing the user
+to define a list of entry states separated by a comma and enclosed inside
+parenthesis, for eaxample:<o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
@@ -11350,9 +11484,8 @@
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
 mso-ansi-language:EN-US;mso-no-proof:yes'><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style='color:
-#030003'>get_attributes&lt;0&gt;</span>()=<span style='color:#030003'>name</span>;<o:p></o:p></span></p>
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
+style='color:#030003'>get_attributes&lt;0&gt;</span>()=<span style='color:#030003'>name</span>;<o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
@@ -11667,9 +11800,10 @@
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
 mso-ansi-language:EN-US;mso-no-proof:yes'><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span><span style='color:#030003'>attributes_</span> &lt;&lt; <span
-style='color:#030003'>no_attributes_</span>,<o:p></o:p></span></p>
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
+style='color:#030003'>attributes_</span> &lt;&lt; <span style='color:#030003'>no_attributes_</span>,<o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
@@ -11783,9 +11917,8 @@
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>EUML also supports defining <a
-href="#_Orthogonal_States_(+Defer">deferred events</a> in the state (state
-machine) definition. To this aim, we can reuse the previous flag grammar. For
-example:<o:p></o:p></span></p>
+href="#_Orthogonal_States_(+Defer">deferred events</a> in the state (state machine)
+definition. To this aim, we can reuse the previous flag grammar. For example:<o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
@@ -12091,8 +12224,7 @@
 <p class=MsoNormal style='margin-top:12.0pt;margin-right:36.45pt;margin-bottom:
 0cm;margin-left:36.45pt;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN style='font-size:11.0pt;font-family:"Courier New";mso-fareast-font-family:
-"Times New Roman";color:black;mso-ansi-language:EN'>#include &lt;
-msm/front/euml/operator.hpp&gt;<o:p></o:p></span></p>
+"Times New Roman";color:black;mso-ansi-language:EN'>#include &lt; msm/front/euml/operator.hpp&gt;<o:p></o:p></span></p>
 
 <p class=MsoNormal style='margin-top:12.0pt;margin-right:36.45pt;margin-bottom:
 0cm;margin-left:36.45pt;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
@@ -12124,8 +12256,8 @@
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
 lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>if_then_(guard,
-action)</span><span lang=EN-US style='mso-ansi-language:EN-US'> where guard
-respects the guard grammar and action the action sequence grammar.<o:p></o:p></span></p>
+action)</span><span lang=EN-US style='mso-ansi-language:EN-US'> where guard respects
+the guard grammar and action the action sequence grammar.<o:p></o:p></span></p>
 
 <p style='margin-top:5.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;
 margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l45 level1 lfo33;tab-stops:
@@ -12268,7 +12400,8 @@
 String_&lt;mpl::string&lt;&#8217;Hell&#8217;,&#8217;o
 wo&#8217;,&#8217;rld&#8217;&gt; &gt;(). Please refer to the <a
 href="http://www.boost.org/doc/libs/1_40_0/libs/mpl/doc/refmanual/string.html">MPL
-documentation</a>. This is the one case where you will see some Metaprogramming.<o:p></o:p></span></p>
+documentation</a>. This is the one case where you will see some
+Metaprogramming.<o:p></o:p></span></p>
 
 <p style='margin-top:5.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;
 margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo34;tab-stops:
@@ -12403,12 +12536,12 @@
 <o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>Notice that we have lots of operators,
-functors and functions like </span><span lang=EN-US style='font-family:"Courier New";
-mso-ansi-language:EN-US'>build_stt</span><span lang=EN-US style='mso-ansi-language:
-EN-US'> but all is compile-time, there is no run-time penalty as the code is
-not really called but simply evaluated. Now try to do this with your local
-javac compiler&#8230;<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>Notice that we have lots of
+operators, functors and functions like </span><span lang=EN-US
+style='font-family:"Courier New";mso-ansi-language:EN-US'>build_stt</span><span
+lang=EN-US style='mso-ansi-language:EN-US'> but all is compile-time, there is
+no run-time penalty as the code is not really called but simply evaluated. Now
+try to do this with your local javac compiler&#8230;<o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>The following table lists the
@@ -13176,8 +13309,8 @@
   mso-border-themecolor:accent1;border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
   <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
   mso-yfti-cnfc:68'><b><span lang=EN style='mso-ansi-language:EN'>[] </span></b><span
- lang=EN style='mso-ansi-language:EN;mso-bidi-font-weight:bold'>(works on vector,
- map, arrays)<o:p></o:p></span></p>
+ lang=EN style='mso-ansi-language:EN;mso-bidi-font-weight:bold'>(works on
+ vector, map, arrays)<o:p></o:p></span></p>
   </td>
   <td width=437 valign=top style='width:262.25pt;border-top:solid #4F81BD 1.0pt;
   mso-border-top-themecolor:accent1;border-left:none;border-bottom:solid #4F81BD 1.0pt;
@@ -13364,8 +13497,8 @@
   </td>
   <td width=437 valign=top style='width:262.25pt;border:none;padding:0cm 5.4pt 0cm 5.4pt'>
   <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
- lang=EN style='mso-ansi-language:EN'>Returns the some_int attribute of the
- source state from the currently triggered transition.<o:p></o:p></span></p>
+ lang=EN style='mso-ansi-language:EN'>Returns the some_int attribute of the source
+ state from the currently triggered transition.<o:p></o:p></span></p>
   </td>
   <td width=437 valign=top style='width:262.25pt;border:none;padding:0cm 5.4pt 0cm 5.4pt'>
   <p class=MsoNormal><span lang=EN-US style='mso-fareast-font-family:"Times New Roman";
@@ -13411,8 +13544,8 @@
   </td>
   <td width=437 valign=top style='width:262.25pt;border:none;padding:0cm 5.4pt 0cm 5.4pt'>
   <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
- lang=EN style='mso-ansi-language:EN'>Returns the some_int attribute of the current
- state (valid inside an entry/exit state action).<o:p></o:p></span></p>
+ lang=EN style='mso-ansi-language:EN'>Returns the some_int attribute of the
+ current state (valid inside an entry/exit state action).<o:p></o:p></span></p>
   </td>
   <td width=437 valign=top style='width:262.25pt;border:none;padding:0cm 5.4pt 0cm 5.4pt'>
   <p class=MsoNormal><span lang=EN-US style='mso-fareast-font-family:"Times New Roman";
@@ -13482,8 +13615,8 @@
   mso-border-top-themecolor:accent1;border-left:none;border-bottom:solid #4F81BD 1.0pt;
   mso-border-bottom-themecolor:accent1;border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
   <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
- mso-yfti-cnfc:64'><span lang=EN style='mso-ansi-language:EN'>Wrappers around
- the value some_int<o:p></o:p></span></p>
+ mso-yfti-cnfc:64'><span lang=EN style='mso-ansi-language:EN'>Wrappers around the
+ value some_int<o:p></o:p></span></p>
   </td>
   <td width=437 valign=top style='width:262.25pt;border-top:solid #4F81BD 1.0pt;
   mso-border-top-themecolor:accent1;border-left:none;border-bottom:solid #4F81BD 1.0pt;
@@ -13576,8 +13709,8 @@
   mso-border-bottom-themecolor:accent1;border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
   <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
   mso-yfti-cnfc:64'><span lang=EN style='mso-ansi-language:EN'>Processes Event
- on the current state machine (if no fsm specified) or on up to 4 state
- machines returned by an appropriate functor.<o:p></o:p></span></p>
+ on the current state machine (if no fsm specified) or on up to 4 state machines
+ returned by an appropriate functor.<o:p></o:p></span></p>
   </td>
   <td width=437 valign=top style='width:262.25pt;border-top:solid #4F81BD 1.0pt;
   mso-border-top-themecolor:accent1;border-left:none;border-bottom:solid #4F81BD 1.0pt;
@@ -13798,9 +13931,9 @@
   mso-border-top-themecolor:accent1;border-left:none;border-bottom:solid #4F81BD 1.0pt;
   mso-border-bottom-themecolor:accent1;border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
   <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
- mso-yfti-cnfc:64'><span lang=EN style='mso-ansi-language:EN'>Returns the
- current state machine (as reference). Valid inside a state entry/exit action
- or a transition.<o:p></o:p></span></p>
+ mso-yfti-cnfc:64'><span lang=EN style='mso-ansi-language:EN'>Returns the current
+ state machine (as reference). Valid inside a state entry/exit action or a
+ transition.<o:p></o:p></span></p>
   </td>
   <td width=437 valign=top style='width:262.25pt;border-top:solid #4F81BD 1.0pt;
   mso-border-top-themecolor:accent1;border-left:none;border-bottom:solid #4F81BD 1.0pt;
@@ -14111,12 +14244,12 @@
 lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>Your functors will usually not need
-this. You will only need these extra declarations if your functors are to be
-used in combination with eUML functions (if_then_else_ , STL algorithms) or
-operators returning a value (++, +=, etc.). If you simply need simple guards
-/actions like [Condition1() &amp;&amp; Condition2()] / (Action1(),Action2()),
-you do not need to declare the return type.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>Your functors will usually not need this.
+You will only need these extra declarations if your functors are to be used in
+combination with eUML functions (if_then_else_ , STL algorithms) or operators
+returning a value (++, +=, etc.). If you simply need simple guards /actions
+like [Condition1() &amp;&amp; Condition2()] / (Action1(),Action2()), you do not
+need to declare the return type.<o:p></o:p></span></p>
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>This declaration is not very nice
@@ -14177,8 +14310,8 @@
 
 <p style='margin-bottom:0cm;margin-bottom:.0001pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>In a nutshell, almost every STL
-method or algorithm is matched by a corresponding functor, which can then be
-used in the transition table or state actions. The following tables explain in
+method or algorithm is matched by a corresponding functor, which can then be used
+in the transition table or state actions. The following tables explain in
 detail the possible argument combination and the underlying functor, so that
 this possibility is not reserved to eUML but also to the functor-based
 front-end previously explained.<o:p></o:p></span></p>
@@ -14348,8 +14481,7 @@
   accent1;border-bottom:none;border-right:none;background:#4F81BD;mso-background-themecolor:
   accent1;padding:0cm 5.4pt 0cm 5.4pt'>
   <p class=MsoNormal style='mso-yfti-cnfc:5'><b><span lang=EN style='color:
- white;mso-themecolor:background1;mso-ansi-language:EN'>STL functions in
- querying.hpp<o:p></o:p></span></b></p>
+ white;mso-themecolor:background1;mso-ansi-language:EN'>STL functions in querying.hpp<o:p></o:p></span></b></p>
   </td>
   <td width=437 valign=top style='width:262.25pt;border:none;border-top:solid #4F81BD 1.0pt;
   mso-border-top-themecolor:accent1;background:#4F81BD;mso-background-themecolor:
@@ -17567,13 +17699,13 @@
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
-mso-ansi-language:EN-US;mso-no-proof:yes'><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span style='color:blue'>int</span>
-<span style='color:#030003'>foo</span>(<span style='color:blue'>int</span> <span
-style='color:#030003'>i</span>)<span style='color:blue'>const</span> {<span
-style='color:#030003'>std</span>::<span style='color:#030003'>cout</span>
-&lt;&lt; <span style='color:#A31515'>&quot;foo(int):&quot;</span> &lt;&lt; <span
-style='color:#030003'>i</span> &lt;&lt; <span style='color:#030003'>std</span>::<span
+mso-ansi-language:EN-US;mso-no-proof:yes'><span style='mso-spacerun:yes'>&nbsp;
+</span><span style='mso-spacerun:yes'>&nbsp;&nbsp;</span><span
+style='color:blue'>int</span> <span style='color:#030003'>foo</span>(<span
+style='color:blue'>int</span> <span style='color:#030003'>i</span>)<span
+style='color:blue'>const</span> {<span style='color:#030003'>std</span>::<span
+style='color:#030003'>cout</span> &lt;&lt; <span style='color:#A31515'>&quot;foo(int):&quot;</span>
+&lt;&lt; <span style='color:#030003'>i</span> &lt;&lt; <span style='color:#030003'>std</span>::<span
 style='color:#030003'>endl</span>; <span style='color:blue'>return</span> 1;}<o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
@@ -17825,8 +17957,8 @@
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>On VC9, the test state machines used
-in the performance section produce executables of 14kB (for simple and eUML) and
-21kB (for the composite). This includes the test code and iostreams. By
+in the performance section produce executables of 14kB (for simple and eUML)
+and 21kB (for the composite). This includes the test code and iostreams. By
 comparison, an empty executable with iostreams generated by VC9 has a size of
 7kB. Boost.Statechart generates executables of 43kB and 54kB. As a bonus, eUML
 comes for &#8220;free&#8221; in terms of executable size. You even get a speed
@@ -17910,9 +18042,9 @@
 style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 </span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>Compilation
 times that are going to make you storm the CFO's office and make sure you get a
-shiny octocore with 8GB RAM by next week, unless he's interested in paying you
-watch the compiler agonize for hours... (Make sure you ask for dual 24&quot; as
-well, it doesn't hurt).<o:p></o:p></span></p>
+shiny octocore with 8GB RAM by next week, unless he's interested in paying you watch
+the compiler agonize for hours... (Make sure you ask for dual 24&quot; as well,
+it doesn't hurt).<o:p></o:p></span></p>
 
 <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l33 level1 lfo41;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
@@ -17956,9 +18088,9 @@
 ::boost::mpl::and_&lt;typename ::boost::mpl::not_&lt;typename
 has_exit_pseudo_states&lt;StateType&gt;::type&gt;::type,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span
-style='mso-spacerun:yes'>&nbsp; </span><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>typename
-::boost::mpl::not_&lt;typename is_pseudo_exit&lt;StateType&gt;::type&gt;::type<br>
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>typename ::boost::mpl::not_&lt;typename
+is_pseudo_exit&lt;StateType&gt;::type&gt;::type<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;::type,BaseState*&gt;::type<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
@@ -18036,7 +18168,7 @@
 lang=EN-US style='mso-ansi-language:EN-US'>I only found two ways to break the
 compiler:<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l36 level1 lfo48;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l36 level1 lfo43;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
@@ -18044,7 +18176,7 @@
 lang=EN-US style='mso-ansi-language:EN-US'>Add more eUML constructs until
 something explodes. <o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l36 level1 lfo48;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l36 level1 lfo43;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
@@ -18077,7 +18209,7 @@
 <h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>Msm2:<o:p></o:p></span></h2>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo43;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo44;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18085,7 +18217,7 @@
 </span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>eUML
 was made possible by Boost.Proto and Boost.Typeof<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo43;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo44;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18093,7 +18225,7 @@
 </span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>Thanks
 to Eric Niebler for his patience correcting my grammar errors<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo43;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo44;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18107,7 +18239,7 @@
 mso-symbol-font-family:Wingdings'>J</span></span><span lang=EN-US
 style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo43;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo44;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18116,9 +18248,18 @@
 to Richard O&#8217;Hara for making Green Hills bring a patch in less than 1
 week, thus adding one more compiler to the supported list.<o:p></o:p></span></p>
 
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo44;
+tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
+10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
+Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
+style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>Thanks
+to the ones who gave some review comments and helped find problems: Juraj
+Ivancic, Andreas Huber.<o:p></o:p></span></p>
+
 <h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Msm1</h2>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo43;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo44;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18129,7 +18270,7 @@
 framework in their excellent book, &#8220;C++ template Metaprogramming&#8221;.
 The implementation also makes heavy use of the boost::mpl.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo43;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo44;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18138,7 +18279,7 @@
 to Jeff Flinn for his idea of the user-defined base state and his review which
 allowed Msm to be presented at the BoostCon09.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo43;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l38 level1 lfo44;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18158,56 +18299,56 @@
 <h1 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>Used libraries:<o:p></o:p></span></h1>
 
-<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l4 level1 lfo44;
+<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l4 level1 lfo45;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
 lang=EN-US style='mso-ansi-language:EN-US'>Boost::bind<o:p></o:p></span></p>
 
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo44;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo45;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
 lang=EN-US style='mso-ansi-language:EN-US'>Boost::mpl<o:p></o:p></span></p>
 
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo44;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo45;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
 lang=EN-US style='mso-ansi-language:EN-US'>Boost::fusion<o:p></o:p></span></p>
 
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo44;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo45;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
 lang=EN-US style='mso-ansi-language:EN-US'>Boost::proto<o:p></o:p></span></p>
 
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo44;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo45;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
 lang=EN-US style='mso-ansi-language:EN-US'>Boost::typeof<o:p></o:p></span></p>
 
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo44;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo45;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
 lang=EN-US style='mso-ansi-language:EN-US'>Boost:TypeTraits<o:p></o:p></span></p>
 
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo44;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo45;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
 lang=EN-US style='mso-ansi-language:EN-US'>Boost::utility<o:p></o:p></span></p>
 
-<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l4 level1 lfo44;
+<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l4 level1 lfo45;
 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
 lang=EN-US style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
 Symbol;mso-ansi-language:EN-US'><span style='mso-list:Ignore'>&middot;<span
@@ -18290,7 +18431,7 @@
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><u><span
 lang=EN-US style='mso-ansi-language:EN-US'>Answer</span></u><span lang=EN-US
 style='mso-ansi-language:EN-US'>: Msm uses Boost.MPL under the hood and this is
-the default maximum size. Please define the following 2 macros before including
+the default maximum size. Please define the following 3 macros before including
 any Msm headers:<o:p></o:p></span></p>
 
 <div id=limit-vector-size>
@@ -18298,6 +18439,7 @@
 <div id=configuration-limit-example><pre><span lang=EN-US style='mso-ansi-language:
 EN-US'>#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS<o:p></o:p></span></pre><pre><span
 lang=EN-US style='mso-ansi-language:EN-US'>#define BOOST_MPL_LIMIT_VECTOR_SIZE 30 // or whatever you need<o:p></o:p></span></pre><pre><span
+lang=EN-US style='mso-ansi-language:EN-US'>#define BOOST_MPL_LIMIT_MAP_SIZE 30 // or whatever you need<o:p></o:p></span></pre><pre><span
 lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></pre></div>
 
 </div>
@@ -18337,8 +18479,8 @@
 "Times New Roman";mso-ansi-language:EN-US'>Explicit Entry vs Orthogonal zones<o:p></o:p></span></i></h2>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>Let us try to implement the state
-machine defined in a paper from David Harel (Figure 8 in <a
+lang=EN-US style='mso-ansi-language:EN-US'>Let us try to implement the state machine
+defined in a paper from David Harel (Figure 8 in <a
 href="http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf">http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf>).<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
@@ -18367,12 +18509,12 @@
 &#8220;alarm-beeps&#8221; has an implementation visible to the outside world.
 This particularity is being used and this leads to three states with close
 names, &#8220;alarm1 beeps&#8221;, &#8220;alarm2 beeps&#8221;, &#8220;both
-beep&#8221;. If you think that this starts sounding like duplication of
-information, you are not the only one. The second point is about design and
-reuse. Let us imagine what could happen if Harel really was working for a
-company producing watches.<o:p></o:p></span></p>
+beep&#8221;. If you think that this starts sounding like duplication of information,
+you are not the only one. The second point is about design and reuse. Let us
+imagine what could happen if Harel really was working for a company producing
+watches.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo45;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo46;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18380,7 +18522,7 @@
 </span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>Harel
 would implement this state machine.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo45;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo46;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18389,7 +18531,7 @@
 time later, he would be asked to do the same for a new model of watch. But this
 model would have 3 alarms.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo45;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo46;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18397,7 +18539,7 @@
 </span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>Or
 maybe 4 alarms?<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo45;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo46;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18417,8 +18559,8 @@
 lang=EN-US style='mso-ansi-language:EN-US'>What would be the result? New states
 like &#8220;alarm3 beeps&#8221; or &#8220;three beep&#8221; + &#8220;both
 beep&#8221; (backward compatibility). Maintenance would quickly become a
-nightmare. The reason? A breach of encapsulation caused by &#8220;alarm
-beeps&#8221; letting other state machines use its internals.<o:p></o:p></span></p>
+nightmare. The reason? A breach of encapsulation caused by &#8220;alarm beeps&#8221;
+letting other state machines use its internals.<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>Luckily, UML provides not only the
@@ -18429,7 +18571,7 @@
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>Let us redesign Alarm-Beeps by:<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l35 level1 lfo46;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l35 level1 lfo47;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18437,7 +18579,7 @@
 </span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>Encapsulating
 the alarm functionality in its own state (machine).<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l35 level1 lfo46;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l35 level1 lfo47;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -18575,9 +18717,9 @@
 lang=EN-US style='mso-ansi-language:EN-US'>Which of both methods should you
 use? It is a matter of taste and you will hear different opinions from
 different designers. If you need something fast and with a short life cycle,
-then you could consider the method with explicit entries. If you are more
-interested in reusable design, then the method using instances is for you. The
-personal preference of the author goes to, you guessed it, the second one.<o:p></o:p></span></p>
+then you could consider the method with explicit entries. If you are more interested
+in reusable design, then the method using instances is for you. The personal
+preference of the author goes to, you guessed it, the second one.<o:p></o:p></span></p>
 
 <h1 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><a
 name="_EUML_Case_Studies"></a><span lang=EN-US style='mso-ansi-language:EN-US'>eUML
@@ -18673,8 +18815,8 @@
 lang=EN-US style='mso-ansi-language:EN-US'> contains a counter, which is
 initialized with the event countdown data (</span><span lang=EN-US
 style='font-family:"Courier New";mso-ansi-language:EN-US'>start_timer.m_timer</span><span
-lang=EN-US style='mso-ansi-language:EN-US'>) in the action method (written after
-a slash) of the transition fired by the </span><span lang=EN-US
+lang=EN-US style='mso-ansi-language:EN-US'>) in the action method (written
+after a slash) of the transition fired by the </span><span lang=EN-US
 style='font-family:"Courier New";mso-ansi-language:EN-US'>start_timer</span><span
 lang=EN-US style='mso-ansi-language:EN-US'> event. <o:p></o:p></span></p>
 
@@ -18847,8 +18989,8 @@
 lang=EN-US style='mso-ansi-language:EN-US'>The previous example is a standard
 application for state machines. But we want to push our model-driven approach
 further by using a state machine to write an algorithm. I already see some at
-the back of the room looking perplexed. Well, why not? Usually, UML designers
-like to use Activity Diagrams to do this, but mostly for documentation purposes
+the back of the room looking perplexed. Well, why not? Usually, UML designers like
+to use Activity Diagrams to do this, but mostly for documentation purposes
 because Activity Diagrams are hard to define with a precision needed for
 automatic code generation. On the other hand, state machines have a very strict
 formalism which enables code generation while being &#8220;cousin&#8221; with
@@ -18931,9 +19073,9 @@
 lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>While this clearly intends to start building
-an algorithm library, this example will be kept not generic to display the use
-of eUML.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>While this clearly intends to start
+building an algorithm library, this example will be kept not generic to display
+the use of eUML.<o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></p>
@@ -19031,9 +19173,9 @@
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
 mso-ansi-language:EN-US;mso-no-proof:yes'><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 </span><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
 style='color:#030003'>process2_</span>(<span style='color:#030003'>OneSong</span>(),<span
 style='color:#030003'>*</span>(<span style='color:#030003'>State_</span>&lt;<span
 style='color:#030003'>m_src_it</span>&gt;()++)) ),<o:p></o:p></span></p>
@@ -19257,8 +19399,8 @@
 #030003'>Insert</span>;<o:p></o:p></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>This state has no attribute and simply
-calls the function </span><span lang=EN-US style='font-family:"Courier New";
+lang=EN-US style='mso-ansi-language:EN-US'>This state has no attribute and
+simply calls the function </span><span lang=EN-US style='font-family:"Courier New";
 mso-ansi-language:EN-US'>push_back_(container, element)</span><span lang=EN-US
 style='mso-ansi-language:EN-US'> on the state machine&#8217;s result list, then
 sends a Done event, thus moving back to Foreach, which will send the next song,
@@ -19337,9 +19479,10 @@
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
-mso-ansi-language:EN-US;mso-no-proof:yes'><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
-style='color:green'>//<span style='mso-spacerun:yes'>&nbsp; </span>+------------------------------------------------------------------------------+<o:p></o:p></span></span></p>
+mso-ansi-language:EN-US;mso-no-proof:yes'><span style='mso-spacerun:yes'>&nbsp;
+</span><span style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;</span><span
+style='color:green'>//<span style='mso-spacerun:yes'>&nbsp;
+</span>+------------------------------------------------------------------------------+<o:p></o:p></span></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
@@ -19368,9 +19511,10 @@
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
 mso-ansi-language:EN-US;mso-no-proof:yes'><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span><span style='color:#030003'>init_</span> &lt;&lt; <span
-style='color:#030003'>Foreach</span>(), <span style='color:green'>// Init<o:p></o:p></span></span></p>
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><span style='mso-spacerun:yes'>&nbsp;&nbsp;</span><span
+style='color:#030003'>init_</span> &lt;&lt; <span style='color:#030003'>Foreach</span>(),
+<span style='color:green'>// Init<o:p></o:p></span></span></p>
 
 <p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
@@ -19402,9 +19546,9 @@
 mso-layout-grid-align:none;text-autospace:none'><span lang=EN-US
 style='font-size:10.0pt;font-family:"Courier New";mso-fareast-font-family:"Times New Roman";
 mso-ansi-language:EN-US;mso-no-proof:yes'><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 </span><span
-style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;&lt;
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;&lt;
 <span style='color:#030003'>vector</span>&lt;<span style='color:#030003'>OneSong</span>&gt;()
 <span style='color:green'>/*m_tgt_container*/</span>, <span style='color:green'>//
 result<o:p></o:p></span></span></p>
@@ -19481,8 +19625,8 @@
 style='font-family:"Courier New";mso-ansi-language:EN-US'>ErrorMode</span><span
 lang=EN-US style='mso-ansi-language:EN-US'> id 6 and </span><span lang=EN-US
 style='font-family:"Courier New";mso-ansi-language:EN-US'>SleepMode</span><span
-lang=EN-US style='mso-ansi-language:EN-US'> (seen only in the &#8220;Next&#8221;
-column) id 7.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'> (seen only in the
+&#8220;Next&#8221; column) id 7.<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
 lang=EN-US style='mso-ansi-language:EN-US'>If you have some implicitly created
@@ -19492,8 +19636,8 @@
 source at the end of the transition table.<o:p></o:p></span></p>
 
 <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
-lang=EN-US style='mso-ansi-language:EN-US'>If you have composite states, a row will
-be added for them at the end of the table, after the automatically or
+lang=EN-US style='mso-ansi-language:EN-US'>If you have composite states, a row
+will be added for them at the end of the table, after the automatically or
 explicitly created states, which can change their id.<o:p></o:p></span></p>
 
 <p style='margin-bottom:12.0pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
@@ -19545,7 +19689,7 @@
 lang=EN-US style='mso-ansi-language:EN-US'>To achieve this, Msm provides a few
 useful tools:<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo47;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo48;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -19555,7 +19699,7 @@
 lang=EN-US style='mso-ansi-language:EN-US'>: returns a mpl::set of all the
 states defined in the table.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo47;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo48;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -19565,7 +19709,7 @@
 lang=EN-US style='mso-ansi-language:EN-US'>: returns a mpl::set of all the
 events defined in the table.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo47;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo48;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -19575,7 +19719,7 @@
 EN-US'>mpl::size&lt;&gt;::value</span><span lang=EN-US style='mso-ansi-language:
 EN-US'> you can get the number of elements in the set.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo47;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo48;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -19590,7 +19734,7 @@
 "Courier New";mso-ansi-language:EN-US'>cout</span><span lang=EN-US
 style='mso-ansi-language:EN-US'>.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo47;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo48;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -19605,14 +19749,14 @@
 lang=EN-US style='mso-ansi-language:EN-US'> as argument will display all the
 states of the state machine.<o:p></o:p></span></p>
 
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo47;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo48;
 tab-stops:list 36.0pt'><![if !supportLists]><span lang=EN-US style='font-size:
 10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;mso-fareast-font-family:
 Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
 style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 </span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>Let's
-suppose you need even more and recursively find the states and events defined in
-the composite states and thus also having a transition table. No problem!
+suppose you need even more and recursively find the states and events defined
+in the composite states and thus also having a transition table. No problem!
 Calling </span><span lang=EN-US style='font-family:"Courier New";mso-ansi-language:
 EN-US'>recursive_get_transition_table&lt;Composite&gt;</span><span lang=EN-US
 style='mso-ansi-language:EN-US'> will return you the transition table of the


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk