Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Click here to view the latest version of this page.

Part I. User' guide

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
State machine glossary
3. Tutorial
Design
Basic front-end
A simple example
Transition table
Defining states with entry/exit actions
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
Defining a simple state machine
Anonymous transitions
Internal transitions
eUML (experimental)
Transition table
Defining events, actions and states with entry/exit actions
Defining a simple state machine
Defining a submachine
Attributes / Function call
Orthogonal regions, flags, event deferring
Customizing a state machine / Getting more speed
Completion / Anonymous transitions
Internal transitions
Other state types
Helper functions
Phoenix-like STL support
Back-end
Creation
Starting 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
4. Performance / Compilers
Speed
Executable size
Supported compilers
Limitations
Compilers corner
5. Questions & Answers
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.10 to V2.12
From V2.0 to V2.12