Boost.MSMを使用した実装方法はだいたい下記のとおりである。
- 状態マシンクラスを定義する。状態マシンクラスはmsm::front::state_machine_def<実装クラス>を継承する。
- 状態クラスを定義する。状態クラスはmsm::front::state<>を継承する。
- イベントクラスを定義する。
- アクション用のファンクタもしくはメンバ関数を用意する。
- ガード条件用のファンクタもしくはメンバ関数を用意する。
- 状態クラス中に遷移テーブルを定義する。
- typedef msm::back::state_machine<状態マシン> 状態実装マシン として状態マシンを実体化?する。
遷移テーブルの定義がこのライブラリの肝である。