Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
state_machine.hpp File Reference
#include <exception>
#include <vector>
#include <functional>
#include <numeric>
#include <utility>
#include <boost/detail/no_exceptions_support.hpp>
#include <boost/mpl/contains.hpp>
#include <boost/mpl/deref.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/fusion/container/vector/convert.hpp>
#include <boost/fusion/include/as_vector.hpp>
#include <boost/fusion/include/as_set.hpp>
#include <boost/fusion/container/set.hpp>
#include <boost/fusion/include/set.hpp>
#include <boost/fusion/include/set_fwd.hpp>
#include <boost/fusion/include/mpl.hpp>
#include <boost/fusion/sequence/intrinsic/at_key.hpp>
#include <boost/fusion/include/at_key.hpp>
#include <boost/fusion/algorithm/iteration/for_each.hpp>
#include <boost/fusion/include/for_each.hpp>
#include <boost/assert.hpp>
#include <boost/ref.hpp>
#include <boost/type_traits.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/is_convertible.hpp>
#include <boost/bind.hpp>
#include <boost/bind/apply.hpp>
#include <boost/function.hpp>
#include <boost/any.hpp>
#include <boost/serialization/base_object.hpp>
#include <boost/parameter.hpp>
#include <boost/msm/active_state_switching_policies.hpp>
#include <boost/msm/row_tags.hpp>
#include <boost/msm/msm_grammar.hpp>
#include <boost/msm/back/fold_to_list.hpp>
#include <boost/msm/back/metafunctions.hpp>
#include <boost/msm/back/history_policies.hpp>
#include <boost/msm/back/common_types.hpp>
#include <boost/msm/back/args.hpp>
#include <boost/msm/back/default_compile_policy.hpp>
#include <boost/msm/back/dispatch_table.hpp>
#include <boost/msm/back/no_fsm_check.hpp>
#include <boost/msm/back/queue_container_deque.hpp>
Include dependency graph for state_machine.hpp:

Classes

struct  boost::msm::back::direct_entry_event< StateType, Event >
 
struct  boost::msm::back::make_euml_terminal< T, F, Enable >
 
struct  boost::msm::back::make_euml_terminal< T, F, typename::boost::disable_if< has_using_declared_table< F > >::type >
 
struct  boost::msm::back::make_euml_terminal< T, F, typename::boost::enable_if< has_using_declared_table< F > >::type >
 
class  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::InitEvent
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::ExitEvent
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::Flag_AND
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::Flag_OR
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::exit_pt< ExitPoint >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::entry_pt< EntryPoint >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::direct< EntryPoint >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::row_< ROW >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::g_row_< ROW >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::a_row_< ROW >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::_row_< ROW >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::irow_< ROW >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::g_irow_< ROW >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::a_irow_< ROW >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::_irow_< ROW >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::internal_< ROW, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::internal_< ROW, library_sm >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::a_internal_< ROW, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::a_internal_< ROW, library_sm >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::g_internal_< ROW, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::g_internal_< ROW, library_sm >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::_internal_< ROW, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::_internal_< ROW, library_sm >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::frow< T1, Evt >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::frow< T1, Evt >::replace_event< NewEvent >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< Tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< g_row_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< a_row_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< _row_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< row_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< g_irow_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< a_irow_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< irow_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< _irow_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< sm_a_i_row_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< sm_g_i_row_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< sm_i_row_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_backend_stt< sm__i_row_tag, Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::make_row_tag< Transition, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::create_real_stt< BaseType, stt_simulated >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::add_forwarding_row_helper< Table, Intermediate, StateType >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::get_internal_transition_table< StateType, IsComposite >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::get_internal_transition_table< StateType,::boost::mpl::false_ >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::extend_table< Composite >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::serialize_state< Archive >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::get_state_id_helper
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::init_states
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::update_state
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::handle_defer_helper< StateType, Enable >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::handle_defer_helper< StateType, typename enable_if< typename::boost::msm::back::has_fsm_deferred_events< StateType >::type, int >::type >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::handle_eventless_transitions_helper< StateType, Enable >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::handle_eventless_transitions_helper< StateType, typename enable_if< typename::boost::msm::back::has_fsm_eventless_transition< StateType >::type >::type >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::process_fsm_internal_table< Event >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::region_processing_helper< StateType, Enable >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::region_processing_helper< StateType, typename::boost::enable_if< ::boost::mpl::is_sequence< typename StateType::initial_state > >::type >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::find_region_id< StateType >::In< region, Dummy >
 
