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