/////////////////////////////////////////////////////////////////////////////// // quant_traits.hpp // // Copyright 2004 Eric Niebler. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_XPRESSIVE_DETAIL_STATIC_PRODUCTIONS_QUANT_TRAITS_HPP_EAN_10_04_2005 #define BOOST_XPRESSIVE_DETAIL_STATIC_PRODUCTIONS_QUANT_TRAITS_HPP_EAN_10_04_2005 #include #include #include #include #include #include #ifdef BOOST_MSVC # pragma warning(push) # pragma warning(disable: 4307) // '+' : integral constant overflow #endif namespace boost { namespace xpressive { namespace detail { /////////////////////////////////////////////////////////////////////////////// // generic_quant_tag template struct generic_quant_tag : proto::unary_tag { typedef mpl::integral_c min_type; typedef mpl::integral_c max_type; }; /////////////////////////////////////////////////////////////////////////////// // min_type / max_type template struct min_type : Tag::min_type {}; template<> struct min_type : mpl::integral_c {}; template<> struct min_type : mpl::integral_c {}; template<> struct min_type : mpl::integral_c {}; template struct max_type : Tag::max_type {}; template<> struct max_type : mpl::integral_c {}; template<> struct max_type : mpl::integral_c {}; template<> struct max_type : mpl::integral_c {}; struct use_simple_repeat_predicate { template struct apply : use_simple_repeat::type> { }; }; /////////////////////////////////////////////////////////////////////////////// // is_greedy_quant template struct is_greedy_quant : mpl::false_ { }; template struct is_greedy_quant > : mpl::or_ < is_same , is_same , is_same > { }; template struct is_greedy_quant > > : mpl::true_ { }; }}} #ifdef BOOST_MSVC # pragma warning(pop) #endif #endif