#include #include #include #include using namespace std; using namespace boost::msm::front::euml; namespace msm = boost::msm; namespace MSM_A // Concrete FSM implementation { BOOST_MSM_EUML_DECLARE_ATTRIBUTE(int, borrowedBuffer_attribute); BOOST_MSM_EUML_DECLARE_ATTRIBUTE(int, someother_Attribute); BOOST_MSM_EUML_ACTION(someAction) { template void operator()(Event const& event,FSM& , STATE& state) { std::cout<<"Doing someAction."< void operator()(Event const& event,FSM& fsm, STATE& state) { std::cout<<"Doing someOtherAction."< MSM_A_player; } namespace MSM_B // Concrete FSM implementation { ::MSM_A::MSM_A_player subMachine; BOOST_MSM_EUML_DECLARE_ATTRIBUTE(int, rootFSM_attribute); BOOST_MSM_EUML_DECLARE_ATTRIBUTE(int, rootstate_attribute); BOOST_MSM_EUML_EVENT(someEvent) BOOST_MSM_EUML_ACTION(rootFSM_action) { template void operator()(Event const& event,FSM& , STATE& state) { std::cout<<"Doing rootFSM_action."< void operator()(Event const& event,FSM& fsm , STATE& state) { std::cout<<"Doing another_rootFSM_action."< MSM_B_player; } int main() { std::cout<<"Making player."<