...one of the most highly regarded and expertly designed C++ library projects in the world. — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards
...one of the most highly regarded and expertly designed C++ library projects in the world.
<PrefaceI. User' guide1. Founding idea2. UML Short GuideWhat are state machines?ConceptsState machine, state, transition, event Submachines, orthogonal regions, pseudostates History Completion transitions / anonymous transitions Internal transitions Conflicting transitions Added conceptsState machine glossary3. TutorialDesignBasic front-endA simple exampleTransition tableDefining states with entry/exit actionsWhat do you actually do inside actions / guards?Defining a simple state machineDefining a submachineOrthogonal regions, terminate state, event deferringHistoryCompletion (anonymous) transitionsInternal transitionsmore row typesExplicit entry / entry and exit pseudo-state / forkFlagsEvent HierarchyCustomizing a state machine / Getting more speedChoosing the initial event Containing state machine (deprecated)Functor front-end Transition table Defining states with entry/exit actionsWhat do you actually do inside actions / guards (Part 2)?Defining a simple state machineAnonymous transitionsInternal transitionsKleene (any) eventeUMLTransition tableA simple example: rewriting only our transition table Defining events, actions and states with entry/exit actionsWrapping up a simple state machine and first complete examplesDefining a submachine Attributes / Function callOrthogonal regions, flags, event deferring Customizing a state machine / Getting more speedCompletion / Anonymous transitionsInternal transitionsKleene(any) event)Other state typesHelper functionsPhoenix-like STL supportWriting actions with Boost.Phoenix (in development)Back-endCreation Starting and stopping a state machineEvent dispatchingActive state(s)SerializationBase state type VisitorFlagsGetting a state State machine constructor with arguments Trading run-time speed for better compile-time / multi-TU compilationCompile-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 / CompilersSpeedExecutable sizeSupported compilers Limitations Compilers corner 5. Questions & Answers, tips6. InternalsBackend: Run To CompletionFrontend / Backend interface Generated state ids Metaprogramming tools7. AcknowledgementsMSM v2 MSM v18. Version historyFrom 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)II. Reference9. External references to MSM10. eUML operators and basic helpers11. Functional programming Common headers — The common types used by front- and back-endsBack-end — The back-end headersFront-end — The front-end headers
Список таблиц
Статья Meta State Machine (MSM) раздела index.html может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::
реклама