...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
state_machine
or
the asynchronous_state_machine
class templates; examplesimple_state
or
state
class
templates; exampleContext
template parameter. Outermost states pass the
state_machine<>
or asynchronous_state_machine<>
subtype they belong to, inner states pass their direct outer state;
exampleorthogonal
class template
nested in its outer state; examplestate_machine<>
and asynchronous_state_machine<>
the state that is initially entered needs to be specified with the
InitialState
template parameter; examplesimple_state<>
and state<>
the inner
state(s) that is/are initially entered can be specified with the
InnerInitial
template parameter; exampletermination<>
)
and special reaction function (simple_state<>::terminate()
);
exampleshallow_history<>
deep_history<>
;
exampleevent
class
template; examplestate_machine<>::process_event()
are implicitly call eventssimple_state<>::post_event()
or fifo_scheduler<>::queue_event()
are implicitly signal eventsfifo_scheduler<>::queue_event()
when the due time elapsesget
and set
methods. Whenever set
is called the wrapper posts an
appropriate eventcustom_reaction<>
;
exampletransition<>
or
a call to simple_state<>::transit<>
in a custom_reaction<>
;
exampledeferral<>
or a
call to simple_state<>::defer_event()
in a custom_reaction<>
;
examplein_state_reaction<>
or a call to simple_state<>::discard_event()
in a custom_reaction<>
transition<>
or
simple_state<>::transit<>()
;
exampleRevised 03 December, 2006
Copyright © 2003-2006 Andreas Huber Dönni
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)