| // Copyright 2008 Christophe Henry |
| // henry UNDERSCORE christophe AT hotmail DOT com |
| // This is an extended version of the state machine available in the boost::mpl library |
| // Distributed under the same license as the original. |
| // Copyright for the original version: |
| // Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed |
| // under the Boost Software License, Version 1.0. (See accompanying |
| // file LICENSE_1_0.txt or copy at |
| // http://www.boost.org/LICENSE_1_0.txt) |
| |
| #ifndef BOOST_MSM_ACTIVE_STATE_SWITCHING_POLICIES_H |
| #define BOOST_MSM_ACTIVE_STATE_SWITCHING_POLICIES_H |
| |
| namespace boost { namespace msm |
| { |
| // policy classes |
| |
| // Default: new active state set after the transition (after entry) |
| struct active_state_switch_after_entry |
| { |
| static int after_guard(int current_state,int){return current_state;} |
| static int after_exit(int current_state,int){return current_state;} |
| static int after_action(int current_state,int){return current_state;} |
| static int after_entry(int,int next_state){return next_state;} |
| }; |
| |
| // new state set before the transition starts |
| struct active_state_switch_before_transition |
| { |
| static int after_guard(int,int next_state){return next_state;} |
| static int after_exit(int,int next_state){return next_state;} |
| static int after_action(int,int next_state){return next_state;} |
| static int after_entry(int,int next_state){return next_state;} |
| }; |
| |
| // new state set after exit action completed |
| struct active_state_switch_after_exit |
| { |
| static int after_guard(int current_state,int){return current_state;} |
| static int after_exit(int,int next_state){return next_state;} |
| static int after_action(int,int next_state){return next_state;} |
| static int after_entry(int,int next_state){return next_state;} |
| }; |
| |
| // new state set after transition action completed |
| struct active_state_switch_after_transition_action |
| { |
| static int after_guard(int current_state,int){return current_state;} |
| static int after_exit(int current_state,int){return current_state;} |
| static int after_action(int,int next_state){return next_state;} |
| static int after_entry(int,int next_state){return next_state;} |
| }; |
| |
| } }//boost::msm |
| #endif //BOOST_MSM_ACTIVE_STATE_SWITCHING_POLICIES_H |