Giriş
Şu satırı dahil ederiz.
Template'ın ilk parametresi kendi state_machine_def sınıfından kalıtan sınıfımdır.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Elimizde şöyle event'ler olsun.
İlk state'e giriş yapar. process_event() metodundan önce çağrılır. Şöyle yaparız
Şu satırı dahil ederiz.
#include <boost/msm/back/state_machine.hpp>
ConstructorTemplate'ın ilk parametresi kendi state_machine_def sınıfından kalıtan sınıfımdır.
Örnek
msm::back::state_machine<my_fsm> my;
ÖrnekŞöyle yaparız.
struct FSMDef : boost::msm::front::state_machine_def<FSMDef> {
...
}
using FSM = boost::msm::back::state_machine<FSMDef>;
FSM fsm;
ÖrnekŞöyle yaparız.
namespace {
class Shelf_Hooking;
typedef msmb::state_machine<Shelf_Hooking, msmb::mpl_graph_fsm_check> SM_;
struct Event {};
class Shelf_Hooking : public msmf::state_machine_def<Shelf_Hooking> {
...
}; /* End of State Machine class */
/***************************************************************/
/* Back-end */
class state_machine_impl {
std::unique_ptr<SM_> state_machine;
public:
state_machine_impl() : state_machine(new SM_()) {}
~state_machine_impl() {}
void runSM() {
state_machine->start();
state_machine->process_event(Event());
} /* End of runSM() */
}; /* End of class state_machine_impl */
} /* End of namespace */
int main() {
std::unique_ptr<state_machine_impl> Sm_ = std::unique_ptr<state_machine_impl>
(new state_machine_impl());
Sm_->runSM();
}
process_event metoduElimizde şöyle event'ler olsun.
struct Event1 {};
struct Event2 {};
Şöyle yaparız.my.process_event(Event1());
start metoduİlk state'e giriş yapar. process_event() metodundan önce çağrılır. Şöyle yaparız
my.start();
Hiç yorum yok:
Yorum Gönder