williamr@2: williamr@2: // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION williamr@2: williamr@2: // Copyright Aleksey Gurtovoy 2000-2004 williamr@2: // williamr@2: // Distributed under the Boost Software License, Version 1.0. williamr@2: // (See accompanying file LICENSE_1_0.txt or copy at williamr@2: // http://www.boost.org/LICENSE_1_0.txt) williamr@2: // williamr@2: // See http://www.boost.org/libs/mpl for documentation. williamr@2: williamr@2: // $Source: /cvsroot/boost/boost/boost/mpl/aux_/comparison_op.hpp,v $ williamr@2: // $Date: 2004/09/07 08:51:32 $ williamr@2: // $Revision: 1.4 $ williamr@2: williamr@2: #if !defined(BOOST_MPL_PREPROCESSING_MODE) williamr@2: # include williamr@2: # include williamr@2: #endif williamr@2: williamr@2: #if !defined(AUX778076_OP_PREFIX) williamr@2: # define AUX778076_OP_PREFIX AUX778076_OP_NAME williamr@2: #endif williamr@2: williamr@2: #define AUX778076_OP_ARITY 2 williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ williamr@2: && !defined(BOOST_MPL_PREPROCESSING_MODE) williamr@2: williamr@2: # define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp williamr@2: # include williamr@2: williamr@2: #else williamr@2: williamr@2: # include williamr@2: # include williamr@2: williamr@2: namespace boost { namespace mpl { williamr@2: williamr@2: // MSVC workaround: implement less in terms of greater williamr@2: #if 0 AUX778076_OP_TOKEN 1 && !(1 AUX778076_OP_TOKEN 0) && !(0 AUX778076_OP_TOKEN 0) williamr@2: # define AUX778076_OP(N1, N2) \ williamr@2: ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) \ williamr@2: /**/ williamr@2: #else williamr@2: # define AUX778076_OP(N1, N2) \ williamr@2: ( BOOST_MPL_AUX_VALUE_WKND(N1)::value \ williamr@2: AUX778076_OP_TOKEN BOOST_MPL_AUX_VALUE_WKND(N2)::value \ williamr@2: ) \ williamr@2: /**/ williamr@2: #endif williamr@2: williamr@2: template<> williamr@2: struct AUX778076_OP_IMPL_NAME williamr@2: { williamr@2: template< typename N1, typename N2 > struct apply williamr@2: #if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC) williamr@2: : bool_< AUX778076_OP(N1, N2) > williamr@2: { williamr@2: #else williamr@2: { williamr@2: BOOST_STATIC_CONSTANT(bool, value = AUX778076_OP(N1, N2)); williamr@2: typedef bool_ type; williamr@2: #endif williamr@2: }; williamr@2: }; williamr@2: williamr@2: #undef AUX778076_OP williamr@2: williamr@2: }} williamr@2: williamr@2: #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS williamr@2: williamr@2: #undef AUX778076_OP_TAG_NAME williamr@2: #undef AUX778076_OP_IMPL_NAME williamr@2: #undef AUX778076_OP_ARITY williamr@2: #undef AUX778076_OP_PREFIX williamr@2: #undef AUX778076_OP_NAME williamr@2: #undef AUX778076_OP_TOKEN