ossrv_pub/boost_apis/boost/mpl/aux_/shift_op.hpp
changeset 0 e4d67989cc36
equal deleted inserted replaced
-1:000000000000 0:e4d67989cc36
       
     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 // $Source: /cvsroot/boost/boost/boost/mpl/aux_/shift_op.hpp,v $
       
    13 // $Date: 2004/09/07 08:51:32 $
       
    14 // $Revision: 1.4 $
       
    15 
       
    16 #if !defined(BOOST_MPL_PREPROCESSING_MODE)
       
    17 #   include <boost/mpl/integral_c.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 #if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
       
    45 namespace aux {
       
    46 template< typename T, typename Shift, T n, Shift s >
       
    47 struct BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)
       
    48 {
       
    49     BOOST_STATIC_CONSTANT(T, value = (n AUX778076_OP_TOKEN s));
       
    50     typedef integral_c<T,value> type;
       
    51 };
       
    52 }
       
    53 #endif
       
    54 
       
    55 template<>
       
    56 struct AUX778076_OP_IMPL_NAME<integral_c_tag,integral_c_tag>
       
    57 {
       
    58     template< typename N, typename S > struct apply
       
    59 #if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
       
    60         : integral_c<
       
    61               typename N::value_type
       
    62             , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
       
    63                   AUX778076_OP_TOKEN BOOST_MPL_AUX_VALUE_WKND(S)::value
       
    64                 )
       
    65             >
       
    66 #else
       
    67         : aux::BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)<
       
    68               typename N::value_type
       
    69             , typename S::value_type
       
    70             , N::value
       
    71             , S::value
       
    72             >::type
       
    73 #endif
       
    74     {
       
    75     };
       
    76 };
       
    77 
       
    78 }}
       
    79 
       
    80 #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
       
    81 
       
    82 #undef AUX778076_OP_TAG_NAME
       
    83 #undef AUX778076_OP_IMPL_NAME
       
    84 #undef AUX778076_OP_ARITY
       
    85 #undef AUX778076_OP_PREFIX
       
    86 #undef AUX778076_OP_NAME
       
    87 #undef AUX778076_OP_TOKEN