]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/mpl/aux_/shift_op.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
8a6561ca3114c68f382c10266461dc51b755d9f0
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / mpl / aux_ / shift_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: shift_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/integral_c.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 #if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)\r
45 namespace aux {\r
46 template< typename T, typename Shift, T n, Shift s >\r
47 struct BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)\r
48 {\r
49     BOOST_STATIC_CONSTANT(T, value = (n AUX778076_OP_TOKEN s));\r
50     typedef integral_c<T,value> type;\r
51 };\r
52 }\r
53 #endif\r
54 \r
55 template<>\r
56 struct AUX778076_OP_IMPL_NAME<integral_c_tag,integral_c_tag>\r
57 {\r
58     template< typename N, typename S > struct apply\r
59 #if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)\r
60         : integral_c<\r
61               typename N::value_type\r
62             , ( BOOST_MPL_AUX_VALUE_WKND(N)::value\r
63                   AUX778076_OP_TOKEN BOOST_MPL_AUX_VALUE_WKND(S)::value\r
64                 )\r
65             >\r
66 #else\r
67         : aux::BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)<\r
68               typename N::value_type\r
69             , typename S::value_type\r
70             , N::value\r
71             , S::value\r
72             >::type\r
73 #endif\r
74     {\r
75     };\r
76 };\r
77 \r
78 }}\r
79 \r
80 #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS\r
81 \r
82 #undef AUX778076_OP_TAG_NAME\r
83 #undef AUX778076_OP_IMPL_NAME\r
84 #undef AUX778076_OP_ARITY\r
85 #undef AUX778076_OP_PREFIX\r
86 #undef AUX778076_OP_NAME\r
87 #undef AUX778076_OP_TOKEN\r