struct  boost::msm::back::state_machine< A0, A1, A2, A3, A4 >::find_region_id< StateType >::In<-1, Dummy >
 

Namespaces

 boost
 Duration formatting facet for input.
 
 boost::msm
 
 boost::msm::back
 

Macros

#define BOOST_MSM_CONSTRUCTOR_ARG_SIZE   5
 
#define MSM_VISITOR_HELPER_EXECUTE_SUB(z, n, unused)   ARG ## n vis ## n
 
#define MSM_VISITOR_HELPER_EXECUTE(z, n, unused)
 
#define MSM_VISIT_STATE_SUB(z, n, unused)   ARG ## n vis ## n
 
#define MSM_VISIT_STATE_EXECUTE(z, n, unused)
 
#define MSM_CONSTRUCTOR_HELPER_EXECUTE_SUB(z, n, unused)   ARG ## n t ## n
 
#define MSM_CONSTRUCTOR_HELPER_EXECUTE(z, n, unused)
 
#define MSM_COMPOSITE_ACCEPT_SUB(z, n, unused)   ARG ## n vis ## n
 
#define MSM_COMPOSITE_ACCEPT_SUB2(z, n, unused)   boost::ref( vis ## n )
 
#define MSM_COMPOSITE_ACCEPT_EXECUTE(z, n, unused)
 
#define MSM_VISITOR_ARGS_SUB(z, n, unused)   BOOST_PP_CAT(_,BOOST_PP_ADD(n,1))
 
#define MSM_VISITOR_ARGS_TYPEDEF_SUB(z, n, unused)   typename StateType::accept_sig::argument ## n
 
#define MSM_VISITOR_ARGS_EXECUTE(z, n, unused)
 

Typedefs

typedef
::boost::parameter::parameters
< ::boost::parameter::required
< ::boost::msm::back::tag::front_end >
,::boost::parameter::optional
< ::boost::parameter::deduced
< ::boost::msm::back::tag::history_policy >
, has_history_policy
< ::boost::mpl::_ >
>,::boost::parameter::optional
< ::boost::parameter::deduced
< ::boost::msm::back::tag::compile_policy >
, has_compile_policy
< ::boost::mpl::_ >
>,::boost::parameter::optional
< ::boost::parameter::deduced
< ::boost::msm::back::tag::fsm_check_policy >
, has_fsm_check
< ::boost::mpl::_ >
>,::boost::parameter::optional
< ::boost::parameter::deduced
< ::boost::msm::back::tag::queue_container_policy >
, has_queue_container_policy
< ::boost::mpl::_ > >> 
boost::msm::back::state_machine_signature
 

Macro Definition Documentation

