9 Ağustos 2017 Çarşamba

msm state Sınıfı

Tanımlama
Örnek
Şöyle yaparız.
struct A:msmf::state<> {
  ...
}
Örnek
Kalıtım kullanarak şöyle yaparız.
struct State : boost::msm::front::state<> {};

struct State1 : State {
  ...
}
Örnek
struct içine alan tanımlayabiliriz. Şöyle yaparız.
// States
struct State1:msmf::state<> {
  ...
  bool z = true; // example of a condition
};
Action
State içinde bir inner struct olarak tanımlanır. Şöyle yaparız.
struct State2 : State {
  template<typename Event, typename Fsm>
  void on_entry(Event const&, Fsm& fsm) {
    ...
  }

  template<typename Event, typename Fsm>
  void on_exit(Event const&, Fsm&) {
    ...
  }

  struct Action {
    template<typename Fsm>
    void operator()(Event1 const &, Fsm &fsm, State1&, State2&) {
      ...
    }
  }
}
state_machine_def sınıfının geçiş tablosu şöyle yapılır.
using initial_state = State1;
struct TransitionTable : boost::mpl::vector<
  boost::msm::front::Row<State1, event::Event1, State2, State2::Action>,
  boost::msm::front::Row<State1, event::Event3, State3>,
  boost::msm::front::Row<State2, event::Event1, State2>,
  boost::msm::front::Row<State1, event::Event1, State2>,      
> {};
using transition_table = TransitionTable;
on_entry metodu
Şöyle yaparız.
template <class Event,class Fsm>
void on_entry(Event const&, Fsm&) const {
  ...
}
on_exit metodu
Şöyle yaparız.
template <class Event,class Fsm>
void on_exit(Event const&, Fsm&) const {
  ...
}

Hiç yorum yok:

Yorum Gönder