1 2 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION 3 4 // Copyright Aleksey Gurtovoy 2000-2004 5 // 6 // Distributed under the Boost Software License, Version 1.0. 7 // (See accompanying file LICENSE_1_0.txt or copy at 8 // http://www.boost.org/LICENSE_1_0.txt) 9 // 10 // See http://www.boost.org/libs/mpl for documentation. 11 12 // $Id: comparison_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ 13 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $ 14 // $Revision: 49267 $ 15 16 #if !defined(BOOST_MPL_PREPROCESSING_MODE) 17 # include <boost/mpl/bool.hpp> 18 # include <boost/mpl/aux_/value_wknd.hpp> 19 #endif 20 21 #if !defined(AUX778076_OP_PREFIX) 22 # define AUX778076_OP_PREFIX AUX778076_OP_NAME 23 #endif 24 25 #define AUX778076_OP_ARITY 2 26 27 #include <boost/mpl/aux_/numeric_op.hpp> 28 #include <boost/mpl/aux_/config/static_constant.hpp> 29 #include <boost/mpl/aux_/config/use_preprocessed.hpp> 30 31 #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ 32 && !defined(BOOST_MPL_PREPROCESSING_MODE) 33 34 # define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp 35 # include <boost/mpl/aux_/include_preprocessed.hpp> 36 37 #else 38 39 # include <boost/mpl/aux_/config/integral.hpp> 40 # include <boost/preprocessor/cat.hpp> 41 42 namespace boost { namespace mpl { 43 44 // MSVC workaround: implement less in terms of greater 45 #if 0 AUX778076_OP_TOKEN 1 && !(1 AUX778076_OP_TOKEN 0) && !(0 AUX778076_OP_TOKEN 0) 46 # define AUX778076_OP(N1, N2) \ 47 ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) \ 48 /**/ 49 #else 50 # define AUX778076_OP(N1, N2) \ 51 ( BOOST_MPL_AUX_VALUE_WKND(N1)::value \ 52 AUX778076_OP_TOKEN BOOST_MPL_AUX_VALUE_WKND(N2)::value \ 53 ) \ 54 /**/ 55 #endif 56 57 template<> 58 struct AUX778076_OP_IMPL_NAME<integral_c_tag,integral_c_tag> 59 { 60 template< typename N1, typename N2 > struct apply 61 #if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC) 62 : bool_< AUX778076_OP(N1, N2) > 63 { 64 #else 65 { 66 BOOST_STATIC_CONSTANT(bool, value = AUX778076_OP(N1, N2)); 67 typedef bool_<value> type; 68 #endif 69 }; 70 }; 71 72 #undef AUX778076_OP 73 74 }} 75 76 #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS 77 78 #undef AUX778076_OP_TAG_NAME 79 #undef AUX778076_OP_IMPL_NAME 80 #undef AUX778076_OP_ARITY 81 #undef AUX778076_OP_PREFIX 82 #undef AUX778076_OP_NAME 83 #undef AUX778076_OP_TOKEN 84