File indexing completed on 2025-12-16 10:09:33
0001
0002
0003
0004
0005
0006
0007 #if !defined(BOOST_SPIRIT_HAS_SEMANTIC_ACTION_SEP_20_2009_0626PM)
0008 #define BOOST_SPIRIT_HAS_SEMANTIC_ACTION_SEP_20_2009_0626PM
0009
0010 #if defined(_MSC_VER)
0011 #pragma once
0012 #endif
0013
0014 #include <boost/mpl/bool.hpp>
0015 #include <boost/mpl/or.hpp>
0016 #include <boost/mpl/not.hpp>
0017 #include <boost/mpl/find_if.hpp>
0018 #include <boost/type_traits/is_same.hpp>
0019
0020 namespace boost { namespace spirit { namespace traits
0021 {
0022
0023 template <typename T, typename Enable = void>
0024 struct has_semantic_action
0025 : mpl::false_ {};
0026
0027 template <typename Subject>
0028 struct unary_has_semantic_action
0029 : has_semantic_action<Subject> {};
0030
0031 template <typename Left, typename Right>
0032 struct binary_has_semantic_action
0033 : mpl::or_<has_semantic_action<Left>, has_semantic_action<Right> > {};
0034
0035 template <typename Elements>
0036 struct nary_has_semantic_action
0037 : mpl::not_<
0038 is_same<
0039 typename mpl::find_if<
0040 Elements, has_semantic_action<mpl::_>
0041 >::type
0042 , typename mpl::end<Elements>::type
0043 >
0044 > {};
0045 }}}
0046
0047 #endif