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