Table of Contents
- 1. Founding idea
- 2. UML Short Guide
- What are state machines?
- Concepts
- State machine, state, transition, event
- Submachines, orthogonal regions, pseudostates
-
History
- Completion transitions / anonymous
transitions
- Internal transitions
-
Conflicting transitions
- Added concepts
- State machine glossary
- 3. Tutorial
- Design
- Basic front-end
- A simple example
- Transition table
- Defining states with entry/exit actions
- What do you actually do inside actions / guards?
- Defining a simple state machine
- Defining a submachine
- Orthogonal regions, terminate state, event deferring
- History
- Completion (anonymous) transitions
- Internal transitions
- more row types
- Explicit entry / entry and exit pseudo-state / fork
- Flags
- Event Hierarchy
- Customizing a state machine / Getting more speed
- Choosing the initial event
- Containing state machine (deprecated)
- Functor front-end
- Transition table
- Defining states with entry/exit actions
- What do you actually do inside actions / guards (Part 2)?
- Defining a simple state machine
- Anonymous transitions
- Internal
transitions
- Kleene (any) event
- eUML
- Transition table
- A simple example: rewriting only our transition table
- Defining events, actions and states with entry/exit actions
- Wrapping up a simple state machine and first complete examples
- Defining a submachine
-
Attributes / Function call
- Orthogonal regions, flags, event deferring
-
Customizing a state machine / Getting
more speed
- Completion / Anonymous transitions
- Internal transitions
- Kleene(any) event)
- Other state types
- Helper functions
- Phoenix-like STL support
- Writing actions with Boost.Phoenix (in development)
- Back-end
- Creation
- Starting and stopping a state
machine
- Event dispatching
- Active state(s)
- Serialization
- Base state type
- Visitor
- Flags
- Getting a state
- State machine constructor with arguments
- Trading run-time speed for
better compile-time / multi-TU compilation
- Compile-time state machine analysis
- Enqueueing events for later
processing
- Customizing the message queues
- Policy definition with Boost.Parameter
- Choosing when to switch active
states
- 4. Performance / Compilers
- Speed
- Executable size
- Supported compilers
- Limitations
- Compilers corner
- 5. Questions & Answers, tips
- 6. Internals
- Backend: Run To Completion
- Frontend / Backend
interface
- Generated state ids
- Metaprogramming tools
- 7. Acknowledgements
- MSM v2
- MSM v1
- 8. Version history
- From V2.27 to V2.28 (Boost 1.57)
- From V2.26 to V2.27 (Boost 1.56)
- From V2.25 to V2.26 (Boost 1.55)
- From V2.24 to V2.25 (Boost 1.54)
- From V2.23 to V2.24 (Boost 1.51)
- From V2.22 to V2.23 (Boost 1.50)
- From V2.21 to V2.22 (Boost 1.48)
- From V2.20 to V2.21 (Boost 1.47)
- From V2.12 to V2.20 (Boost 1.46)
- From V2.10 to V2.12 (Boost 1.45)
- From V2.0 to V2.12 (Boost 1.44)