Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/msm/front/internal_row.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
1 // Copyright 2008 Christophe Henry | |
2 // henry UNDERSCORE christophe AT hotmail DOT com | |
3 // This is an extended version of the state machine available in the boost::mpl library | |
4 // Distributed under the same license as the original. | |
5 // Copyright for the original version: | |
6 // Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed | |
7 // under the Boost Software License, Version 1.0. (See accompanying | |
8 // file LICENSE_1_0.txt or copy at | |
9 // http://www.boost.org/LICENSE_1_0.txt) | |
10 | |
11 #ifndef BOOST_MSM_INTERNAL_ROW_HPP | |
12 #define BOOST_MSM_INTERNAL_ROW_HPP | |
13 | |
14 #include <boost/type_traits/is_base_of.hpp> | |
15 #include <boost/mpl/bool.hpp> | |
16 #include <boost/fusion/include/at_key.hpp> | |
17 #include <boost/msm/back/common_types.hpp> | |
18 #include <boost/msm/row_tags.hpp> | |
19 #include <boost/msm/front/detail/row2_helper.hpp> | |
20 | |
21 namespace boost { namespace msm { namespace front | |
22 { | |
23 template< | |
24 class Event | |
25 , typename CalledForAction | |
26 , void (CalledForAction::*action)(Event const&) | |
27 > | |
28 struct a_internal | |
29 { | |
30 typedef sm_a_i_row_tag row_type_tag; | |
31 typedef Event Evt; | |
32 template <class FSM,class SourceState,class TargetState,class AllStates> | |
33 static ::boost::msm::back::HandledEnum action_call(FSM& fsm,Event const& evt,SourceState& src,TargetState& tgt, | |
34 AllStates& all_states) | |
35 { | |
36 // in this front-end, we don't need to know source and target states | |
37 ::boost::msm::front::detail::row2_action_helper<CalledForAction,Event,action>::call_helper | |
38 (fsm,evt,src,tgt,all_states, | |
39 ::boost::mpl::bool_< ::boost::is_base_of<CalledForAction,FSM>::type::value>()); | |
40 return ::boost::msm::back::HANDLED_TRUE; | |
41 } | |
42 }; | |
43 | |
44 template< | |
45 class Event | |
46 , typename CalledForAction | |
47 , void (CalledForAction::*action)(Event const&) | |
48 , typename CalledForGuard | |
49 , bool (CalledForGuard::*guard)(Event const&) | |
50 > | |
51 struct internal | |
52 { | |
53 typedef sm_i_row_tag row_type_tag; | |
54 typedef Event Evt; | |
55 template <class FSM,class SourceState,class TargetState,class AllStates> | |
56 static ::boost::msm::back::HandledEnum action_call(FSM& fsm,Event const& evt,SourceState& src,TargetState& tgt, | |
57 AllStates& all_states) | |
58 { | |
59 // in this front-end, we don't need to know source and target states | |
60 ::boost::msm::front::detail::row2_action_helper<CalledForAction,Event,action>::call_helper | |
61 (fsm,evt,src,tgt,all_states, | |
62 ::boost::mpl::bool_< ::boost::is_base_of<CalledForAction,FSM>::type::value>()); | |
63 return ::boost::msm::back::HANDLED_TRUE; | |
64 } | |
65 template <class FSM,class SourceState,class TargetState,class AllStates> | |
66 static bool guard_call(FSM& fsm,Event const& evt,SourceState& src,TargetState& tgt, | |
67 AllStates& all_states) | |
68 { | |
69 // in this front-end, we don't need to know source and target states | |
70 return ::boost::msm::front::detail::row2_guard_helper<CalledForGuard,Event,guard>::call_helper | |
71 (fsm,evt,src,tgt,all_states, | |
72 ::boost::mpl::bool_< ::boost::is_base_of<CalledForGuard,FSM>::type::value>()); | |
73 } | |
74 }; | |
75 template< | |
76 class Event | |
77 , typename CalledForGuard | |
78 , bool (CalledForGuard::*guard)(Event const&) | |
79 > | |
80 struct g_internal | |
81 { | |
82 typedef sm_g_i_row_tag row_type_tag; | |
83 typedef Event Evt; | |
84 template <class FSM,class SourceState,class TargetState,class AllStates> | |
85 static bool guard_call(FSM& fsm,Event const& evt,SourceState& src,TargetState& tgt, | |
86 AllStates& all_states) | |
87 { | |
88 // in this front-end, we don't need to know source and target states | |
89 return ::boost::msm::front::detail::row2_guard_helper<CalledForGuard,Event,guard>::call_helper | |
90 (fsm,evt,src,tgt,all_states, | |
91 ::boost::mpl::bool_< ::boost::is_base_of<CalledForGuard,FSM>::type::value>()); | |
92 } | |
93 }; | |
94 template< | |
95 class Event | |
96 > | |
97 struct _internal | |
98 { | |
99 typedef sm__i_row_tag row_type_tag; | |
100 typedef Event Evt; | |
101 }; | |
102 }}} | |
103 | |
104 #endif //BOOST_MSM_INTERNAL_ROW_HPP | |
105 |