Public メソッド | |
__init__ (num_of_state) | |
コンストラクタ | |
setNOP (call_back) | |
NOP関数を登録する. | |
setListener (listener) | |
Listener オブジェクトを登録する. | |
setEntryAction (state, call_back) | |
Entry action 関数を登録する. | |
setPreDoAction (state, call_back) | |
PreDo action 関数を登録する. | |
setDoAction (state, call_back) | |
Do action 関数を登録する. | |
setPostDoAction (state, call_back) | |
Post action 関数を登録する. | |
setExitAction (state, call_back) | |
Exit action 関数を登録する. | |
setTransitionAction (call_back) | |
State transition action 関数を登録する. | |
setStartState (states) | |
初期状態をセットする | |
getStates () | |
状態を取得する | |
getState () | |
isIn (state) | |
現在状態を確認 | |
goTo (state) | |
状態を変更 | |
worker () | |
駆動関数 | |
setNullFunc (s, nullfunc) | |
sync (states) | |
need_trans () | |
update_curr (curr) |
class ActiveObject { public: enum MyState { INACTIVE, ACTIVE, ERROR }; typedef States<MyState> MyStates;
ActiveObject() : m_sm(3) { m_sm.setNOP(&ActiveObject::nullAction); m_sm.setListener(this);
m_sm.setExitAction(NACTIVE, &ActiveObject::inactiveExit); : m_sm.setPostDoAction(ERROR, &ActiveObject::errorPostDo); m_sm.setTransitionAction(&ActiveObject:tratransitionnsition); };
bool nullAction(MyStates st) {}; bool inactiveExit(MyStates st) {}; : bool errorPostDo(MyStates st) {}; bool transition(MyStates st) {};
private: StateMachine<MyState, bool, ActiveObject> m_sm; };状態を持たせたいクラスは以下の条件を満たすように実装しなければならない。
このクラスは、一つの状態に対して、
このクラスは以下のようなタイミングで各アクションが実行される。
|
コンストラクタ
|
|
|
|
状態を取得する
|
|
状態を変更
|
|
現在状態を確認
|
|
|
|
Do action 関数を登録する.
|
|
Entry action 関数を登録する.
|
|
Exit action 関数を登録する.
|
|
Listener オブジェクトを登録する.
|
|
NOP関数を登録する.
|
|
|
|
Post action 関数を登録する.
|
|
PreDo action 関数を登録する.
|
|
初期状態をセットする
|
|
State transition action 関数を登録する.
|
|
|
|
|
|
駆動関数
|