#define BOOST_MSM_CONSTRUCTOR_ARG_SIZE   5
#define MSM_COMPOSITE_ACCEPT_EXECUTE (   z,
  n,
  unused 
)
Value:
template <BOOST_PP_ENUM_PARAMS(n, class ARG)> \
void composite_accept(BOOST_PP_ENUM(n, MSM_COMPOSITE_ACCEPT_SUB, ~ ) ) \
{ \
this->accept(BOOST_PP_ENUM_PARAMS(n,vis)); \
this->visit_current_states(BOOST_PP_ENUM(n,MSM_COMPOSITE_ACCEPT_SUB2, ~)); \
}
#define MSM_COMPOSITE_ACCEPT_SUB(z, n, unused)
Definition: state_machine.hpp:2062
void
Definition: is_convertible.hpp:460
#define MSM_COMPOSITE_ACCEPT_SUB2(z, n, unused)
Definition: state_machine.hpp:2063
#define n
Definition: register_functions_iterate.hpp:7
#define BOOST_PP_ENUM
Definition: enum.hpp:32
#define BOOST_PP_ENUM_PARAMS(count, param)
Definition: enum_params.hpp:26
return * this
Definition: gmp.hpp:1779
#define MSM_COMPOSITE_ACCEPT_SUB (   z,
  n,
  unused 
)    ARG ## n vis ## n
#define MSM_COMPOSITE_ACCEPT_SUB2 (   z,
  n,
  unused 
)    boost::ref( vis ## n )
#define MSM_CONSTRUCTOR_HELPER_EXECUTE (   z,
  n,
  unused 
)
#define MSM_CONSTRUCTOR_HELPER_EXECUTE_SUB (   z,
  n,
  unused 
)    ARG ## n t ## n
#define MSM_VISIT_STATE_EXECUTE (   z,
  n,
  unused 
)
Value:
template <BOOST_PP_ENUM_PARAMS(n, class ARG)> \
void visit_current_states(BOOST_PP_ENUM(n, MSM_VISIT_STATE_SUB, ~ ) ) \
{ \
for (int i=0; i<nr_regions::value;++i) \
{ \
m_visitors.execute(m_states[i],BOOST_PP_ENUM_PARAMS(n,vis)); \
} \
}
void
Definition: is_convertible.hpp:460
#define n
Definition: register_functions_iterate.hpp:7
#define MSM_VISIT_STATE_SUB(z, n, unused)
Definition: state_machine.hpp:1521
#define BOOST_PP_ENUM
Definition: enum.hpp:32
typed_value< T > * value()
Creates a typed_value instance.
for(;it!=topo_order.rend();++it,++n)
Definition: transitive_reduction.hpp:67
#define BOOST_PP_ENUM_PARAMS(count, param)
Definition: enum_params.hpp:26
unsigned i
Definition: bitwise.hpp:313
#define MSM_VISIT_STATE_SUB (   z,
  n,
  unused 
)    ARG ## n vis ## n
#define MSM_VISITOR_ARGS_EXECUTE (   z,
  n,
  unused 
)
Value:
template <class StateType> \
struct visitor_args<StateType,n> \
{ \
template <class State> \
static typename enable_if_c<!is_composite_state<State>::value,void >::type \
helper (library_sm* sm, \
int id,StateType& astate) \
{ \
sm->m_visitors.insert(id, boost::bind(&StateType::accept, \
} \
template <class State> \
static typename enable_if_c<is_composite_state<State>::value,void >::type \
helper (library_sm* sm, \
int id,StateType& astate) \
{ \
void (StateType::*caccept)(BOOST_PP_ENUM(n, MSM_VISITOR_ARGS_TYPEDEF_SUB, ~ ) ) \
= &StateType::composite_accept; \
sm->m_visitors.insert(id, boost::bind(caccept, \
} \
};
void
Definition: is_convertible.hpp:460
#define MSM_VISITOR_ARGS_SUB(z, n, unused)
Definition: state_machine.hpp:2215
#define n
Definition: register_functions_iterate.hpp:7
#define BOOST_PP_COMMA_IF(cond)
Definition: comma_if.hpp:27
void accept(V &v) const
Definition: bind_template.hpp:326
BOOST_FORCEINLINE reference_wrapper< T > BOOST_REF_CONST ref(T &t)
Definition: ref.hpp:131
#define MSM_VISITOR_ARGS_TYPEDEF_SUB(z, n, unused)
Definition: state_machine.hpp:2216
_bi::bind_t< R, F, _bi::list0 > bind(F f)
Definition: bind.hpp:1298
#define BOOST_PP_ENUM
Definition: enum.hpp:32
typed_value< T > * value()
Creates a typed_value instance.
#define MSM_VISITOR_ARGS_SUB (   z,
  n,
  unused 
)    BOOST_PP_CAT(_,BOOST_PP_ADD(n,1))
#define MSM_VISITOR_ARGS_TYPEDEF_SUB (   z,
  n,
  unused 
)    typename StateType::accept_sig::argument ## n
#define MSM_VISITOR_HELPER_EXECUTE (   z,
  n,
  unused 
)
Value:
template <BOOST_PP_ENUM_PARAMS(n, class ARG)> \
{ \
m_state_visitors[index](BOOST_PP_ENUM_PARAMS(n,vis)); \
}
void
Definition: is_convertible.hpp:460
#define n
Definition: register_functions_iterate.hpp:7
#define BOOST_PP_COMMA_IF(cond)
Definition: comma_if.hpp:27
boost::detail::multi_array::index index
Definition: base.hpp:53
#define BOOST_PP_ENUM
Definition: enum.hpp:32
#define MSM_VISITOR_HELPER_EXECUTE_SUB(z, n, unused)
Definition: state_machine.hpp:248
#define BOOST_PP_ENUM_PARAMS(count, param)
Definition: enum_params.hpp:26
#define MSM_VISITOR_HELPER_EXECUTE_SUB (   z,
  n,
  unused 
)    ARG ## n vis ## n