~tsarev/boostdc/cmake

« back to all changes in this revision

Viewing changes to boost/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp

  • Committer: bigmuscle
  • Date: 2010-05-08 08:47:15 UTC
  • Revision ID: svn-v4:5fb55d53-692c-0410-a46a-e90ab66e00ee:trunk:497
removed old boost version

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
// Copyright Aleksey Gurtovoy 2000-2004
3
 
// Copyright Jaap Suter 2003
4
 
//
5
 
// Distributed under the Boost Software License, Version 1.0. 
6
 
// (See accompanying file LICENSE_1_0.txt or copy at 
7
 
// http://www.boost.org/LICENSE_1_0.txt)
8
 
//
9
 
 
10
 
// Preprocessed version of "boost/mpl/shift_right.hpp" header
11
 
// -- DO NOT modify by hand!
12
 
 
13
 
namespace boost { namespace mpl {
14
 
 
15
 
template<
16
 
      typename Tag1
17
 
    , typename Tag2
18
 
    >
19
 
struct shift_right_impl
20
 
    : if_c<
21
 
          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
22
 
              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
23
 
            )
24
 
 
25
 
        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
26
 
        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
27
 
        >::type
28
 
{
29
 
};
30
 
 
31
 
/// for Digital Mars C++/compilers with no CTPS/TTP support
32
 
template<> struct shift_right_impl< na,na >
33
 
{
34
 
    template< typename U1, typename U2 > struct apply
35
 
    {
36
 
        typedef apply type;
37
 
        BOOST_STATIC_CONSTANT(int, value  = 0);
38
 
    };
39
 
};
40
 
 
41
 
template< typename Tag > struct shift_right_impl< na,Tag >
42
 
{
43
 
    template< typename U1, typename U2 > struct apply
44
 
    {
45
 
        typedef apply type;
46
 
        BOOST_STATIC_CONSTANT(int, value  = 0);
47
 
    };
48
 
};
49
 
 
50
 
template< typename Tag > struct shift_right_impl< Tag,na >
51
 
{
52
 
    template< typename U1, typename U2 > struct apply
53
 
    {
54
 
        typedef apply type;
55
 
        BOOST_STATIC_CONSTANT(int, value  = 0);
56
 
    };
57
 
};
58
 
 
59
 
template< typename T > struct shift_right_tag
60
 
{
61
 
    typedef typename T::tag type;
62
 
};
63
 
 
64
 
template<
65
 
      typename BOOST_MPL_AUX_NA_PARAM(N1)
66
 
    , typename BOOST_MPL_AUX_NA_PARAM(N2)
67
 
    >
68
 
struct shift_right
69
 
 
70
 
    : shift_right_impl<
71
 
          typename shift_right_tag<N1>::type
72
 
        , typename shift_right_tag<N2>::type
73
 
        >::template apply< N1,N2 >::type
74
 
{
75
 
    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
76
 
 
77
 
};
78
 
 
79
 
BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
80
 
 
81
 
}}
82
 
 
83
 
namespace boost { namespace mpl {
84
 
template<>
85
 
struct shift_right_impl< integral_c_tag,integral_c_tag >
86
 
{
87
 
    template< typename N, typename S > struct apply
88
 
 
89
 
        : integral_c<
90
 
              typename N::value_type
91
 
            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
92
 
                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
93
 
                )
94
 
            >
95
 
    {
96
 
    };
97
 
};
98
 
 
99
 
}}