I am newbi to boost msm and boost in general.
I would like to somehow encapsulate all the:
- event structures
- stateMahine structure containing the transition table structure and the state structures
within a Class.
How can I do that?
// events
struct event1 {};
// front-end: define the FSM structure
struct my_machine_ : public msm::front::state_machine_def<my_machine_>
{
// The list of FSM states
struct State1 : public msm::front::state<>
{
// every (optional) entry/exit methods get the event passed.
template <class Event,class FSM>
void on_entry(Event const&,FSM& ) {std::cout << "entering: State1" << std::endl;}
template <class Event,class FSM>
void on_exit(Event const&,FSM& ) {std::cout << "leaving: State1" << std::endl;}
};
struct State2 : public msm::front::state<>
{
template <class Event,class FSM>
void on_entry(Event const& ,FSM&) {std::cout << "entering: State3" << std::endl;}
template <class Event,class FSM>
void on_exit(Event const&,FSM& ) {std::cout << "leaving: State3" << std::endl;}
};
// the initial state of the player SM. Must be defined
typedef State1 initial_state;
typedef my_machine_ p; // makes transition table cleaner
// Transition table
struct transition_table : mpl::vector<
// Start Event Next Action Guard
// +---------+-------------+---------+---------------------+----------------------+
Row < State1 , event1 , State2 >,
Row < State2 , event1 , State1 >
> {};
};
To implement the member of a nested use: