Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:09:33

0001 /*=============================================================================
0002     Copyright (c) 2001-2011 Hartmut Kaiser
0003 
0004     Distributed under the Boost Software License, Version 1.0. (See accompanying
0005     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
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     // finding out, whether a component contains a semantic action
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