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_FRONT_EUML_TYPEOF_H
12 #define BOOST_MSM_FRONT_EUML_TYPEOF_H
13 
14 #include <boost/typeof/typeof.hpp>
15 
16 
17 #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
18 
19 BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::mpl::vector0, 1)
20 BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::mpl::vector50, 50)
21 BOOST_TYPEOF_REGISTER_TYPE(::boost::mpl::na)
22 BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::fusion::vector, 10)
23 BOOST_TYPEOF_REGISTER_TYPE(::boost::fusion::void_)
24 BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::mpl::vector, 20)
25 BOOST_TYPEOF_REGISTER_TYPE(std::string)
26 BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::mpl::size_t, (unsigned int))
27 
28 BOOST_TYPEOF_REGISTER_TYPE(::boost::msm::front::default_base_state)
29 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::detail::inherit_attributes, 1)
30 
31 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::func_state, 6)
32 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::entry_func_state, (int)(typename)(typename)(typename)(typename)(typename)(typename))
33 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::explicit_entry_func_state, (int)(typename)(typename)(typename)(typename)(typename)(typename))
34 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::exit_func_state, 7)
35 
36 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::define_flag, 1)
37 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::attribute, 1)
38 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::define_defer, 1)
39 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::define_init, 1)
40 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Source_, (int))
41 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Target_, (int))
42 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Current_, (int))
43 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Event_, (int))
44 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::State_Attribute_, (typename)(int))
45 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::State_Machine_, (int))
46 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::none)
47 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::Row, 5)
48 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::ActionSequence_, 1)
49 
50 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::NoAction)
51 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::And_, 2)
52 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Or_, 2)
53 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Not_, 1)
54 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::If_Else_, 3)
55 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::If)
56 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::If_Then_, 2)
57 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::If_Then)
58 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::While_Do_, 2)
59 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::While_)
60 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Do_While_, 2)
61 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Do_While_)
62 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::For_Loop_, 4)
63 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::For_Loop_)
64 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Process_, 1)
65 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Process_)
66 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Process2_, 2)
67 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Process2_)
68 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Get_Flag_, 1)
69 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Get_Flag_)
70 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Begin_, 1)
71 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Begin_Helper)
72 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::End_, 1)
73 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::End_Helper)
74 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Deref_, 1)
75 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Deref_Helper)
76 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Push_Back_, 2)
77 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Push_Back_Helper)
78 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Clear_, 1)
79 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Clear_Helper)
80 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Empty_, 1)
81 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Empty_Helper)
82 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Find_, 2)
83 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Find_Helper)
84 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Npos_, 1)
85 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::False_)
86 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::True_)
87 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Int_, (int))
88 BOOST_TYPEOF_REGISTER_TYPE(boost::msm::front::euml::Int)
89 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Pre_inc_, 1)
90 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Pre_dec_, 1)
91 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Post_inc_, 1)
92 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Post_dec_, 1)
93 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Plus_, 2)
94 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Minus_, 2)
95 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Multiplies_, 2)
96 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Divides_, 2)
97 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Modulus_, 2)
98 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Bitwise_And_, 2)
99 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Bitwise_Or_, 2)
100 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Bitwise_Xor_, 2)
101 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Subscript_, 2)
102 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Plus_Assign_, 2)
103 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Minus_Assign_, 2)
104 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Multiplies_Assign_, 2)
105 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Divides_Assign_, 2)
106 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Modulus_Assign_, 2)
107 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::ShiftLeft_Assign_, 2)
108 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::ShiftRight_Assign_, 2)
109 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::ShiftLeft_, 2)
110 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::ShiftRight_, 2)
111 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Assign_, 2)
112 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Unary_Plus_, 1)
113 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Unary_Minus_, 1)
114 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Less_, 2)
115 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::LessEqual_, 2)
116 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::Greater_, 2)
117 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::GreaterEqual_, 2)
118 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::EqualTo_, 2)
119 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::msm::front::euml::NotEqualTo_, 2)
120 
121 #endif //BOOST_MSM_FRONT_EUML_TYPEOF_H
122