|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r58734 - in sandbox/msm/libs/msm/doc: . index-Dateien
From: christophe.j.henry_at_[hidden]
Date: 2010-01-05 17:38:28
Author: chenry
Date: 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
New Revision: 58734
URL: http://svn.boost.org/trac/boost/changeset/58734
Log:
updated examples
Added:
sandbox/msm/libs/msm/doc/MsmSimpleFunctors.cpp (contents, props changed)
sandbox/msm/libs/msm/doc/SimpleTutorialEuml2.cpp (contents, props changed)
Binary files modified:
sandbox/msm/libs/msm/doc/index-Dateien/image016.jpg
Text files modified:
sandbox/msm/libs/msm/doc/CompositeTutorialEuml.cpp | 89 +-
sandbox/msm/libs/msm/doc/HistoryEuml.cpp | 49
sandbox/msm/libs/msm/doc/OrthogonalDeferredEuml.cpp | 43
sandbox/msm/libs/msm/doc/SimpleTimer.cpp | 32
sandbox/msm/libs/msm/doc/SimpleTutorialEuml.cpp | 51 +
sandbox/msm/libs/msm/doc/iPodSearchEuml.cpp | 10
sandbox/msm/libs/msm/doc/index-Dateien/filelist.xml | 26
sandbox/msm/libs/msm/doc/index-Dateien/props0033.xml | 2
sandbox/msm/libs/msm/doc/index.htm | 1188 +++++++++++++++++++++------------------
9 files changed, 790 insertions(+), 700 deletions(-)
Modified: sandbox/msm/libs/msm/doc/CompositeTutorialEuml.cpp
==============================================================================
--- sandbox/msm/libs/msm/doc/CompositeTutorialEuml.cpp (original)
+++ sandbox/msm/libs/msm/doc/CompositeTutorialEuml.cpp 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -21,10 +21,12 @@
struct open_close : euml_event<open_close>{};
struct next_song : euml_event<next_song>{};
struct previous_song : euml_event<previous_song>{};
+ struct region2_evt : euml_event<region2_evt>{};
// A "complicated" event type that carries some data.
typedef BOOST_TYPEOF(build_attributes(attributes_ << std::string() << DiskTypeEnum() )) cd_detected_attributes;
- struct cd_detected : euml_event<cd_detected>, cd_detected_attributes
+ struct cd_detected : euml_event<cd_detected>,cd_detected_attributes
+
{
cd_detected(){}
cd_detected(std::string name, DiskTypeEnum diskType)
@@ -37,6 +39,8 @@
// Concrete FSM implementation
// The list of FSM states
+ // state not defining any entry or exit
+ typedef BOOST_TYPEOF(build_state( )) Paused;
typedef BOOST_TYPEOF(build_state(Empty_Entry(),Empty_Exit())) Empty;
@@ -44,8 +48,7 @@
typedef BOOST_TYPEOF(build_state( Stopped_Entry(),Stopped_Exit() )) Stopped;
- // state not defining any entry or exit
- typedef BOOST_TYPEOF(build_state( )) Paused;
+
// Playing is now a state machine itself.
@@ -56,14 +59,18 @@
typedef BOOST_TYPEOF(build_state( Song3_Entry(),Song3_Exit() )) Song3;
+ typedef BOOST_TYPEOF(build_state( Region2State1_Entry(),Region2State1_Exit() )) Region2State1;
+
+ typedef BOOST_TYPEOF(build_state( Region2State2_Entry(),Region2State2_Exit() )) Region2State2;
// Playing has a transition table
- typedef BOOST_TYPEOF(build_stt(
+ typedef BOOST_TYPEOF(build_stt((
// +------------------------------------------------------------------------------+
- ( Song1() + next_song() == Song2() / start_next_song(),
- Song2() + previous_song() == Song1() / start_prev_song(),
- Song2() + next_song() == Song3() / start_next_song(),
- Song3() + previous_song() == Song2() / start_prev_song()
+ Song2() == Song1() + next_song() / start_next_song(),
+ Song1() == Song2() + previous_song() / start_prev_song(),
+ Song3() == Song2() + next_song() / start_next_song(),
+ Song2() == Song3() + previous_song() / start_prev_song(),
+ Region2State2() == Region2State1() + region2_evt()
// +------------------------------------------------------------------------------+
) ) ) playing_transition_table;
@@ -76,7 +83,7 @@
#else
// but this definition is ok
struct Playing_ : public BOOST_TYPEOF(build_sm( playing_transition_table(), //STT
- init_ << Song1() // Init State
+ init_ << Song1() << Region2State1() // Init State
))
{
};
@@ -85,36 +92,36 @@
typedef msm::back::state_machine<Playing_> Playing;
// replaces the old transition table
- typedef BOOST_TYPEOF(build_stt
- ((Stopped() + play() == Playing() / start_playback() ,
- Stopped() + open_close() == Open() / open_drawer(),
- Stopped() + stop() == Stopped(),
- // +------------------------------------------------------------------------------+
- Open() + open_close() == Empty() / close_drawer(),
- // +------------------------------------------------------------------------------+
- Empty() + open_close() == Open() / open_drawer(),
- Empty() + cd_detected() == Stopped() [good_disk_format()&&(Event_<1>()==Int_<DISK_CD>())]
- / (store_cd_info(),process_(play())),
- // +------------------------------------------------------------------------------+
- Playing() + stop() == Stopped() / stop_playback(),
- Playing() + pause() == Paused() / pause_playback(),
- Playing() + open_close() == Open() / stop_and_open(),
- // +------------------------------------------------------------------------------+
- Paused() + end_pause() == Playing() / resume_playback(),
- Paused() + stop() == Stopped() / stop_playback(),
- Paused() + open_close() == Open() / stop_and_open()
- // +------------------------------------------------------------------------------+
- ) ) ) transition_table;
+ typedef BOOST_TYPEOF(build_stt((
+ Playing() == Stopped() + play() / start_playback() ,
+ Playing() == Paused() + end_pause() / resume_playback(),
+ // +------------------------------------------------------------------------------+
+ Empty() == Open() + open_close() / close_drawer(),
+ // +------------------------------------------------------------------------------+
+ Open() == Empty() + open_close() / open_drawer(),
+ Open() == Paused() + open_close() / stop_and_open(),
+ Open() == Stopped() + open_close() / open_drawer(),
+ Open() == Playing() + open_close() / stop_and_open(),
+ // +------------------------------------------------------------------------------+
+ Paused() == Playing() + pause() / pause_playback(),
+ // +------------------------------------------------------------------------------+
+ Stopped() == Playing() + stop() / stop_playback(),
+ Stopped() == Paused() + stop() / stop_playback(),
+ Stopped() == Empty() + cd_detected() [good_disk_format()&&(Event_<1>()==Int_<DISK_CD>())]
+ / (store_cd_info(),process_(play())),
+ Stopped() == Stopped() + stop()
+ // +------------------------------------------------------------------------------+
+ ) ) ) transition_table;
// create a state machine "on the fly"
typedef BOOST_TYPEOF(build_sm( transition_table(), //STT
- init_ << Empty(), // Init State
- NoAction(), // Entry
- NoAction(), // Exit
- attributes_ << no_attributes_, // Attributes
- configure_<< no_configure_, // Flags, Deferred events, configuration
- Log_No_Transition() // no_transition handler
- )) player_;
+ init_ << Empty(), // Init State
+ NoAction(), // Entry
+ NoAction(), // Exit
+ attributes_ << no_attributes_, // Attributes
+ configure_<< no_configure_, // Flags, Deferred events, configuration
+ Log_No_Transition() // no_transition handler
+ )) player_;
// or simply, if no no_transition handler needed:
//typedef BOOST_TYPEOF(build_sm( transition_table(), //STT
// Empty(), // Init State
@@ -126,7 +133,7 @@
//
// Testing utilities.
//
- static char const* const state_names[] = { "Stopped", "Open", "Empty", "Playing", "Paused" };
+ static char const* const state_names[] = { "Stopped", "Paused", "Open", "Empty", "Playing" };
void pstate(player const& p)
{
std::cout << " -> " << state_names[p.current_state()[0]] << std::endl;
@@ -134,7 +141,7 @@
void test()
{
- player p;
+ player p;
// needed to start the highest-level SM. This will call on_entry and mark the start of the SM
p.start();
// go to Open, call on_exit on Empty, then action, then on_entry on Open
@@ -146,7 +153,7 @@
p.process_event(
cd_detected("louie, louie",DISK_CD)); pstate(p);
// no need to call play() as the previous event does it in its action method
- //p.process_event(play());
+ //p.process_event(play());
// make transition happen inside it. Player has no idea about this event but it's ok.
p.process_event(next_song());pstate(p); //2nd song active
@@ -155,15 +162,15 @@
// at this point, Play is active
p.process_event(pause()); pstate(p);
+
// go back to Playing
p.process_event(end_pause()); pstate(p);
p.process_event(pause()); pstate(p);
p.process_event(stop()); pstate(p);
+
// event leading to the same state
// no action method called as none is defined in the transition table
p.process_event(stop()); pstate(p);
- // test call to no_transition
- p.process_event(pause()); pstate(p);
}
}
Modified: sandbox/msm/libs/msm/doc/HistoryEuml.cpp
==============================================================================
--- sandbox/msm/libs/msm/doc/HistoryEuml.cpp (original)
+++ sandbox/msm/libs/msm/doc/HistoryEuml.cpp 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -34,9 +34,14 @@
}
};
+ // Seems to correct random VC9 bug
+ struct PlayingPaused: euml_flag<PlayingPaused>{};
+
// Concrete FSM implementation
// The list of FSM states
+ // state not defining any entry or exit
+ typedef BOOST_TYPEOF(build_state( )) Paused;
typedef BOOST_TYPEOF(build_state(Empty_Entry(),Empty_Exit())) Empty;
@@ -44,8 +49,6 @@
typedef BOOST_TYPEOF(build_state( Stopped_Entry(),Stopped_Exit() )) Stopped;
- // state not defining any entry or exit
- typedef BOOST_TYPEOF(build_state( )) Paused;
// Playing is now a state machine itself.
@@ -58,12 +61,12 @@
// Playing has a transition table
- typedef BOOST_TYPEOF(build_stt(
+ typedef BOOST_TYPEOF(build_stt((
// +------------------------------------------------------------------------------+
- ( Song1() + next_song() == Song2() / start_next_song(),
- Song2() + previous_song() == Song1() / start_prev_song(),
- Song2() + next_song() == Song3() / start_next_song(),
- Song3() + previous_song() == Song2() / start_prev_song()
+ Song2() == Song1() + next_song() / start_next_song(),
+ Song1() == Song2() + previous_song() / start_prev_song(),
+ Song3() == Song2() + next_song() / start_next_song(),
+ Song2() == Song3() + previous_song() / start_prev_song()
// +------------------------------------------------------------------------------+
) ) ) playing_transition_table;
@@ -85,24 +88,24 @@
typedef msm::back::state_machine<Playing_,msm::back::ShallowHistory<mpl::vector<end_pause> > > Playing;
// replaces the old transition table
- typedef BOOST_TYPEOF(build_stt
- ((Stopped() + play() == Playing() / start_playback() ,
- Stopped() + open_close() == Open() / open_drawer(),
- Stopped() + stop() == Stopped(),
+ typedef BOOST_TYPEOF(build_stt((
+ Playing() == Stopped() + play() / start_playback() ,
+ Playing() == Paused() + end_pause() / resume_playback(),
+ // +------------------------------------------------------------------------------+
+ Empty() == Open() + open_close() / close_drawer(),
// +------------------------------------------------------------------------------+
- Open() + open_close() == Empty() / close_drawer(),
+ Open() == Empty() + open_close() / open_drawer(),
+ Open() == Paused() + open_close() / stop_and_open(),
+ Open() == Stopped() + open_close() / open_drawer(),
+ Open() == Playing() + open_close() / stop_and_open(),
// +------------------------------------------------------------------------------+
- Empty() + open_close() == Open() / open_drawer(),
- Empty() + cd_detected() == Stopped() [good_disk_format()&&(Event_<1>()==Int_<DISK_CD>())]
- / (store_cd_info(),process_(play())),
- // +------------------------------------------------------------------------------+
- Playing() + stop() == Stopped() / stop_playback(),
- Playing() + pause() == Paused() / pause_playback(),
- Playing() + open_close() == Open() / stop_and_open(),
+ Paused() == Playing() + pause() / pause_playback(),
// +------------------------------------------------------------------------------+
- Paused() + end_pause() == Playing() / resume_playback(),
- Paused() + stop() == Stopped() / stop_playback(),
- Paused() + open_close() == Open() / stop_and_open()
+ Stopped() == Playing() + stop() / stop_playback(),
+ Stopped() == Paused() + stop() / stop_playback(),
+ Stopped() == Empty() + cd_detected() [good_disk_format()&&(Event_<1>()==Int_<DISK_CD>())]
+ / (store_cd_info(),process_(play())),
+ Stopped() == Stopped() + stop()
// +------------------------------------------------------------------------------+
) ) ) transition_table;
@@ -126,7 +129,7 @@
//
// Testing utilities.
//
- static char const* const state_names[] = { "Stopped", "Open", "Empty", "Playing", "Paused" };
+ static char const* const state_names[] = { "Stopped", "Paused", "Open", "Empty", "Playing" };
void pstate(player const& p)
{
std::cout << " -> " << state_names[p.current_state()[0]] << std::endl;
Added: sandbox/msm/libs/msm/doc/MsmSimpleFunctors.cpp
==============================================================================
--- (empty file)
+++ sandbox/msm/libs/msm/doc/MsmSimpleFunctors.cpp 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -0,0 +1,249 @@
+// MsmSimple.cpp : Defines the entry point for the console application.
+//
+
+#include "stdafx.h"
+
+#include <boost/msm/back/state_machine.hpp>
+#include <boost/msm/front/state_machine_def.hpp>
+#include <boost/msm/front/functor_row.hpp>
+
+namespace msm = boost::msm;
+namespace mpl = boost::mpl;
+using namespace msm::front;
+
+#include <iostream>
+#ifdef WIN32
+#include "windows.h"
+#else
+#include <sys/time.h>
+#endif
+
+namespace test_fsm // Concrete FSM implementation
+{
+ // events
+ struct play {};
+ struct end_pause {};
+ struct stop {};
+ struct pause {};
+ struct open_close {};
+ struct cd_detected{};
+
+ // Concrete FSM implementation
+ struct player_ : public msm::front::state_machine_def<player_>
+ {
+ // no need for exception handling or message queue
+ typedef int no_exception_thrown;
+ typedef int no_message_queue;
+
+ // The list of FSM states
+ struct Empty : public msm::front::state<>
+ {
+ // optional entry/exit methods
+ template <class Event,class FSM>
+ void on_entry(Event const&,FSM& ) {/*std::cout << "entering: Empty" << std::endl;*/}
+ template <class Event,class FSM>
+ void on_exit(Event const&,FSM& ) {/*std::cout << "leaving: Empty" << std::endl;*/}
+ };
+ struct Open : public msm::front::state<>
+ {
+ template <class Event,class FSM>
+ void on_entry(Event const&,FSM& ) {/*std::cout << "entering: Open" << std::endl;*/}
+ template <class Event,class FSM>
+ void on_exit(Event const&,FSM& ) {/*std::cout << "leaving: Open" << std::endl;*/}
+ };
+
+ struct Stopped : public msm::front::state<>
+ {
+ // when stopped, the CD is loaded
+ template <class Event,class FSM>
+ void on_entry(Event const&,FSM& ) {/*std::cout << "entering: Stopped" << std::endl;*/}
+ template <class Event,class FSM>
+ void on_exit(Event const&,FSM& ) {/*std::cout << "leaving: Stopped" << std::endl;*/}
+ };
+
+ struct Playing : public msm::front::state<>
+ {
+ template <class Event,class FSM>
+ void on_entry(Event const&,FSM& ) {/*std::cout << "entering: Playing" << std::endl;*/}
+ template <class Event,class FSM>
+ void on_exit(Event const&,FSM& ) {/*std::cout << "leaving: Playing" << std::endl;*/}
+ };
+
+ // state not defining any entry or exit
+ struct Paused : public msm::front::state<>
+ {
+ template <class Event,class FSM>
+ void on_entry(Event const&,FSM& ) {/*std::cout << "entering: Paused" << std::endl;*/}
+ template <class Event,class FSM>
+ void on_exit(Event const&,FSM& ) {/*std::cout << "leaving: Paused" << std::endl;*/}
+ };
+
+ // the initial state of the player SM. Must be defined
+ typedef Empty initial_state;
+ // transition actions
+ struct start_playback
+ {
+ template <class FSM,class EVT,class SourceState,class TargetState>
+ void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
+ {
+ }
+ };
+ struct open_drawer
+ {
+ template <class FSM,class EVT,class SourceState,class TargetState>
+ void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
+ {
+ }
+ };
+ struct close_drawer
+ {
+ template <class FSM,class EVT,class SourceState,class TargetState>
+ void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
+ {
+ }
+ };
+ struct store_cd_info
+ {
+ template <class FSM,class EVT,class SourceState,class TargetState>
+ void operator()(EVT const&, FSM& fsm ,SourceState& ,TargetState& )
+ {
+ }
+ };
+ struct stop_playback
+ {
+ template <class FSM,class EVT,class SourceState,class TargetState>
+ void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
+ {
+ }
+ };
+ struct pause_playback
+ {
+ template <class FSM,class EVT,class SourceState,class TargetState>
+ void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
+ {
+ }
+ };
+ struct resume_playback
+ {
+ template <class FSM,class EVT,class SourceState,class TargetState>
+ void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
+ {
+ }
+ };
+ struct stop_and_open
+ {
+ template <class FSM,class EVT,class SourceState,class TargetState>
+ void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
+ {
+ }
+ };
+ struct stopped_again
+ {
+ template <class FSM,class EVT,class SourceState,class TargetState>
+ void operator()(EVT const& ,FSM&,SourceState& ,TargetState& )
+ {
+ }
+ };
+ // guard conditions
+
+ // Transition table for player
+ struct transition_table : mpl::vector<
+ // Start Event Next Action Guard
+ // +---------+-------------+---------+---------------------+----------------------+
+ Row < Stopped , play , Playing , start_playback >,
+ Row < Stopped , open_close , Open , open_drawer >,
+ Row < Stopped , stop , Stopped , stopped_again >,
+ // +---------+-------------+---------+---------------------+----------------------+
+ Row < Open , open_close , Empty , close_drawer >,
+ // +---------+-------------+---------+---------------------+----------------------+
+ Row < Empty , open_close , Open , open_drawer >,
+ Row < Empty , cd_detected , Stopped , store_cd_info >,
+ // +---------+-------------+---------+---------------------+----------------------+
+ Row < Playing , stop , Stopped , stop_playback >,
+ Row < Playing , pause , Paused , pause_playback >,
+ Row < Playing , open_close , Open , stop_and_open >,
+ // +---------+-------------+---------+---------------------+----------------------+
+ Row < Paused , end_pause , Playing , resume_playback >,
+ Row < Paused , stop , Stopped , stop_playback >,
+ Row < Paused , open_close , Open , stop_and_open >
+ // +---------+-------------+---------+---------------------+----------------------+
+ > {};
+
+ // Replaces the default no-transition response.
+ template <class FSM,class Event>
+ void no_transition(Event const& e, FSM&,int state)
+ {
+ std::cout << "no transition from state " << state
+ << " on event " << typeid(e).name() << std::endl;
+ }
+ };
+ typedef msm::back::state_machine<player_> player;
+
+ //
+ // Testing utilities.
+ //
+ static char const* const state_names[] = { "Stopped", "Open", "Empty", "Playing", "Paused" };
+
+ void pstate(player const& p)
+ {
+ std::cout << " -> " << state_names[p.current_state()[0]] << std::endl;
+ }
+
+}
+
+#ifndef WIN32
+long mtime(struct timeval& tv1,struct timeval& tv2)
+{
+ return (tv2.tv_sec-tv1.tv_sec) *1000000 + ((tv2.tv_usec-tv1.tv_usec));
+}
+#endif
+
+
+int main()
+{
+ // for timing
+#ifdef WIN32
+ LARGE_INTEGER res;
+ ::QueryPerformanceFrequency(&res);
+ LARGE_INTEGER li,li2;
+#else
+ struct timeval tv1,tv2;
+ gettimeofday(&tv1,NULL);
+#endif
+ test_fsm::player p2;
+ p2.start();
+ // for timing
+#ifdef WIN32
+ ::QueryPerformanceCounter(&li);
+#else
+ gettimeofday(&tv1,NULL);
+#endif
+ for (int i=0;i<10000;++i)
+ {
+ p2.process_event(test_fsm::open_close());
+ p2.process_event(test_fsm::open_close());
+ p2.process_event(test_fsm::cd_detected());
+ p2.process_event(test_fsm::play());
+ p2.process_event(test_fsm::pause());
+ // go back to Playing
+ p2.process_event(test_fsm::end_pause());
+ p2.process_event(test_fsm::pause());
+ p2.process_event(test_fsm::stop());
+ // event leading to the same state
+ p2.process_event(test_fsm::stop());
+ p2.process_event(test_fsm::open_close());
+ p2.process_event(test_fsm::open_close());
+ }
+#ifdef WIN32
+ ::QueryPerformanceCounter(&li2);
+#else
+ gettimeofday(&tv2,NULL);
+#endif
+#ifdef WIN32
+ std::cout << "msm took in s:" << (double)(li2.QuadPart-li.QuadPart)/res.QuadPart <<"\n" <<std::endl;
+#else
+ std::cout << "msm took in us:" << mtime(tv1,tv2) <<"\n" <<std::endl;
+#endif
+ return 0;
+}
+
Modified: sandbox/msm/libs/msm/doc/OrthogonalDeferredEuml.cpp
==============================================================================
--- sandbox/msm/libs/msm/doc/OrthogonalDeferredEuml.cpp (original)
+++ sandbox/msm/libs/msm/doc/OrthogonalDeferredEuml.cpp 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -86,12 +86,12 @@
// Playing has a transition table
- typedef BOOST_TYPEOF(build_stt(
+ typedef BOOST_TYPEOF(build_stt((
// +------------------------------------------------------------------------------+
- ( Song1() + next_song() == Song2() / start_next_song(),
- Song2() + previous_song() == Song1() / start_prev_song(),
- Song2() + next_song() == Song3() / start_next_song(),
- Song3() + previous_song() == Song2() / start_prev_song()
+ Song2() == Song1() + next_song() / start_next_song(),
+ Song1() == Song2() + previous_song() / start_prev_song(),
+ Song3() == Song2() + next_song() / start_next_song(),
+ Song2() == Song3() + previous_song() / start_prev_song()
// +------------------------------------------------------------------------------+
) ) ) playing_transition_table;
@@ -117,27 +117,24 @@
typedef msm::back::state_machine<Playing_> Playing;
// replaces the old transition table
- typedef BOOST_TYPEOF(build_stt
- ((Stopped() + play() == Playing() / start_playback() ,
- Stopped() + open_close() == Open() / open_drawer(),
- Stopped() + stop() == Stopped(),
+ typedef BOOST_TYPEOF(build_stt((
+ Playing() == Stopped() + play() / start_playback() ,
+ Playing() == Paused() + end_pause() / resume_playback(),
// +------------------------------------------------------------------------------+
- Open() + open_close() == Empty() / close_drawer(),
+ Empty() == Open() + open_close() / close_drawer(),
// +------------------------------------------------------------------------------+
- Empty() + open_close() == Open() / open_drawer(),
- Empty() + cd_detected() == Stopped() [good_disk_format()&&(Event_<1>()==Int_<DISK_CD>())]
- / store_cd_info(),
- // +------------------------------------------------------------------------------+
- Playing() + stop() == Stopped() / stop_playback(),
- Playing() + pause() == Paused() / pause_playback(),
- Playing() + open_close() == Open() / stop_and_open(),
+ Open() == Empty() + open_close() / open_drawer(),
+ Open() == Paused() + open_close() / stop_and_open(),
+ Open() == Stopped() + open_close() / open_drawer(),
+ Open() == Playing() + open_close() / stop_and_open(),
// +------------------------------------------------------------------------------+
- Paused() + end_pause() == Playing() / resume_playback(),
- Paused() + stop() == Stopped() / stop_playback(),
- Paused() + open_close() == Open() / stop_and_open(),
+ Paused() == Playing() + pause() / pause_playback(),
// +------------------------------------------------------------------------------+
- AllOk() + error_found() == ErrorMode()/ report_error(),
- ErrorMode()+ end_error() == AllOk() / report_end_error()
+ Stopped() == Playing() + stop() / stop_playback(),
+ Stopped() == Paused() + stop() / stop_playback(),
+ Stopped() == Empty() + cd_detected() [good_disk_format()&&(Event_<1>()==Int_<DISK_CD>())]
+ / (store_cd_info(),process_(play())),
+ Stopped() == Stopped() + stop()
// +------------------------------------------------------------------------------+
) ) ) transition_table;
@@ -161,7 +158,7 @@
//
// Testing utilities.
//
- static char const* const state_names[] = { "Stopped", "Open", "Empty", "Playing", "Paused","AllOk","ErrorMode" };
+ static char const* const state_names[] = { "Stopped", "Paused", "Open", "Empty", "Playing" };
void pstate(player const& p)
{
// we have now several active states, which we show
Modified: sandbox/msm/libs/msm/doc/SimpleTimer.cpp
==============================================================================
--- sandbox/msm/libs/msm/doc/SimpleTimer.cpp (original)
+++ sandbox/msm/libs/msm/doc/SimpleTimer.cpp 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -73,27 +73,29 @@
typedef BOOST_TYPEOF(build_state( Ringing_Entry(), NoAction(), attributes_ << int()/*M_RINGING_CPT*/ )) Ringing;
// replaces the old transition table
- typedef BOOST_TYPEOF(build_stt
+ typedef BOOST_TYPEOF(build_stt((
+ // +------------------------------------------------------------------------------+
// When we start the countdown, the countdown value is not hardcoded but contained in the start_timer event.
// We copy this value into Started
- ((Stopped() + start_timer() == Started() / (Target_<m_counter>()= Event_<m_timer>()),
- Started() + stop_timer() == Stopped() ,
- Started() + tick() == Started()
- // we here use the message queue to move to Started when the countdown is finished
- // to do this we put start_ringing into the message queue
- / if_then_( (Source_<m_counter>() -= Event_<m_tick>()) <= Int_<0>(),
- process_(start_ringing()) ),
+ Started() == Stopped() + start_timer() / (Target_<m_counter>()= Event_<m_timer>()) ,
+ Stopped() == Started() + stop_timer() ,
+ // internal transition
+ Started() + tick()
+ // we here use the message queue to move to Started when the countdown is finished
+ // to do this we put start_ringing into the message queue
+ / if_then_( (Source_<m_counter>() -= Event_<m_tick>()) <= Int_<0>(),
+ process_(start_ringing()) ) ,
// when we start ringing, we give to the state its hard-coded ringing time.
- Started() + start_ringing() == Ringing() / (Target_<m_ringing_cpt>() = Int_<RINGING_TIME>()),
+ Ringing() == Started() + start_ringing() / (Target_<m_ringing_cpt>() = Int_<RINGING_TIME>()),
// to change a bit, we now do not use the message queue but a transition conflict to solve the same problem.
- // When tick is fired, we have a transition Ringing -> Ringing, as long as Counter > 0
- Ringing() + tick() == Ringing() [ Source_<m_ringing_cpt>() - Event_<m_tick>() > Int_<0>() ]
- / (Source_<m_ringing_cpt>() -= Event_<m_tick>() ),
+ // When tick is fired, we have an internal transition Ringing -> Ringing, as long as Counter > 0
+ Ringing() + tick() [ Source_<m_ringing_cpt>() - Event_<m_tick>() > Int_<0>() ]
+ / (Source_<m_ringing_cpt>() -= Event_<m_tick>() ) ,
// And we move to Stopped when the counter is 0
- Ringing() + tick() == Stopped() [ Source_<m_ringing_cpt>()-Event_<m_tick>() <= Int_<0>() ],
+ Stopped() == Ringing() + tick() [ Source_<m_ringing_cpt>()-Event_<m_tick>() <= Int_<0>() ],
// we let the user manually stop the ringing by pressing any button
- Ringing() + stop_timer() == Stopped(),
- Ringing() + start_timer() == Stopped()
+ Stopped() == Ringing() + stop_timer() ,
+ Stopped() == Ringing() + start_timer()
// +------------------------------------------------------------------------------+
) ) ) transition_table;
Modified: sandbox/msm/libs/msm/doc/SimpleTutorialEuml.cpp
==============================================================================
--- sandbox/msm/libs/msm/doc/SimpleTutorialEuml.cpp (original)
+++ sandbox/msm/libs/msm/doc/SimpleTutorialEuml.cpp 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -53,34 +53,37 @@
typedef BOOST_TYPEOF(build_state( )) Paused;
// replaces the old transition table
- typedef BOOST_TYPEOF(build_stt
- ((Stopped() + play() == Playing() / start_playback() ,
- Stopped() + open_close() == Open() / open_drawer(),
- Stopped() + stop() == Stopped(),
+ typedef BOOST_TYPEOF(build_stt((
+ Playing() == Stopped() + play() / start_playback() ,
+ Playing() == Paused() + end_pause() / resume_playback(),
// +------------------------------------------------------------------------------+
- Open() + open_close() == Empty() / close_drawer(),
+ Empty() == Open() + open_close() / close_drawer(),
// +------------------------------------------------------------------------------+
- Empty() + open_close() == Open() / open_drawer(),
- Empty() + cd_detected() == Stopped() [good_disk_format()&&(Event_<1>()==Int_<DISK_CD>())]
- / (store_cd_info(),process_(play())),
- // +------------------------------------------------------------------------------+
- Playing() + stop() == Stopped() / stop_playback(),
- Playing() + pause() == Paused() / pause_playback(),
- Playing() + open_close() == Open() / stop_and_open(),
+ Open() == Empty() + open_close() / open_drawer(),
+ Open() == Paused() + open_close() / stop_and_open(),
+ Open() == Stopped() + open_close() / open_drawer(),
+ Open() == Playing() + open_close() / stop_and_open(),
// +------------------------------------------------------------------------------+
- Paused() + end_pause() == Playing() / resume_playback(),
- Paused() + stop() == Stopped() / stop_playback(),
- Paused() + open_close() == Open() / stop_and_open()
+ Paused() == Playing() + pause() / pause_playback(),
+ // +------------------------------------------------------------------------------+
+ Stopped() == Playing() + stop() / stop_playback(),
+ Stopped() == Paused() + stop() / stop_playback(),
+ Stopped() == Empty() + cd_detected() [good_disk_format()&&(Event_<1>()==Int_<DISK_CD>())]
+ / (store_cd_info(),process_(play())),
+ Stopped() == Stopped() + stop()
// +------------------------------------------------------------------------------+
) ) ) transition_table;
// create a state machine "on the fly"
+ // VC9 sometimes cannot compile the typedef with build_sm
+#ifndef BOOST_MSVC
+ // create a state machine "on the fly" for player
typedef BOOST_TYPEOF(build_sm( transition_table(), //STT
init_ << Empty(), // Init State
NoAction(), // Entry
NoAction(), // Exit
attributes_ << no_attributes_, // Attributes
- configure_<< no_configure_, // Flags, Deferred events, configuration
+ configure_ << no_configure_,
Log_No_Transition() // no_transition handler
)) player_;
// or simply, if no no_transition handler needed:
@@ -88,14 +91,26 @@
// Empty() // Init State
// )) player_;
-
+#else
+ // but this definition is ok
+ struct player_ : public BOOST_TYPEOF(build_sm( transition_table(), //STT
+ init_ << Empty(), // Init State
+ NoAction(), // Entry
+ NoAction(), // Exit
+ attributes_ << no_attributes_, // Attributes
+ configure_ << no_configure_, // configuration
+ Log_No_Transition() // no_transition handler
+ ))
+ {
+ };
+#endif
// choice of back-end
typedef msm::back::state_machine<player_> player;
//
// Testing utilities.
//
- static char const* const state_names[] = { "Stopped", "Open", "Empty", "Playing", "Paused" };
+ static char const* const state_names[] = { "Stopped", "Paused", "Open", "Empty", "Playing" };
void pstate(player const& p)
{
std::cout << " -> " << state_names[p.current_state()[0]] << std::endl;
Added: sandbox/msm/libs/msm/doc/SimpleTutorialEuml2.cpp
==============================================================================
--- (empty file)
+++ sandbox/msm/libs/msm/doc/SimpleTutorialEuml2.cpp 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -0,0 +1,156 @@
+#include <vector>
+#include <iostream>
+
+#include <boost/msm/back/state_machine.hpp>
+#include <boost/msm/front/euml/euml.hpp>
+
+using namespace std;
+using namespace boost::msm::front::euml;
+namespace msm = boost::msm;
+
+// entry/exit/action/guard logging functors
+#include "logging_functors.h"
+
+namespace // Concrete FSM implementation
+{
+ // events
+ // note that unlike the SimpleTutorial, events must derive from euml_event.
+ struct play : euml_event<play>{};
+ struct end_pause : euml_event<end_pause>{};
+ struct stop : euml_event<stop>{};
+ struct pause : euml_event<pause>{};
+ struct open_close : euml_event<open_close>{};
+
+ // A "complicated" event type that carries some data.
+ // first define the attributes
+ typedef BOOST_TYPEOF(build_attributes(attributes_ << std::string() << DiskTypeEnum() )) cd_detected_def;
+ // pass the attributes to the event
+ struct cd_detected : euml_event<cd_detected>,cd_detected_def
+ {
+ cd_detected(){}
+ cd_detected(std::string name, DiskTypeEnum diskType)
+ {
+ // 1st attribute, a string
+ get_attribute<0>()=name;
+ // 2nd attribute, a DiskTypeEnum
+ get_attribute<1>()=diskType;
+ }
+ };
+
+ // Concrete FSM implementation
+
+ // The list of FSM states
+
+ typedef BOOST_TYPEOF(build_state(Empty_Entry(),Empty_Exit())) Empty;
+
+ typedef BOOST_TYPEOF(build_state( Open_Entry(),Open_Exit() )) Open;
+
+ typedef BOOST_TYPEOF(build_state( Stopped_Entry(),Stopped_Exit() )) Stopped;
+
+ typedef BOOST_TYPEOF(build_state( (Playing_Entry()),(Playing_Exit()) )) Playing;
+
+ // state not needing any entry or exit
+ typedef BOOST_TYPEOF(build_state( )) Paused;
+
+ // replaces the old transition table
+ typedef BOOST_TYPEOF(build_stt((
+ Stopped() + play() / start_playback() == Playing() ,
+ Stopped() + open_close() / open_drawer() == Open() ,
+ Stopped() + stop() == Stopped(),
+ // +------------------------------------------------------------------------------+
+ Open() + open_close() / close_drawer() == Empty() ,
+ // +------------------------------------------------------------------------------+
+ Empty() + open_close() / open_drawer() == Open() ,
+ Empty() + cd_detected()
+ [good_disk_format()&&(Event_<1>()==Int_<DISK_CD>())]
+ / (store_cd_info(),process_(play())) == Stopped() ,
+ // +------------------------------------------------------------------------------+
+ Playing() + stop() / stop_playback() == Stopped() ,
+ Playing() + pause() / pause_playback() == Paused() ,
+ Playing() + open_close() / stop_and_open() == Open() ,
+ // +------------------------------------------------------------------------------+
+ Paused() + end_pause() / resume_playback() == Playing() ,
+ Paused() + stop() / stop_playback() == Stopped() ,
+ Paused() + open_close() / stop_and_open() == Open()
+ // +------------------------------------------------------------------------------+
+ ) ) ) transition_table;
+
+ // create a state machine "on the fly"
+ // VC9 sometimes cannot compile the typedef with build_sm
+#ifndef BOOST_MSVC
+ // create a state machine "on the fly" for player
+ typedef BOOST_TYPEOF(build_sm( transition_table(), //STT
+ init_ << Empty(), // Init State
+ NoAction(), // Entry
+ NoAction(), // Exit
+ attributes_ << no_attributes_, // Attributes
+ configure_ << no_configure_,
+ Log_No_Transition() // no_transition handler
+ )) player_;
+ // or simply, if no no_transition handler needed:
+ //typedef BOOST_TYPEOF(build_sm( transition_table(), //STT
+ // Empty() // Init State
+ // )) player_;
+
+#else
+ // but this definition is ok
+ struct player_ : public BOOST_TYPEOF(build_sm( transition_table(), //STT
+ init_ << Empty(), // Init State
+ NoAction(), // Entry
+ NoAction(), // Exit
+ attributes_ << no_attributes_, // Attributes
+ configure_ << no_configure_, // configuration
+ Log_No_Transition() // no_transition handler
+ ))
+ {
+ };
+#endif
+
+ // choice of back-end
+ typedef msm::back::state_machine<player_> player;
+
+ //
+ // Testing utilities.
+ //
+ static char const* const state_names[] = { "Stopped", "Open", "Empty", "Playing", "Paused" };
+ void pstate(player const& p)
+ {
+ std::cout << " -> " << state_names[p.current_state()[0]] << std::endl;
+ }
+
+ void test()
+ {
+ player p;
+ // needed to start the highest-level SM. This will call on_entry and mark the start of the SM
+ p.start();
+ // go to Open, call on_exit on Empty, then action, then on_entry on Open
+ p.process_event(open_close()); pstate(p);
+ p.process_event(open_close()); pstate(p);
+ // will be rejected, wrong disk type
+ p.process_event(
+ cd_detected("louie, louie",DISK_DVD)); pstate(p);
+ p.process_event(
+ cd_detected("louie, louie",DISK_CD)); pstate(p);
+ // no need to call play() as the previous event does it in its action method
+ //p.process_event(play());
+
+ // at this point, Play is active
+ p.process_event(pause()); pstate(p);
+ // go back to Playing
+ p.process_event(end_pause()); pstate(p);
+ p.process_event(pause()); pstate(p);
+ p.process_event(stop()); pstate(p);
+ // event leading to the same state
+ // no action method called as none is defined in the transition table
+ p.process_event(stop()); pstate(p);
+ // test call to no_transition
+ p.process_event(pause()); pstate(p);
+ }
+}
+
+int main()
+{
+ test();
+ return 0;
+}
+
Modified: sandbox/msm/libs/msm/doc/iPodSearchEuml.cpp
==============================================================================
--- sandbox/msm/libs/msm/doc/iPodSearchEuml.cpp (original)
+++ sandbox/msm/libs/msm/doc/iPodSearchEuml.cpp 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -86,11 +86,11 @@
// replaces the old transition table
- typedef BOOST_TYPEOF(build_stt
- ((Foreach() + OneSong() == StringFind() ,
- StringFind() + Found() == Insert() ,
- StringFind() + NotFound() == Foreach() ,
- Insert() + Done() == Foreach()
+ typedef BOOST_TYPEOF(build_stt((
+ StringFind() == Foreach() + OneSong() ,
+ Insert() == StringFind() + Found() ,
+ Foreach() == StringFind() + NotFound() ,
+ Foreach() == Insert() + Done()
// +------------------------------------------------------------------------------+
) ) ) transition_table;
struct Log_No_Transition : euml_action<Log_No_Transition>
Modified: sandbox/msm/libs/msm/doc/index-Dateien/filelist.xml
==============================================================================
--- sandbox/msm/libs/msm/doc/index-Dateien/filelist.xml (original)
+++ sandbox/msm/libs/msm/doc/index-Dateien/filelist.xml 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -5,30 +5,30 @@
<o:File HRef="themedata.thmx"/>
<o:File HRef="colorschememapping.xml"/>
<o:File HRef="image001.jpg"/>
- <o:File HRef="image027.jpg"/>
+ <o:File HRef="image002.jpg"/>
<o:File HRef="image003.jpg"/>
- <o:File HRef="image028.jpg"/>
+ <o:File HRef="image004.jpg"/>
<o:File HRef="image005.jpg"/>
- <o:File HRef="image029.jpg"/>
+ <o:File HRef="image006.jpg"/>
<o:File HRef="image007.jpg"/>
- <o:File HRef="image030.jpg"/>
+ <o:File HRef="image008.jpg"/>
<o:File HRef="image009.jpg"/>
- <o:File HRef="image031.jpg"/>
+ <o:File HRef="image010.jpg"/>
<o:File HRef="image011.jpg"/>
- <o:File HRef="image032.jpg"/>
+ <o:File HRef="image012.jpg"/>
<o:File HRef="image013.jpg"/>
- <o:File HRef="image033.jpg"/>
+ <o:File HRef="image014.jpg"/>
<o:File HRef="image015.jpg"/>
- <o:File HRef="image034.jpg"/>
+ <o:File HRef="image016.jpg"/>
<o:File HRef="image017.jpg"/>
- <o:File HRef="image035.jpg"/>
+ <o:File HRef="image018.jpg"/>
<o:File HRef="image019.jpg"/>
- <o:File HRef="image036.jpg"/>
+ <o:File HRef="image020.jpg"/>
<o:File HRef="image021.jpg"/>
- <o:File HRef="image037.jpg"/>
+ <o:File HRef="image022.jpg"/>
<o:File HRef="image023.jpg"/>
- <o:File HRef="image038.jpg"/>
+ <o:File HRef="image024.jpg"/>
<o:File HRef="image025.jpg"/>
- <o:File HRef="image039.jpg"/>
+ <o:File HRef="image026.jpg"/>
<o:File HRef="filelist.xml"/>
</xml>
\ No newline at end of file
Modified: sandbox/msm/libs/msm/doc/index-Dateien/image016.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 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<ds:datastoreItem ds:itemID="{11CDBC9B-EE54-4B3C-A547-CC5B1D11CC22}" 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="{70D873F8-AE57-4CD9-9929-7DE5813E59B7}" 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 2010-01-05 17:38:27 EST (Tue, 05 Jan 2010)
@@ -23,15 +23,15 @@
<o:Author>Christophe</o:Author>
<o:Template>Normal</o:Template>
<o:LastAuthor>Christophe</o:LastAuthor>
- <o:Revision>296</o:Revision>
+ <o:Revision>297</o:Revision>
<o:Created>2009-09-03T20:17:00Z</o:Created>
- <o:LastSaved>2010-01-04T21:14:00Z</o:LastSaved>
- <o:Pages>40</o:Pages>
- <o:Words>19472</o:Words>
- <o:Characters>122677</o:Characters>
- <o:Lines>1022</o:Lines>
- <o:Paragraphs>283</o:Paragraphs>
- <o:CharactersWithSpaces>141866</o:CharactersWithSpaces>
+ <o:LastSaved>2010-01-05T22:37:00Z</o:LastSaved>
+ <o:Pages>42</o:Pages>
+ <o:Words>19495</o:Words>
+ <o:Characters>122823</o:Characters>
+ <o:Lines>1023</o:Lines>
+ <o:Paragraphs>284</o:Paragraphs>
+ <o:CharactersWithSpaces>142034</o:CharactersWithSpaces>
<o:Version>12.00</o:Version>
</o:DocumentProperties>
</xml><![endif]-->
@@ -41,6 +41,7 @@
<link rel=colorSchemeMapping href="index-Dateien/colorschememapping.xml">
<!--[if gte mso 9]><xml>
<w:WordDocument>
+ <w:Zoom>130</w:Zoom>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
@@ -394,8 +395,9 @@
panose-1:2 11 6 4 2 2 2 2 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
+ mso-font-format:other;
mso-font-pitch:variable;
- mso-font-signature:-536859905 -1073711037 9 0 511 0;}
+ mso-font-signature:3 0 0 0 1 0;}
@font-face
{font-family:Courier;
panose-1:2 7 4 9 2 2 5 2 4 4;
@@ -448,65 +450,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;
@@ -521,37 +531,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;
@@ -565,29 +580,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;
@@ -599,38 +618,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;
@@ -2563,6 +2587,38 @@
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
+@list l12:level2
+ {mso-level-tab-stop:72.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l12:level3
+ {mso-level-tab-stop:108.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l12:level4
+ {mso-level-tab-stop:144.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l12:level5
+ {mso-level-tab-stop:180.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l12:level6
+ {mso-level-tab-stop:216.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l12:level7
+ {mso-level-tab-stop:252.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l12:level8
+ {mso-level-tab-stop:288.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
+@list l12:level9
+ {mso-level-tab-stop:324.0pt;
+ mso-level-number-position:left;
+ text-indent:-18.0pt;}
@list l13
{mso-list-id:558129470;
mso-list-template-ids:-1638399218;}
@@ -4993,7 +5049,7 @@
<meta name=CHANGEDBY content=xtoff>
<meta name=CHANGEDBY content=xtoff>
<!--[if gte mso 9]><xml>
- <o:shapedefaults v:ext="edit" spidmax="47106"/>
+ <o:shapedefaults v:ext="edit" spidmax="48130"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
@@ -5517,17 +5573,16 @@
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>
@@ -5557,7 +5612,7 @@
mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image001.jpg" o:title="Transition"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=202 height=96
-src="index-Dateien/image027.jpg" alt=Transition.jpg v:shapes="Grafik_x0020_16"><![endif]></span><span
+src="index-Dateien/image002.jpg" alt=Transition.jpg v:shapes="Grafik_x0020_16"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
<p style='margin-bottom:12.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'>Where
@@ -5569,9 +5624,9 @@
(Action1(),Action2())<o:p></o:p></span></p>
<p style='margin-bottom:12.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'>UML
-designers are also used to write pseudo-code in the action methods, like ++counter.
-This is now also possible, along with most of the STL algorithms or container
-methods.<o:p></o:p></span></p>
+designers are also used to write pseudo-code in the action methods, like
+++counter. This is now also possible, along with most of the STL algorithms or
+container methods.<o:p></o:p></span></p>
<p style='margin-bottom:12.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'>To
achieve this, eUML also acts like a compile-time boost::phoenix adapted to the
@@ -5825,9 +5880,9 @@
<p style='margin-bottom:12.0pt'><span lang=EN-US style='mso-ansi-language:EN-US'><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>
+<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>
@@ -6389,8 +6444,8 @@
mso-ansi-language:EN-US'>Rows<o:p></o:p></span></h2>
<p><span lang=EN-US style='mso-ansi-language:EN-US'>Attentive readers will
-notice that the above syntax is actually not exactly the one described in the
-book which provides no guard and forces the definition of an action method.<o:p></o:p></span></p>
+notice that the above syntax is actually not exactly the one described in the book
+which provides no guard and forces the definition of an action method.<o:p></o:p></span></p>
<p><span lang=EN-US style='mso-ansi-language:EN-US'>Msm therefore defines
several types of rows, for all possible combinations of transitions with or
@@ -6560,23 +6615,22 @@
<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"
style='width:450pt;height:435.6pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image003.jpg" o:title="SimpleTutorial"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=600 height=581
-src="index-Dateien/image028.jpg" alt=SimpleTutorial.jpg v:shapes="Grafik_x0020_15"><![endif]></span><span
+src="index-Dateien/image004.jpg" alt=SimpleTutorial.jpg v:shapes="Grafik_x0020_15"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><br clear=left style='mso-special-character:
line-break'>
<o:p></o:p></span></p>
<p><span lang=EN-US style='mso-ansi-language:EN-US'>First we need to choose a
-frontend. We first take the “standard” frontend looking much like
-Msm v1.x. We need to define events, state machine and states, for example:<o:p></o:p></span></p>
+frontend. We first take the “standard” frontend looking much like Msm
+v1.x. We need to define events, state machine and states, for example:<o:p></o:p></span></p>
<p><code><span lang=EN-US style='font-size:10.0pt;color:blue;mso-ansi-language:
EN-US'>struct</span></code><code><span lang=EN-US style='font-size:10.0pt;
@@ -6774,8 +6828,8 @@
style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
<p style='margin-bottom:0cm;margin-bottom:.0001pt'><code><span lang=EN-US
-style='font-size:10.0pt;color:green;mso-ansi-language:EN-US'>// Replaces the default
-no-transition response.</span></code><span lang=EN-US style='mso-ansi-language:
+style='font-size:10.0pt;color:green;mso-ansi-language:EN-US'>// Replaces the
+default no-transition response.</span></code><span lang=EN-US style='mso-ansi-language:
EN-US'><o:p></o:p></span></p>
<p style='margin-bottom:0cm;margin-bottom:.0001pt'><span lang=EN-US
@@ -6838,8 +6892,8 @@
color:black;mso-ansi-language:EN-US'>states are now classes/structs</span></u></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'>so
-they can have data. The states get default-constructed at initialization time.</span></code><span
+font-family:"Times New Roman","serif";color:black;mso-ansi-language:EN-US'>so they
+can have data. The states get default-constructed at initialization time.</span></code><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
<p style='margin-top:5.0pt;margin-right:0cm;margin-bottom:0cm;margin-left:36.0pt;
@@ -6976,7 +7030,7 @@
style='width:462pt;height:620.4pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image005.jpg" o:title="CompositeTutorial"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=616 height=827
-src="index-Dateien/image029.jpg" alt=CompositeTutorial.jpg v:shapes="Grafik_x0020_14"><![endif]></span><span
+src="index-Dateien/image006.jpg" alt=CompositeTutorial.jpg v:shapes="Grafik_x0020_14"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><br clear=left style='mso-special-character:
line-break'>
<o:p></o:p></span></p>
@@ -7269,7 +7323,7 @@
style='width:486.6pt;height:604.2pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image007.jpg" o:title="Orthogonal-deferred"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=649 height=806
-src="index-Dateien/image030.jpg" alt=Orthogonal-deferred.jpg v:shapes="Bild_x0020_4"><![endif]></span><span
+src="index-Dateien/image008.jpg" alt=Orthogonal-deferred.jpg v:shapes="Bild_x0020_4"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><br clear=left style='mso-special-character:
line-break'>
<o:p></o:p></span></p>
@@ -7435,8 +7489,8 @@
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
+<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
submachine, its last active state would become active and this will continue
until an active state is a normal state.<o:p></o:p></span></p>
@@ -7448,7 +7502,7 @@
style='width:427.2pt;height:617.4pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image009.jpg" o:title="HistoryTutorial"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=570 height=823
-src="index-Dateien/image031.jpg" alt=HistoryTutorial.jpg v:shapes="Grafik_x0020_12"><![endif]></span><span
+src="index-Dateien/image010.jpg" alt=HistoryTutorial.jpg v:shapes="Grafik_x0020_12"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><br clear=left style='mso-special-character:
line-break'>
<o:p></o:p></span></p>
@@ -7536,8 +7590,8 @@
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>
+<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>
<p><span lang=EN-US style='mso-ansi-language:EN-US'>If you look into the
Boost.Statechart documentation you'll find some code like:<o:p></o:p></span></p>
@@ -7575,8 +7629,8 @@
style='color:blue'>Playing</span> * >() != 0 ) )<o:p></o:p></span></pre>
<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'>Or flag these 4 states as
-CDLoaded-able. You can do it like this:<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>Or flag these 4 states as CDLoaded-able.
+You can do it like this:<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'>typedef</span></code><code><span
@@ -7671,7 +7725,7 @@
height:655.2pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image011.jpg" o:title="FlagsTutorial"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=616 height=874
-src="index-Dateien/image032.jpg" alt=FlagsTutorial.jpg v:shapes="Grafik_x0020_11"><![endif]></span><span
+src="index-Dateien/image012.jpg" alt=FlagsTutorial.jpg v:shapes="Grafik_x0020_11"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><br clear=left style='mso-special-character:
line-break'>
<o:p></o:p></span></p>
@@ -7695,7 +7749,7 @@
height:331.8pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image013.jpg" o:title="Anonymous"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=444 height=442
-src="index-Dateien/image033.jpg" alt=Anonymous.jpg v:shapes="Grafik_x0020_13"><![endif]></span><span
+src="index-Dateien/image014.jpg" alt=Anonymous.jpg v:shapes="Grafik_x0020_13"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
<p style='page-break-before:always;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
@@ -7713,12 +7767,12 @@
<p style='page-break-before:always;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'>Another possible use would be a
-real-time system called at regular intervals and always doing the same thing, meaning
-implementing the same algorithm. The advantage is that once you know how long a
-transition takes to execute on the system, by calculating the longest path (the
-number of transitions from start to end), you can pretty much know how long
-your algorithm will take in the worst case, which in turns tells you how big of
-a time frame you are to request from a scheduler.<o:p></o:p></span></p>
+real-time system called at regular intervals and always doing the same thing,
+meaning implementing the same algorithm. The advantage is that once you know
+how long a transition takes to execute on the system, by calculating the
+longest path (the number of transitions from start to end), you can pretty much
+know how long your algorithm will take in the worst case, which in turns tells
+you how big of a time frame you are to request from a scheduler.<o:p></o:p></span></p>
<p style='page-break-before:always;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'>What is the cost of this feature? If
@@ -7760,8 +7814,8 @@
style='color:#030003'>State3</span><span style='mso-spacerun:yes'>
</span>, <span style='color:#030003'>none</span><span
style='mso-spacerun:yes'> </span>, <span
-style='color:#030003'>State4</span> <span
-style='mso-spacerun:yes'> </span>, <span style='color:#030003'>State3ToState4</span><span
+style='color:#030003'>State4</span><span style='mso-spacerun:yes'>
+</span>, <span style='color:#030003'>State3ToState4</span><span
style='mso-spacerun:yes'> </span>, <span
style='color:#030003'>always_true</span><span
style='mso-spacerun:yes'>
@@ -7796,30 +7850,31 @@
name="_Internal_transitions"></a><span lang=EN-US style='mso-fareast-font-family:
"Times New Roman";mso-ansi-language:EN-US'>Internal transitions<o:p></o:p></span></h3>
-<p class=MsoNormal style='margin-bottom:6.0pt'><a name="_The_many_ways"></a><span
-lang=EN-US style='mso-ansi-language:EN-US'>Internal transitions are transitions
-executing in the scope of the active state, being a simple state or a
-submachine. One can see them as a self-transition of this state, without an
-entry or exit action called.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'>Internal
-transitions are specified as having a higher priority than normal transitions.
-While it makes sense for a submachine with exit points, it is surprising for a
-simple state. MSM lets you define the transition priority by setting the
-transition’s position inside the transition table. Later on, a table for
-states is also a possibility.<o:p></o:p></span></p>
+<p class=MsoNormal style='margin-bottom:6.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'><a
+name="_The_many_ways"></a><span lang=EN-US style='mso-ansi-language:EN-US'>Internal
+transitions are transitions executing in the scope of the active state, being a
+simple state or a submachine. One can see them as a self-transition of this
+state, without an entry or exit action called.<o:p></o:p></span></p>
-<p class=MsoNormal style='margin-bottom:6.0pt'><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'>Internal transitions are specified
+as having a higher priority than normal transitions. While it makes sense for a
+submachine with exit points, it is surprising for a simple state. MSM lets you
+define the transition priority by setting the transition’s position
+inside the transition table. Later on, a table for states is also a
+possibility.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-bottom:6.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> </o:p></span></p>
-<p class=MsoNormal style='margin-bottom:6.0pt'><span lang=EN-US
-style='mso-ansi-language:EN-US'>To define internal transitions, use “</span><span
-lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>irow</span><span
-lang=EN-US style='mso-ansi-language:EN-US'>” instead of the standard
-rows. Internal rows come in different flavors:<o:p></o:p></span></p>
+<p class=MsoNormal style='margin-bottom:6.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'>To define internal transitions, use
+“</span><span lang=EN-US style='font-family:"Courier New";mso-ansi-language:
+EN-US'>irow</span><span lang=EN-US style='mso-ansi-language:EN-US'>”
+instead of the standard rows. Internal rows come in different flavors:<o:p></o:p></span></p>
<p class=MsoListParagraphCxSpFirst style='margin-bottom:6.0pt;mso-add-space:
-auto;text-indent:-18.0pt;mso-list:l12 level1 lfo49'><![if !supportLists]><span
+auto;text-indent:-18.0pt;mso-list:l12 level1 lfo17;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'>·<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
@@ -7827,7 +7882,7 @@
a transition action<o:p></o:p></span></p>
<p class=MsoListParagraphCxSpMiddle style='margin-bottom:6.0pt;mso-add-space:
-auto;text-indent:-18.0pt;mso-list:l12 level1 lfo49'><![if !supportLists]><span
+auto;text-indent:-18.0pt;mso-list:l12 level1 lfo17;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'>·<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
@@ -7835,23 +7890,23 @@
a guard condition<o:p></o:p></span></p>
<p class=MsoListParagraphCxSpLast style='margin-bottom:6.0pt;mso-add-space:
-auto;text-indent:-18.0pt;mso-list:l12 level1 lfo49'><![if !supportLists]><span
+auto;text-indent:-18.0pt;mso-list:l12 level1 lfo17;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'>·<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
lang=EN-US style='mso-ansi-language:EN-US'>irow: an internal transition with a
transition action and guard condition<o:p></o:p></span></p>
-<p class=MsoNormal style='margin-bottom:6.0pt'><span lang=EN-US
-style='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
+<p class=MsoNormal style='margin-bottom:6.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> </o:p></span></p>
-<p class=MsoNormal style='margin-bottom:6.0pt'><span lang=EN-US
-style='mso-ansi-language:EN-US'>The only syntactic difference with their row
-equivalent is the absence of a target state. For example,<o:p></o:p></span></p>
+<p class=MsoNormal style='margin-bottom:6.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'>The only syntactic difference with
+their row equivalent is the absence of a target state. For example,<o:p></o:p></span></p>
-<p class=MsoNormal style='margin-bottom:6.0pt'><span lang=EN-US
-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'>irow</span><span
+<p class=MsoNormal style='margin-bottom:6.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='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'>irow</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='color:#030003'>Empty</span><span style='mso-spacerun:yes'>
@@ -7860,8 +7915,8 @@
,&<span style='color:#030003'>p</span>::<span style='color:#030003'>internal_guard</span><span
style='mso-spacerun:yes'> </span>><o:p></o:p></span></p>
-<p class=MsoNormal style='margin-bottom:6.0pt'><span lang=EN-US
-style='mso-ansi-language:EN-US'>Is a transition internal to </span><span
+<p class=MsoNormal style='margin-bottom:6.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'>Is a transition internal to </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'>, triggered with the event </span><span
lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>cd_detected</span><span
@@ -7872,10 +7927,10 @@
lang=EN-US style='mso-ansi-language:EN-US'>. The action and guard signature is
the standard one.<o:p></o:p></span></p>
-<p class=MsoNormal style='margin-bottom:6.0pt'><span lang=EN-US
-style='mso-ansi-language:EN-US'>The functor front-end also allows internal
-transitions, but requires no new row type. Simply replacing the target state by
-“none” defines an internal transition.<o:p></o:p></span></p>
+<p class=MsoNormal style='margin-bottom:6.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'>The functor front-end also allows
+internal transitions, but requires no new row type. Simply replacing the target
+state by “none” defines an internal transition.<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'><span
lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
@@ -7891,10 +7946,10 @@
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
-composite state, as specified by UML:<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>Let us count the ways to enter a composite
+state, as specified by UML:<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo17;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo18;
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
@@ -7905,7 +7960,7 @@
as seen in the previous tutorials. The initial state in each orthogonal region
becomes active.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo17;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo18;
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
@@ -7914,7 +7969,7 @@
EN-US'>Shallow/Deep History entry</span></u><span lang=EN-US style='mso-ansi-language:
EN-US'>: See History tutorial.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo17;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo18;
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
@@ -7925,7 +7980,7 @@
active and like in the previous examples, its entry action is executed after
the entry action from the composite state.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo17;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo18;
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
@@ -7934,7 +7989,7 @@
EN-US'>Fork</span></u><span lang=EN-US style='mso-ansi-language:EN-US'>: an
explicit entry into more than one region.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo17;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo18;
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
@@ -7950,7 +8005,7 @@
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:l14 level1 lfo17;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l14 level1 lfo18;
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
@@ -7965,7 +8020,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'>Exiting is somehow easier:<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l8 level1 lfo18;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l8 level1 lfo19;
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
@@ -7974,7 +8029,7 @@
exit: a transition originating from the edge of a composite state to another
state<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l8 level1 lfo18;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l8 level1 lfo19;
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
@@ -7987,11 +8042,11 @@
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='mso-ansi-language:EN-US'>Msm (almost) fully supports these
-features. Almost because there is currently one limitation, that it is only
-possible to explicitly enter a sub- composite of the target composite and not
-exit it “upwards” this way. To exit, Msm just supports the two
-previously described methods.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>Msm (almost) fully supports these features.
+Almost because there is currently one limitation, that it is only possible to
+explicitly enter a sub- composite of the target composite and not exit it
+“upwards” this way. To exit, Msm just supports the two previously
+described methods.<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'>Sounds a bit complicated? Let us
@@ -8006,7 +8061,7 @@
height:574.8pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image015.jpg" o:title="entry tutorial"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=634 height=766
-src="index-Dateien/image034.jpg" alt="entry tutorial.jpg" v:shapes="Grafik_x0020_10"><![endif]></span><span
+src="index-Dateien/image016.jpg" alt="entry tutorial.jpg" v:shapes="Grafik_x0020_10"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><br clear=left style='mso-special-character:
line-break'>
<o:p></o:p></span></p>
@@ -8014,7 +8069,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'>We find in this diagram:<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo19;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo20;
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
@@ -8033,7 +8088,7 @@
"Courier New";mso-ansi-language:EN-US'>SubState1b</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:l1 level1 lfo19;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo20;
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
@@ -8052,7 +8107,7 @@
mso-ansi-language:EN-US'>SubState1b</span><span lang=EN-US style='mso-ansi-language:
EN-US'>, activated.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo19;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo20;
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
@@ -8071,7 +8126,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>. Both states become active so no
zone is default activated (if we had a third zone, it would be).<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo19;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo20;
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
@@ -8089,7 +8144,7 @@
style='font-family:"Courier New";mso-ansi-language:EN-US'>SubState1b</span><span
lang=EN-US style='mso-ansi-language:EN-US'> becomes active.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo19;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo20;
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
@@ -8297,8 +8352,8 @@
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'>With SubState2 defined
-as before and SubState2b defined as being in the second zone (Caution: Msm does
+lang=EN-US style='color:black;mso-ansi-language:EN-US'>With SubState2 defined as
+before and SubState2b defined as being in the second zone (Caution: Msm does
not check yet that the zone is correct):</span><span lang=EN-US
style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
@@ -8545,8 +8600,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'><u><span
lang=EN-US style='mso-ansi-language:EN-US'>Important note 1:</span></u><span
lang=EN-US style='mso-ansi-language:EN-US'> UML defines transiting to an entry
-pseudo state and having either no second transition or one with a guard as an error
-but defines no error handling. Msm will tolerate this behavior; the entry
+pseudo state and having either no second transition or one with a guard as an
+error but defines no error handling. Msm will tolerate this behavior; the entry
pseudo state will simply be the newly active state.<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
@@ -8633,16 +8688,16 @@
"Times New Roman";mso-ansi-language:EN-US'>Conflicting Transitions<o:p></o:p></span></h3>
<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>
+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>
<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,
both supported by Msm:<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l43 level1 lfo20;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l43 level1 lfo21;
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
@@ -8651,7 +8706,7 @@
a given source state, several transitions have been defined, triggered by the
same event but <u>different guards</u>.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l43 level1 lfo20;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l43 level1 lfo21;
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
@@ -8796,13 +8851,13 @@
action/exit action get the state machine passed as argument.<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'>All of the states defined in the
-state machine are created upon state machine construction. This has the huge
+lang=EN-US style='mso-ansi-language:EN-US'>All of the states defined in the state
+machine are created upon state machine construction. This has the huge
advantage of a reduced syntactic noise. The cost is a small loss of control of
the user on the state creation and access. Quite fast came from the beta
testers the request of a way for a state to get access to its containing state
-machine. This is implemented via another policy. Basically, a state needs to change
-its declaration to:<o:p></o:p></span></p>
+machine. This is implemented via another policy. Basically, a state needs to
+change its declaration to:<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'><code><i
style='mso-bidi-font-style:normal'><span lang=EN-US style='font-size:10.0pt;
@@ -8910,8 +8965,8 @@
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'>Depending on your
-personal taste.</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'>Depending on your personal
+taste.</span><span lang=EN-US style='mso-ansi-language:EN-US'><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="_Copying"></a><a name="_Exceptions"></a><code><span lang=EN-US
@@ -8928,9 +8983,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'><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
+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
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>
@@ -8970,7 +9025,7 @@
also provides a few helper methods which you might need but will probably not:</span></code><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:l44 level1 lfo21;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo22;
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
@@ -9000,7 +9055,7 @@
color:black;mso-ansi-language:EN-US'>: the ids of currently active states</span></code><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:l44 level1 lfo21;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo22;
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
@@ -9030,7 +9085,7 @@
pointer to a (user- or default-) base state. It executes in O(number of
states).</span></code><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:l44 level1 lfo21;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l44 level1 lfo22;
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
@@ -9076,7 +9131,7 @@
doing 5 different jobs:</span></code><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:l19 level1 lfo22;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l19 level1 lfo23;
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
@@ -9086,7 +9141,7 @@
color:black;mso-ansi-language:EN-US'>checking for terminate/interrupt states</span></code><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:l19 level1 lfo22;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l19 level1 lfo23;
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
@@ -9097,7 +9152,7 @@
entry/exit/transition actions generating themselves events)</span></code><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:l19 level1 lfo22;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l19 level1 lfo23;
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
@@ -9107,7 +9162,7 @@
color:black;mso-ansi-language:EN-US'>handling deferred events</span></code><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:l19 level1 lfo22;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l19 level1 lfo23;
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
@@ -9117,7 +9172,7 @@
color:black;mso-ansi-language:EN-US'>catching exceptions</span></code><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:l19 level1 lfo22;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l19 level1 lfo23;
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
@@ -9215,9 +9270,9 @@
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
-45ns with a full state machine, 10ns in the minimal case.</span></code><span
+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 45ns
+with a full state machine, 10ns in the minimal case.</span></code><span
lang=EN-US style='mso-ansi-language:EN-US'><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
@@ -9230,7 +9285,7 @@
independent from back-ends and have therefore no such function. There are 3
possible ways to do it:<o:p></o:p></span></p>
-<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l6 level1 lfo23;
+<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l6 level1 lfo24;
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'>·<span
@@ -9249,17 +9304,17 @@
style='mso-spacerun:yes'>
</span>typedef msm::back::state_machine<player_ > player;<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l6 level1 lfo23;
+<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l6 level1 lfo24;
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'>·<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
lang=EN-US style='mso-ansi-language:EN-US'>Use a functor “<a
-href="#_Functor_rows">Row</a>” transition. These rows offer an FSM
-template argument. This argument is the concrete (back-end) state machine on
-which process_event can be called.<o:p></o:p></span></p>
+href="#_Functor_rows">Row</a>” transition. These rows offer an FSM template
+argument. This argument is the concrete (back-end) state machine on which
+process_event can be called.<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l6 level1 lfo23;
+<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l6 level1 lfo24;
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'>·<span
@@ -9320,8 +9375,8 @@
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<player_ > player;<o:p></o:p></span></p>
+lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>typedef msm::back::state_machine<player_
+> 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
@@ -9349,8 +9404,8 @@
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>
+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:
@@ -9373,7 +9428,7 @@
allowing the base state to be user-defined. To do this, you need two simple
changes:<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l33 level1 lfo24;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l33 level1 lfo25;
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
@@ -9412,16 +9467,16 @@
12.0pt;mso-bidi-font-size:12.0pt;color:black;mso-ansi-language:EN-US'>my_base_state</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'>is
-your new base state. If it has a virtual function, your states become
-polymorphic. Msm also provides a default polymorphic base type for your
-convenience, </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::polymorphic_</span></code><code><span
+font-family:"Times New Roman","serif";color:black;mso-ansi-language:EN-US'>is your
+new base state. If it has a virtual function, your states become polymorphic.
+Msm also provides a default polymorphic base type for your convenience, </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::polymorphic_</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</span></code><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:l33 level1 lfo24;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l33 level1 lfo25;
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
@@ -9882,7 +9937,7 @@
<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'>These types have some disadvantages:<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l21 level1 lfo25;
+<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l21 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
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'>·<span
@@ -9890,14 +9945,14 @@
lang=EN-US style='mso-ansi-language:EN-US'>They are more typing and information
than we would wish. This means syntactic noise.<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l21 level1 lfo25;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l21 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
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'>·<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
lang=EN-US style='mso-ansi-language:EN-US'>Function pointers are weird in C++.<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l21 level1 lfo25;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l21 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
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'>·<span
@@ -9906,7 +9961,7 @@
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:l21 level1 lfo25;
+<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l21 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
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'>·<span
@@ -9974,10 +10029,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'>
-</span><span
-style='mso-spacerun:yes'> </span>,<span
-style='color:#030003'>DummyGuard</span><span
+style='mso-spacerun:yes'>
+</span>,<span style='color:#030003'>DummyGuard</span><span
style='mso-spacerun:yes'>
</span>>,<o:p></o:p></span></p>
@@ -10027,8 +10080,9 @@
style='mso-spacerun:yes'> </span>< <span style='color:#030003'>Open</span><span
style='mso-spacerun:yes'> </span>, <span style='color:#030003'>open_close</span><span
style='mso-spacerun:yes'> </span>, <span style='color:#030003'>Empty</span><span
-style='mso-spacerun:yes'> </span>, <span style='color:#030003'>close_drawer</span><span
-style='mso-spacerun:yes'> </span>, <span
+style='mso-spacerun:yes'> </span>, <span style='color:#030003'>close_drawer</span>
+<span
+style='mso-spacerun:yes'> </span>, <span
style='color:#030003'>none</span><span
style='mso-spacerun:yes'>
</span>>,<o:p></o:p></span></p>
@@ -10094,7 +10148,7 @@
<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'>In a nutshell, what is all this?<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l15 level1 lfo26;
+<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l15 level1 lfo27;
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'>·<span
@@ -10104,7 +10158,7 @@
href="#_Anonymous_transitions">anonymous transitions</a>) is needed, write
“none”.<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l15 level1 lfo26;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l15 level1 lfo27;
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'>·<span
@@ -10112,16 +10166,16 @@
lang=EN-US style='mso-ansi-language:EN-US'>You can mix new rows with the old
g_row, a_row, etc.<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l15 level1 lfo26;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l15 level1 lfo27;
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'>·<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
-lang=EN-US style='mso-ansi-language:EN-US'>“Row” 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'>“Row” 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:l15 level1 lfo26;
+<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l15 level1 lfo27;
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'>·<span
@@ -10209,9 +10263,8 @@
"Times New Roman";mso-ansi-language:EN-US;mso-no-proof:yes'><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'>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
@@ -10311,11 +10364,11 @@
actions, guards, flags, attributes, deferred events, initial 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='color:black;mso-ansi-language:EN-US'>It also relies on Boost.Typeof
-as a wrapper around the new decltype C++0x feature to provide a compile-time
-evaluation of all the grammars. Unfortunately, all the underlying Boost
-libraries are not Typeof-enabled, so for the moment, you will need a compiler
-where Typeof is natively implemented (like VC8-9-10, g++ >= 4.3)<o:p></o:p></span></p>
+lang=EN-US style='color:black;mso-ansi-language:EN-US'>It also relies on
+Boost.Typeof as a wrapper around the new decltype C++0x feature to provide a
+compile-time evaluation of all the grammars. Unfortunately, all the underlying
+Boost libraries are not Typeof-enabled, so for the moment, you will need a
+compiler where Typeof is natively implemented (like VC8-9-10, g++ >= 4.3)<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'>To play with grammars,
@@ -10323,7 +10376,7 @@
actors (states, events, actions) of state machines proto terminals:<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:l42 level1 lfo27;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l42 level1 lfo28;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='mso-fareast-font-family:"Times New Roman";color:black;
mso-ansi-language:EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -10336,7 +10389,7 @@
mso-ansi-language:EN-US'> function (described later)<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:l42 level1 lfo27;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l42 level1 lfo28;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='mso-fareast-font-family:"Times New Roman";color:black;
mso-ansi-language:EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -10346,7 +10399,7 @@
lang=EN-US style='color:black;mso-ansi-language:EN-US'><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:l42 level1 lfo27;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l42 level1 lfo28;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='mso-fareast-font-family:"Times New Roman";color:black;
mso-ansi-language:EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -10356,7 +10409,7 @@
lang=EN-US style='color:black;mso-ansi-language:EN-US'><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:l42 level1 lfo27;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l42 level1 lfo28;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='mso-fareast-font-family:"Times New Roman";color:black;
mso-ansi-language:EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -10366,8 +10419,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
@@ -10416,11 +10469,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'> </span><span
-style='mso-spacerun:yes'> </span><span style='color:#030003'>Stopped</span>()
-+ <span style='color:#030003'>play</span>()<span
-style='mso-spacerun:yes'> </span><span
-style='mso-spacerun:yes'> </span>[DummyGuard()] /
+style='mso-spacerun:yes'> </span><span
+style='color:#030003'>Stopped</span>() + <span style='color:#030003'>play</span>()<span
+style='mso-spacerun:yes'> </span>[DummyGuard()] /
(TestFct(),<span style='color:#030003'>start_playback</span>())<span
style='mso-tab-count:1'> </span>== <span style='color:#030003'>Playing</span>()<span
style='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span>,<o:p></o:p></span></p>
@@ -10432,7 +10483,7 @@
style='mso-spacerun:yes'> </span><span
style='color:#030003'>Stopped</span>() + <span style='color:#030003'>open_close</span>()/
<span style='color:#030003'>open_drawer</span>() <span style='mso-tab-count:
-1'> </span><span style='mso-tab-count:2'> </span><span
+3'> </span><span
style='mso-tab-count:1'> </span>== <span
style='color:#030003'>Open</span>()<span
style='mso-spacerun:yes'> </span><span
@@ -10467,8 +10518,8 @@
<span style='color:#030003'>close_drawer</span>() <span style='mso-tab-count:
3'> </span><span
style='mso-tab-count:1'> </span>== <span
-style='color:#030003'>Empty</span>()<span
-style='mso-spacerun:yes'> </span><span style='mso-tab-count:
+style='color:#030003'>Empty</span>() <span
+style='mso-spacerun:yes'> </span><span style='mso-tab-count:
1'> </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;
@@ -10508,8 +10559,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'> </span><span
-style='color:green'>//<span style='mso-spacerun:yes'> </span>+------------------------------------------------------------------------------+<o:p></o:p></span></span></p>
+style='mso-spacerun:yes'> </span><span
+style='mso-spacerun:yes'> </span><span style='color:green'>//<span
+style='mso-spacerun:yes'>
+</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
@@ -10555,13 +10608,11 @@
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'> </span><span
-style='mso-spacerun:yes'> </span><span style='color:#030003'>Playing</span>()
-== <span style='color:#030003'>Stopped</span>() + <span style='color:#030003'>play</span>()<span
-style='mso-spacerun:yes'> </span><span
-style='mso-spacerun:yes'> </span><span
-style='mso-spacerun:yes'> </span>[DummyGuard()] / (TestFct(),<span
-style='color:#030003'>start_playback</span>())<span
+style='mso-spacerun:yes'> </span><span
+style='color:#030003'>Playing</span>() == <span style='color:#030003'>Stopped</span>()
++ <span style='color:#030003'>play</span>()<span
+style='mso-spacerun:yes'>
+</span>[DummyGuard()] / (TestFct(),<span style='color:#030003'>start_playback</span>())<span
style='mso-spacerun:yes'> </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;
@@ -10572,7 +10623,7 @@
style='color:#030003'>Open</span>()<span
style='mso-spacerun:yes'> </span>== <span style='color:#030003'>Stopped</span>()
+ <span style='color:#030003'>open_close</span>() /<span style='color:#030003'>open_drawer</span>()
-<span style='mso-tab-count:1'> </span><span style='mso-tab-count:2'> </span><span
+<span style='mso-tab-count:3'> </span><span
style='mso-tab-count:1'> </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;
@@ -10611,8 +10662,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'> </span><span
-style='color:green'>//<span style='mso-spacerun:yes'>
-</span>+------------------------------------------------------------------------------+<o:p></o:p></span></span></p>
+style='color:green'>//<span style='mso-spacerun:yes'> </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
@@ -10641,7 +10691,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'> </span><span
-style='color:green'>//<span style='mso-spacerun:yes'> </span>+------------------------------------------------------------------------------+<o:p></o:p></span></span></p>
+style='color:green'>//<span style='mso-spacerun:yes'>
+</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
@@ -10792,8 +10843,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>
@@ -10830,8 +10881,8 @@
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'>This means that Empty is defined as
-a state with an entry action made of two sub-actions, </span><span lang=EN-US
+lang=EN-US style='mso-ansi-language:EN-US'>This means that Empty is defined as a
+state with an entry action made of two sub-actions, </span><span lang=EN-US
style='font-family:"Courier New";mso-ansi-language:EN-US'>Empty_Entry</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'>Dummy_Entry </span><span
@@ -10924,9 +10975,9 @@
“/” symbol).<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 state functors have a slightly
-different signature as there is no source and target state but only a current
-state (entry/exit actions are transition-independent), for example:<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>The state functors have a slightly different
+signature as there is no source and target state but only a current state
+(entry/exit actions are transition-independent), for example:<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> </o:p></span></p>
@@ -10996,8 +11047,8 @@
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'>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";
@@ -11075,9 +11126,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='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";
+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";
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>
@@ -11627,10 +11678,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:
@@ -11702,7 +11753,7 @@
“Empty” containing 3 attributes:<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:l32 level1 lfo28;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l32 level1 lfo29;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'>·<span
@@ -11710,7 +11761,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>An int, at index 0<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:l32 level1 lfo28;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l32 level1 lfo29;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'>·<span
@@ -11718,7 +11769,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>A std::map<int,int> at index 1<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:l32 level1 lfo28;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l32 level1 lfo29;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'>·<span
@@ -11819,11 +11870,11 @@
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'>We can now reference these
-attributes in our grammar. To this aim, eUML provides several functors:<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>We can now reference these attributes
+in our grammar. To this aim, eUML provides several functors:<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:l40 level1 lfo29;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l40 level1 lfo30;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'>·<span
@@ -11846,7 +11897,7 @@
lang=EN-US style='mso-ansi-language:EN-US'><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:l40 level1 lfo29;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l40 level1 lfo30;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'>·<span
@@ -11861,7 +11912,7 @@
state. </span><span lang=EN-US style='mso-ansi-language:EN-US'><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:l40 level1 lfo29;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l40 level1 lfo30;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'>·<span
@@ -11876,7 +11927,7 @@
state. </span><span lang=EN-US style='mso-ansi-language:EN-US'><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:l40 level1 lfo29;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l40 level1 lfo30;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'>·<span
@@ -11894,7 +11945,7 @@
mso-no-proof:yes'>.</span><span lang=EN-US style='mso-ansi-language:EN-US'><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:l40 level1 lfo29;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l40 level1 lfo30;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'>·<span
@@ -11909,7 +11960,7 @@
style='mso-ansi-language:EN-US'><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:l40 level1 lfo29;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l40 level1 lfo30;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'>·<span
@@ -11930,7 +11981,7 @@
EN-US;mso-no-proof:yes'>EUML also provides the same functionality as functions,
to make the whole thing more “functional”:<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l11 level1 lfo30;
+<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l11 level1 lfo31;
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'>·<span
@@ -11941,7 +11992,7 @@
action (entry or exit)</b>, returns per reference the current state.</span><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo30;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo31;
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'>·<span
@@ -11953,7 +12004,7 @@
normal'>transition</b> action/guard, returns per reference, the transition
source state.</span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo30;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo31;
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'>·<span
@@ -11965,7 +12016,7 @@
normal'>transition</b> action/guard, returns per reference, the transition
target state.</span><span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo30;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo31;
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'>·<span
@@ -11979,7 +12030,7 @@
reference, the current event.</span><span lang=EN-US style='mso-ansi-language:
EN-US'><o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo30;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo31;
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'>·<span
@@ -11993,7 +12044,7 @@
reference, the current state machine.</span><span lang=EN-US style='mso-ansi-language:
EN-US'><o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo30;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l11 level1 lfo31;
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'>·<span
@@ -12008,7 +12059,7 @@
state machine or of the one passed as 2<sup>nd</sup> parameter.</span><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l11 level1 lfo30;
+<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l11 level1 lfo31;
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'>·<span
@@ -12121,10 +12172,12 @@
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'>
-</span><span style='color:#030003'>configure_</span><< <span
-style='color:#030003'>PlayingPaused</span>() << <span style='color:#030003'>CDLoaded</span>()
-)) <span style='color:#030003'>Paused</span>;<o:p></o:p></span></p>
+style='mso-spacerun:yes'>
+</span><span
+style='mso-spacerun:yes'> </span><span
+style='color:#030003'>configure_</span><< <span style='color:#030003'>PlayingPaused</span>()
+<< <span style='color:#030003'>CDLoaded</span>() )) <span
+style='color:#030003'>Paused</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'><o:p> </o:p></span></p>
@@ -12196,9 +12249,9 @@
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 way, nobody needs to know
-metaprogramming techniques to define a state machine. Under the hood, what you
-get really is mpl::vector2.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>This way, nobody needs to know metaprogramming
+techniques to define a state machine. Under the hood, what you get really is
+mpl::vector2.<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> </o:p></span></p>
@@ -12229,9 +12282,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> </o:p></span></p>
@@ -12317,8 +12369,7 @@
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'> </span><span
-style='mso-spacerun:yes'> </span><span style='color:blue'>template</span>
+style='mso-spacerun:yes'> </span><span style='color:blue'>template</span>
<<span style='color:blue'>class</span> <span style='color:#030003'>Event</span>,<span
style='color:blue'>class</span> <span style='color:#030003'>FSM</span>><o:p></o:p></span></p>
@@ -12443,7 +12494,7 @@
operators at our disposal:<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:l17 level1 lfo31;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l17 level1 lfo32;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'>·<span
@@ -12451,7 +12502,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>And<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:l17 level1 lfo31;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l17 level1 lfo32;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'>·<span
@@ -12459,7 +12510,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>Or<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:l17 level1 lfo31;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l17 level1 lfo32;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'>·<span
@@ -12467,7 +12518,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>Not<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:l17 level1 lfo31;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l17 level1 lfo32;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'>·<span
@@ -12480,7 +12531,7 @@
of C++ operators at our disposal:<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:l9 level1 lfo32;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l9 level1 lfo33;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'>·<span
@@ -12488,7 +12539,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>Pre/post increment/decrement<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:l9 level1 lfo32;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l9 level1 lfo33;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'>·<span
@@ -12496,7 +12547,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>+, -, *, /, %, bitwise (&,|,^)<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:l9 level1 lfo32;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l9 level1 lfo33;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'>·<span
@@ -12505,7 +12556,7 @@
vector and map)<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:l9 level1 lfo32;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l9 level1 lfo33;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'>·<span
@@ -12514,7 +12565,7 @@
<<=, >>=<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:l9 level1 lfo32;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l9 level1 lfo33;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'>·<span
@@ -12522,7 +12573,7 @@
lang=EN-US style='mso-ansi-language:EN-US'><<, >><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:l9 level1 lfo32;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l9 level1 lfo33;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'>·<span
@@ -12538,8 +12589,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 <
-msm/front/euml/operator.hpp><o:p></o:p></span></p>
+"Times New Roman";color:black;mso-ansi-language:EN'>#include < msm/front/euml/operator.hpp><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
@@ -12555,7 +12605,7 @@
syntax:<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:l46 level1 lfo33;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l46 level1 lfo34;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'>·<span
@@ -12565,17 +12615,17 @@
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:l46 level1 lfo33;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l46 level1 lfo34;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'>·<span
style='font:7.0pt "Times New Roman"'> </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:l46 level1 lfo33;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l46 level1 lfo34;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'>·<span
@@ -12585,7 +12635,7 @@
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:l46 level1 lfo33;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l46 level1 lfo34;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'>·<span
@@ -12596,7 +12646,7 @@
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:l46 level1 lfo33;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l46 level1 lfo34;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'>·<span
@@ -12614,7 +12664,7 @@
Msm state machine functionality:<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:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo35;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'>·<span
@@ -12629,7 +12679,7 @@
events to several external machines.<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:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo35;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'>·<span
@@ -12643,7 +12693,7 @@
5<sup>th</sup> argument.<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:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo35;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'>·<span
@@ -12656,7 +12706,7 @@
the one passed as 2<sup>nd</sup> argument.<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:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo35;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'>·<span
@@ -12674,7 +12724,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>Basic types are also provided:<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:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo35;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'>·<span
@@ -12686,7 +12736,7 @@
grammars. <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:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo35;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'>·<span
@@ -12695,7 +12745,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>: Wrapper around size_t<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:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo35;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'>·<span
@@ -12704,21 +12754,22 @@
lang=EN-US style='mso-ansi-language:EN-US'>: Wrapper around char<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:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo35;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'>·<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>String_<mpl::string></span><span
lang=EN-US style='mso-ansi-language:EN-US'>: Wrapper around std::string. Needs
-Boost >= 1.40. You can then define a string in an action, for example String_<mpl::string<’Hell’,’o
+Boost >= 1.40. You can then define a string in an action, for example
+String_<mpl::string<’Hell’,’o
wo’,’rld’> >(). 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>
<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:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l3 level1 lfo35;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'>·<span
@@ -12737,7 +12788,7 @@
and that you respect the 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:l48 level1 lfo35;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l48 level1 lfo36;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'>·<span
@@ -12746,7 +12797,7 @@
return a bool.<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:l48 level1 lfo35;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l48 level1 lfo36;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'>·<span
@@ -12759,7 +12810,7 @@
all this:<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:l28 level1 lfo36;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l28 level1 lfo37;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'>·<span
@@ -12773,7 +12824,7 @@
is DISK_CD</span><span lang=EN-US style='mso-ansi-language:EN-US'><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:l28 level1 lfo36;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l28 level1 lfo37;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'>·<span
@@ -12787,23 +12838,23 @@
EN-US'><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:l28 level1 lfo36;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l28 level1 lfo37;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'>·<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><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'>[(if_then_else_( True_(),Guard1(),Guard2()))]
-</span><span lang=EN-US style='mso-fareast-font-family:"Times New Roman";
-mso-ansi-language:EN-US;mso-no-proof:yes'>is a guard returning the result of
-calling </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'>Guard1</span><span
-lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
-EN-US;mso-no-proof:yes'> (True_ will, well, return true).</span><span
-lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
+"Times New Roman";mso-ansi-language:EN-US;mso-no-proof:yes'>[(if_then_else_(
+True_(),Guard1(),Guard2()))] </span><span lang=EN-US style='mso-fareast-font-family:
+"Times New Roman";mso-ansi-language:EN-US;mso-no-proof:yes'>is a guard
+returning the result of calling </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'>Guard1</span><span lang=EN-US style='mso-fareast-font-family:
+"Times New Roman";mso-ansi-language:EN-US;mso-no-proof:yes'> (True_ will, well,
+return true).</span><span lang=EN-US style='mso-ansi-language:EN-US'><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:l28 level1 lfo36;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l28 level1 lfo37;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'>·<span
@@ -12822,7 +12873,7 @@
mso-no-proof:yes'>.</span><span lang=EN-US style='mso-ansi-language:EN-US'><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:l28 level1 lfo36;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l28 level1 lfo37;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-size:10.0pt;font-family:Symbol;mso-fareast-font-family:
Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:EN-US'><span
@@ -13196,8 +13247,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'>Calls lazily --Action1
- / Action1--.<o:p></o:p></span></p>
+ mso-yfti-cnfc:64'><span lang=EN style='mso-ansi-language:EN'>Calls lazily
+ --Action1 / Action1--.<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;
@@ -13637,7 +13688,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'>Action1() [Action2()]<o:p></o:p></span></p>
+ mso-yfti-cnfc:64'><span lang=EN style='mso-ansi-language:EN'>Action1()
+ [Action2()]<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:solid #4F81BD 1.0pt;
mso-border-themecolor:accent1;border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -13793,7 +13845,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 class=MsoNormal style='mso-yfti-cnfc:64'><span lang=EN style='mso-fareast-font-family:
- "Times New Roman";mso-ansi-language:EN'>[Source_<0>() == Event_<1>()]<o:p></o:p></span></p>
+ "Times New Roman";mso-ansi-language:EN'>[Source_<0>() ==
+ Event_<1>()]<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:solid #4F81BD 1.0pt;
mso-border-themecolor:accent1;border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -13809,8 +13862,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";
@@ -13832,8 +13885,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 some_int
- attribute of the target state from the currently triggered transition.<o:p></o:p></span></p>
+ mso-yfti-cnfc:64'><span lang=EN style='mso-ansi-language:EN'>Returns the
+ some_int attribute of the target state from the currently triggered
+ 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;
@@ -13902,8 +13956,9 @@
</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 machine (valid inside an entry/exit state action or a transition).<o:p></o:p></span></p>
+ lang=EN style='mso-ansi-language:EN'>Returns the some_int attribute of the
+ current state machine (valid inside an entry/exit state action or a
+ 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";
@@ -13925,8 +13980,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;
@@ -14019,8 +14074,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;
@@ -14241,9 +14296,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;
@@ -14251,8 +14306,8 @@
<p class=MsoNormal style='mso-yfti-cnfc:64'><span lang=EN style='mso-fareast-font-family:
"Times New Roman";mso-ansi-language:EN'>++attribute_(fsm_(),Int_<0>())<o:p></o:p></span></p>
<p class=MsoNormal style='mso-yfti-cnfc:64'><span lang=EN style='mso-fareast-font-family:
- "Times New Roman";mso-ansi-language:EN'>Preincrements the first attribute of the
- current state machine<o:p></o:p></span></p>
+ "Times New Roman";mso-ansi-language:EN'>Preincrements the first attribute of
+ the current state machine<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:solid #4F81BD 1.0pt;
mso-border-themecolor:accent1;border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -14554,12 +14609,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() && 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() && 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
@@ -14584,7 +14639,7 @@
programming paradigm, for example:<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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -14592,7 +14647,7 @@
end_(container): returns iterators of a container.<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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -14600,7 +14655,7 @@
returns container.empty()<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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -14608,7 +14663,7 @@
container.clear()<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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -14619,12 +14674,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'>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 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>
+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
+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>
<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 file structure of this
@@ -14689,8 +14744,8 @@
lang=EN style='mso-ansi-language:EN'><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 style='mso-ansi-language:EN'>Or one can simply include the whole STL
-support (you will also need to include euml.hpp):<o:p></o:p></span></p>
+lang=EN style='mso-ansi-language:EN'>Or one can simply include the whole STL support
+(you will also need to include euml.hpp):<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
@@ -15826,8 +15881,8 @@
</td>
<td width=437 valign=top style='width:262.25pt;border:none;border-bottom:
solid #4F81BD 1.0pt;mso-border-bottom-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
- <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>rotate_(first, middle,
- last)ᵇ<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>rotate_(first,
+ middle, last)ᵇ<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border-top:none;border-left:
none;border-bottom:solid #4F81BD 1.0pt;mso-border-bottom-themecolor:accent1;
@@ -16578,8 +16633,8 @@
EN'>void erase(pos)<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>void associative_erase_(
- container , pos)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>void
+ associative_erase_( container , pos)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -16831,8 +16886,8 @@
EN'>int compare(string)<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>int string_compare_(container,
- another_string)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>int
+ string_compare_(container, another_string)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -16902,8 +16957,8 @@
EN'>string& append(const string&)<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>string& append_(container,
- another_string)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>string&
+ append_(container, another_string)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -17286,8 +17341,8 @@
<td width=437 valign=top style='width:261.95pt;border:solid #4F81BD 1.0pt;
mso-border-themecolor:accent1;border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal style='mso-yfti-cnfc:68'><b><span lang=EN
- style='mso-ansi-language:EN'>string& replace(iterator first, iterator
- last, const charT*, size_type n)<o:p></o:p></span></b></p>
+ style='mso-ansi-language:EN'>string& replace(iterator first, iterator last,
+ const charT*, size_type n)<o:p></o:p></span></b></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;
@@ -17308,8 +17363,8 @@
EN'>string& replace(iterator first, iterator last, const charT*)<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>string& string_replace_(container,
- first, last, another_string)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>string&
+ string_replace_(container, first, last, another_string)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -17343,8 +17398,8 @@
l)<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>string&
- string_replace_(container, first, last, f, l)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>string& string_replace_(container,
+ first, last, f, l)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -17376,7 +17431,8 @@
EN'>const charT* data()<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>const charT* string_data_(container)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>const charT*
+ string_data_(container)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -17387,8 +17443,8 @@
<td width=437 valign=top style='width:261.95pt;border:solid #4F81BD 1.0pt;
mso-border-themecolor:accent1;border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal style='mso-yfti-cnfc:68'><b><span lang=EN
- style='mso-ansi-language:EN'>size_type copy(charT* buf, size_type n,
- size_type pos = 0)<o:p></o:p></span></b></p>
+ style='mso-ansi-language:EN'>size_type copy(charT* buf, size_type n, size_type
+ pos = 0)<o:p></o:p></span></b></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;
@@ -17448,8 +17504,8 @@
<td width=437 valign=top style='width:262.25pt;border:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type
string_find_(container, s, pos)<o:p></o:p></span></p>
- <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type
- string_find_(container, s)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type string_find_(container,
+ s)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -17483,8 +17539,8 @@
EN'>size_type rfind(charT* s, size_type pos, size_type n)<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>size_type
- string_rfind_(container, s, pos, n)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type string_rfind_(container,
+ s, pos, n)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -17591,8 +17647,8 @@
EN'>size_type find_first_of (const string& s, size_type pos=0)<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>size_type find_first_of_(container,
- s, pos)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type
+ find_first_of_(container, s, pos)<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type
find_first_of_(container, s)<o:p></o:p></span></p>
</td>
@@ -17605,8 +17661,7 @@
<td width=437 valign=top style='width:261.95pt;border:solid #4F81BD 1.0pt;
mso-border-themecolor:accent1;border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal style='mso-yfti-cnfc:68'><b><span lang=EN
- style='mso-ansi-language:EN'>size_type find_first_of (charT c, size_type
- pos=0)<o:p></o:p></span></b></p>
+ style='mso-ansi-language:EN'>size_type find_first_of (charT c, size_type pos=0)<o:p></o:p></span></b></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;
@@ -17665,8 +17720,8 @@
EN'>size_type find_first_not_of (const string& s, size_type pos=0)<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>size_type
- find_first_not_of_(container, s, pos)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type find_first_not_of_(container,
+ s, pos)<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type
find_first_not_of_(container, s)<o:p></o:p></span></p>
</td>
@@ -17703,8 +17758,8 @@
EN'>size_type find_last_of(charT* s, size_type pos, size_type n)<o:p></o:p></span></b></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 style='mso-ansi-language:EN'>size_type find_last_of_(container,
- s, pos, n)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type
+ find_last_of_(container, s, pos, n)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -17789,7 +17844,8 @@
<td width=437 valign=top style='width:261.95pt;border:solid #4F81BD 1.0pt;
mso-border-themecolor:accent1;border-right:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal style='mso-yfti-cnfc:68'><b><span lang=EN
- style='mso-ansi-language:EN'>size_type find_last_not_of (charT* s, size_type pos=npos)<o:p></o:p></span></b></p>
+ style='mso-ansi-language:EN'>size_type find_last_not_of (charT* s, size_type
+ pos=npos)<o:p></o:p></span></b></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;
@@ -17814,8 +17870,8 @@
<td width=437 valign=top style='width:262.25pt;border:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type
find_last_not_of_(container, s, pos)<o:p></o:p></span></p>
- <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type find_last_not_of_(container,
- s)<o:p></o:p></span></p>
+ <p class=MsoNormal><span lang=EN style='mso-ansi-language:EN'>size_type
+ find_last_not_of_(container, s)<o:p></o:p></span></p>
</td>
<td width=248 valign=top style='width:148.85pt;border:none;border-right:solid #4F81BD 1.0pt;
mso-border-right-themecolor:accent1;padding:0cm 5.4pt 0cm 5.4pt'>
@@ -17883,13 +17939,13 @@
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'>EUML provides two macros (sorry
-about that) to convert a function or method into a eUML-compatible functor for
-use in action / guard declarations.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>EUML provides two macros (sorry about
+that) to convert a function or method into a eUML-compatible functor for use in
+action / guard declarations.<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'>Let’s suppose we wrote a function
-printing the typeid of its parameter:<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>Let’s suppose we wrote a
+function printing the typeid of its parameter:<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
@@ -18011,13 +18067,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'>
-</span><span style='mso-spacerun:yes'> </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> << <span style='color:#A31515'>"foo(int):"</span>
-<< <span style='color:#030003'>i</span> << <span style='color:#030003'>std</span>::<span
+mso-ansi-language:EN-US;mso-no-proof:yes'><span
+style='mso-spacerun:yes'> </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>
+<< <span style='color:#A31515'>"foo(int):"</span> << <span
+style='color:#030003'>i</span> << <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;
@@ -18102,8 +18158,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'>We now have a way to bind a method
-of an event, state or state machine or a simple function with a nicer syntax than
-a normal bind.<o:p></o:p></span></p>
+of an event, state or state machine or a simple function with a nicer syntax
+than a normal bind.<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> </o:p></span></p>
@@ -18118,7 +18174,7 @@
these new concepts faster:<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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -18126,7 +18182,16 @@
href="SimpleTutorialEuml.cpp">an eUML version of the simple tutorial</a><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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
+EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'><a
+href="SimpleTutorialEuml2.cpp">An eUML version of the simple tutorial
+(alternative syntax)</a><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:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -18134,7 +18199,7 @@
href="CompositeTutorialEuml.cpp">an eUML version of the composite tutorial</a><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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -18142,7 +18207,7 @@
href="DirectEntryEuml.cpp">an eUML version of the entry tutorial</a><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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -18150,7 +18215,7 @@
href="FlagsTutorialEuml.cpp">an eUML version of the flags tutorial</a><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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -18158,7 +18223,7 @@
href="HistoryEuml.cpp">an eUML version of the history tutorial</a><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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -18167,7 +18232,7 @@
tutorial</a><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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -18175,7 +18240,7 @@
href="AnonymousTutorialEuml.cpp">an eUML version of anonymous transitions</a><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:l26 level1 lfo37;tab-stops:
+margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l26 level1 lfo38;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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -18201,19 +18266,18 @@
<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'>The same simple
-and composite state machines are implemented
-with Msm2 with standard frontend, the simple one also with <a
-href="EumlSimple.cpp">eUML</a>.<o:p></o:p></span></p>
+and composite state machines are implemented with
+Msm2 with standard frontend, the simple one also with eUML.<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'>As these simple machines need no terminate/interrupt
-states, no message queue and have no-throw guarantee on their actions, the Msm
-state machines are defined with minimum functionality.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>As these simple machines need no
+terminate/interrupt states, no message queue and have no-throw guarantee on
+their actions, the Msm state machines are defined with minimum functionality.<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'>VC9:<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l10 level1 lfo38;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l10 level1 lfo39;
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
@@ -18221,7 +18285,7 @@
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>The
simple test completes 36 times faster with Msm than with Boost.Statechart<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l10 level1 lfo38;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l10 level1 lfo39;
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
@@ -18229,27 +18293,28 @@
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>The
composite test completes 18 times faster with Msm<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l10 level1 lfo38;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l10 level1 lfo39;
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'>·<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>The
-fastest version is with eUML. It completes 47 times faster than
-Boost.Statechart. A transition costs on my Q6600 9ns.<o:p></o:p></span></p>
+fastest version is with eUML/functors. It
+completes 58 times faster than Boost.Statechart. A transition costs on my Q6600
+4.5ns.<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'>gcc 4.2.3:<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l31 level1 lfo39;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l31 level1 lfo40;
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'>·<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>the
-simple test completes 33 times faster with Msm<o:p></o:p></span></p>
+simple test completes 54 times faster with Msm (with functors)<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l31 level1 lfo39;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l31 level1 lfo40;
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
@@ -18281,10 +18346,10 @@
<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'>With g++ 4.3, it strongly depends on
the compiler option (much more than VC). A good size state machine with
-–O3 can generate an executable of 600kB, and with eUML you can get to 1.5MB.
-Now, trying with –Os –s I come down to 18kB and 30kB for the test
-state machines, while eUML will go down to 1MB (which is still big), so in this
-case eUML does not come for free.<o:p></o:p></span></p>
+–O3 can generate an executable of 600kB, and with eUML you can get to
+1.5MB. Now, trying with –Os –s I come down to 18kB and 30kB for the
+test state machines, while eUML will go down to 1MB (which is still big), so in
+this case eUML does not come for free.<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="_Compilers"></a><span lang=EN-US style='mso-ansi-language:EN-US'>Compilers<o:p></o:p></span></h1>
@@ -18292,7 +18357,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'>Msm v2 was successfully tested with:<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo40;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo41;
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
@@ -18300,7 +18365,7 @@
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>VC8,
VC9SP1, VC10 Beta1<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo40;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo41;
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
@@ -18308,7 +18373,7 @@
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>g++
4.1 and higher<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo40;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo41;
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
@@ -18319,7 +18384,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'>EUML will only work with:<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo40;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo41;
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
@@ -18328,7 +18393,7 @@
(partly). You cannot, however use any overloaded function (like splice) and
compile times and RAM consumption explode.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo40;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo41;
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
@@ -18336,7 +18401,7 @@
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>VC9SP1,
VC10 Beta1-2<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo40;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l20 level1 lfo41;
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
@@ -18350,7 +18415,7 @@
<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="_Limitations"></a>Limitation</h1>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l34 level1 lfo41;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l34 level1 lfo42;
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
@@ -18361,7 +18426,7 @@
watch the compiler agonize for hours... (Make sure you ask for dual 24" as
well, it doesn't hurt).<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l34 level1 lfo41;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l34 level1 lfo42;
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
@@ -18371,7 +18436,7 @@
some compilers (VC9, VC10 Beta1) with buggy decltype support (I suspect some at
least quadratic algorithms there).<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l34 level1 lfo41;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l34 level1 lfo42;
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
@@ -18426,7 +18491,7 @@
lang=EN-US style='mso-ansi-language:EN-US'>VC9</span></u><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:l29 level1 lfo42;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l29 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'>·<span
@@ -18437,13 +18502,13 @@
mso-ansi-language:EN-US'>submachine::exit_pt</span><span lang=EN-US
style='mso-ansi-language:EN-US'>” ? Because “</span><span
lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>exit</span><span
-lang=EN-US style='mso-ansi-language:EN-US'>” will crash the compiler.
-“</span><span lang=EN-US style='font-family:"Courier New";mso-ansi-language:
-EN-US'>Exit</span><span lang=EN-US style='mso-ansi-language:EN-US'>” is
-not possible either because it will crash the compiler on one machine, but not
-on another (the compiler was installed from the same disk).<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>” will crash the compiler. “</span><span
+lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>Exit</span><span
+lang=EN-US style='mso-ansi-language:EN-US'>” is not possible either
+because it will crash the compiler on one machine, but not on another (the
+compiler was installed from the same disk).<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l29 level1 lfo42;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l29 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'>·<span
@@ -18456,15 +18521,15 @@
which was simpler because with one less template argument. Note: VC10 beta
seems to have solved the problem.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l29 level1 lfo42;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l29 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'>·<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
lang=EN-US style='mso-ansi-language:EN-US'>Typeof: While g++ and VC9 compile
-“standard” state machines in comparable times, Typeof (while in both
-ways natively supported) seems to behave in a quadratic complexity with VC9 and
-VC10.<o:p></o:p></span></p>
+“standard” state machines in comparable times, Typeof (while in
+both ways natively supported) seems to behave in a quadratic complexity with
+VC9 and VC10.<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'><u><span
lang=EN-US style='mso-ansi-language:EN-US'>g++ 4.x</span></u><span lang=EN-US
@@ -18482,7 +18547,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:l37 level1 lfo43;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l37 level1 lfo44;
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'>·<span
@@ -18490,7 +18555,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:l37 level1 lfo43;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l37 level1 lfo44;
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'>·<span
@@ -18523,7 +18588,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:l39 level1 lfo44;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo45;
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
@@ -18531,7 +18596,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:l39 level1 lfo44;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo45;
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
@@ -18539,7 +18604,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:l39 level1 lfo44;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo45;
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
@@ -18553,7 +18618,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:l39 level1 lfo44;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo45;
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
@@ -18562,17 +18627,17 @@
to Richard O’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:l39 level1 lfo44;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo45;
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'>·<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>Big
-thanks to those who took the time to write a review: Franz Alt, David Bergman, Michael
-Caisse, Barend Gehrels, Darryl Greene, Juraj Ivancic, Erik Nelson, Kenny
-Riddile.<o:p></o:p></span></p>
+thanks to those who took the time to write a review: Franz Alt, David Bergman,
+Michael Caisse, Barend Gehrels, Darryl Greene, Juraj Ivancic, Erik Nelson,
+Kenny Riddile.<o:p></o:p></span></p>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo44;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo45;
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
@@ -18582,7 +18647,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'>Msm1</h2>
-<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo44;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo45;
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
@@ -18593,7 +18658,7 @@
framework in their excellent book, “C++ template Metaprogramming”.
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:l39 level1 lfo44;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo45;
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
@@ -18602,7 +18667,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:l39 level1 lfo44;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l39 level1 lfo45;
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
@@ -18622,56 +18687,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 lfo45;
+<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l4 level1 lfo46;
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'>·<span
style='font:7.0pt "Times New Roman"'> </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 lfo45;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo46;
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'>·<span
style='font:7.0pt "Times New Roman"'> </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 lfo45;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo46;
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'>·<span
style='font:7.0pt "Times New Roman"'> </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 lfo45;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo46;
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'>·<span
style='font:7.0pt "Times New Roman"'> </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 lfo45;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo46;
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'>·<span
style='font:7.0pt "Times New Roman"'> </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 lfo45;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo46;
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'>·<span
style='font:7.0pt "Times New Roman"'> </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 lfo45;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo46;
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'>·<span
style='font:7.0pt "Times New Roman"'> </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 lfo45;
+<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l4 level1 lfo46;
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'>·<span
@@ -18686,8 +18751,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'><u><span
lang=EN-US style='mso-ansi-language:EN-US'>Question</span></u><span lang=EN-US
-style='mso-ansi-language:EN-US'>: on_entry gets as argument, the sent event. What
-event do I get when the state becomes default-activated (because it is an
+style='mso-ansi-language:EN-US'>: on_entry gets as argument, the sent event.
+What event do I get when the state becomes default-activated (because it is an
initial 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'><u><span
@@ -18856,7 +18921,7 @@
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:l45 level1 lfo46;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l45 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
@@ -18864,7 +18929,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:l45 level1 lfo46;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l45 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
@@ -18873,7 +18938,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:l45 level1 lfo46;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l45 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
@@ -18881,7 +18946,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:l45 level1 lfo46;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l45 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
@@ -18893,16 +18958,16 @@
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='mso-ansi-language:EN-US'>Please keep in mind that these companies
-produce hundreds of slightly different products, which makes this quite a
-realistic scenario.<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>Please keep in mind that these
+companies produce hundreds of slightly different products, which makes this
+quite a realistic scenario.<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'>What would be the result? New states
like “alarm3 beeps” or “three beep” + “both
-beep” (backward compatibility). Maintenance would quickly become a nightmare.
-The reason? A breach of encapsulation caused by “alarm beeps”
-letting other state machines use its internals.<o:p></o:p></span></p>
+beep” (backward compatibility). Maintenance would quickly become a
+nightmare. The reason? A breach of encapsulation caused by “alarm
+beeps” 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
@@ -18913,7 +18978,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:l36 level1 lfo47;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l36 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
@@ -18921,7 +18986,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:l36 level1 lfo47;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l36 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
@@ -18936,7 +19001,7 @@
height:388.8pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image017.jpg" o:title="clock"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=554 height=518
-src="index-Dateien/image035.jpg" alt=clock.jpg v:shapes="Grafik_x0020_5"><![endif]></span><span
+src="index-Dateien/image018.jpg" alt=clock.jpg v:shapes="Grafik_x0020_5"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><br clear=left style='mso-special-character:
line-break'>
<o:p></o:p></span></p>
@@ -18946,8 +19011,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'>As you see, it is quite simple. You
-only need define an instance of Alarm in each zone. To add a new alarm is as simple
-as adding a new instance. The Alarm submachine is simply defined as:<o:p></o:p></span></p>
+only need define an instance of Alarm in each zone. To add a new alarm is as
+simple as adding a new instance. The Alarm submachine is simply defined as:<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
style='mso-no-proof:yes'><!--[if gte vml 1]><v:shape id="Grafik_x0020_6"
@@ -18955,7 +19020,7 @@
height:229.2pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image019.jpg" o:title="alarm"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=467 height=306
-src="index-Dateien/image036.jpg" alt=alarm.jpg v:shapes="Grafik_x0020_6"><![endif]></span><span
+src="index-Dateien/image020.jpg" alt=alarm.jpg v:shapes="Grafik_x0020_6"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><br clear=left style='mso-special-character:
line-break'>
<o:p></o:p></span></p>
@@ -19001,10 +19066,11 @@
lang=EN-US style='font-family:"Courier New";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 identify each instance
-in </span><span lang=EN-US style='font-family:"Courier New";color:black;
-mso-ansi-language:EN-US'>alarmBeeps</span><span lang=EN-US style='color:black;
-mso-ansi-language:EN-US'> as Alarm<1>, Alarm<2>, etc.<o:p></o:p></span></p>
+lang=EN-US style='color:black;mso-ansi-language:EN-US'>And identify each
+instance in </span><span lang=EN-US style='font-family:"Courier New";
+color:black;mso-ansi-language:EN-US'>alarmBeeps</span><span lang=EN-US
+style='color:black;mso-ansi-language:EN-US'> as Alarm<1>, Alarm<2>,
+etc.<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'><o:p> </o:p></span></p>
@@ -19044,8 +19110,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'>This way, if Harel ever needs to
-support a third alarm, he simply needs a third entry in this typedef. Notice how
-having front-ends and back-ends elegantly solves this problem while staying
+support a third alarm, he simply needs a third entry in this typedef. Notice
+how having front-ends and back-ends elegantly solves this problem while staying
generic. Notice also that it is now possible to have each alarm instance use
different history policies.<o:p></o:p></span></p>
@@ -19085,7 +19151,7 @@
piece of clock watch functionality, the countdown. We get the following
specification:<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l26 level1 lfo37;
+<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l26 level1 lfo38;
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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -19094,14 +19160,14 @@
has to start. The sent event contains the countdown value </span>in<span
lang=EN-US style='mso-ansi-language:EN-US'> seconds<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo37;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo38;
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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>When
the countdown is finished, the clock has to ring for exactly 5s.<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo37;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo38;
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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -19109,14 +19175,14 @@
any time, the user can stop the countdown or ringing by pressing the stop
button.<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo37;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo38;
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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=EN-US style='mso-ansi-language:EN-US'>The
ringing can be stopped by pressing any button (start or stop)<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l26 level1 lfo37;
+<p class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l26 level1 lfo38;
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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -19144,7 +19210,7 @@
height:471pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image021.jpg" o:title="Timer"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=594 height=628
-src="index-Dateien/image037.jpg" alt=Timer.jpg v:shapes="Grafik_x0020_7"><![endif]></span><span
+src="index-Dateien/image022.jpg" alt=Timer.jpg v:shapes="Grafik_x0020_7"><![endif]></span><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
@@ -19239,10 +19305,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-ansi-language:EN-US'>With eUML, the code is equivalent to
-the model (and could be parsed back to the model if necessary). So let’s
-go back to what we wrote in the model and analyze the conversion:<o:p></o:p></span></p>
+the model (and could be parsed back to the model if necessary). So let’s go
+back to what we wrote in the model and analyze the conversion:<o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l26 level1 lfo37;
+<p class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l26 level1 lfo38;
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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -19255,7 +19321,7 @@
<span style='color:#030003'>Event_</span><<span style='color:#030003'>m_timer</span>>()</span><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo37;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo38;
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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -19274,7 +19340,7 @@
mso-ansi-language:EN-US;mso-no-proof:yes'> </span><span lang=EN-US
style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo37;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo38;
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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -19287,7 +19353,7 @@
= <span style='color:#030003'>Int_</span><<span style='color:#030003'>RINGING_TIME</span>>()</span><span
lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
-<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo37;
+<p class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l26 level1 lfo38;
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='mso-fareast-font-family:"Times New Roman";mso-ansi-language:
EN-US'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>
@@ -19328,14 +19394,14 @@
<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'>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
-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 “cousin” with
-Activity Diagrams.<o:p></o:p></span></p>
+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 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 “cousin” with Activity
+Diagrams.<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'>Let’s suppose we are asked to
@@ -19376,8 +19442,8 @@
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'>We now want to do this using a
-model-driven approach with state machines. I suggest the following machine:<o:p></o:p></span></p>
+lang=EN-US style='mso-ansi-language:EN-US'>We now want to do this using a model-driven
+approach with state machines. I suggest the following 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='mso-ansi-language:EN-US'><o:p> </o:p></span></p>
@@ -19388,7 +19454,7 @@
height:200.4pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image023.jpg" o:title="iPodSearch"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=308 height=267
-src="index-Dateien/image038.jpg" alt=iPodSearch.jpg v:shapes="Grafik_x0020_8"><![endif]></span><span
+src="index-Dateien/image024.jpg" alt=iPodSearch.jpg v:shapes="Grafik_x0020_8"><![endif]></span><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
@@ -19951,7 +20017,7 @@
height:384.6pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="index-Dateien/image025.jpg" o:title="AnnexA"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=798 height=513
-src="index-Dateien/image039.jpg" alt=AnnexA.jpg v:shapes="Grafik_x0020_9"><![endif]></span><span
+src="index-Dateien/image026.jpg" alt=AnnexA.jpg v:shapes="Grafik_x0020_9"><![endif]></span><span
lang=EN-US style='mso-ansi-language:EN-US'><br clear=left style='mso-special-character:
line-break'>
<o:p></o:p></span></p>
@@ -19968,8 +20034,8 @@
“Next” 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
-states, like transition-less initial states or states created using the </span><span
+lang=EN-US style='mso-ansi-language:EN-US'>If you have some implicitly created states,
+like transition-less initial states or states created using the </span><span
lang=EN-US style='font-family:"Courier New";mso-ansi-language:EN-US'>explicit_creation</span><span
lang=EN-US style='mso-ansi-language:EN-US'> typedef, these will be added as a
source at the end of the transition table.<o:p></o:p></span></p>
@@ -20028,7 +20094,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 lfo48;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo49;
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
@@ -20038,7 +20104,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 lfo48;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo49;
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
@@ -20048,7 +20114,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 lfo48;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo49;
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
@@ -20058,7 +20124,7 @@
EN-US'>mpl::size<>::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 lfo48;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo49;
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
@@ -20073,7 +20139,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 lfo48;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo49;
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
@@ -20088,7 +20154,7 @@
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 lfo48;
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo49;
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
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