~twpol/dcplusplus/trunk

« back to all changes in this revision

Viewing changes to boost/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp

  • Committer: James Ross
  • Date: 2010-07-05 00:03:18 UTC
  • mfrom: (1524.1.650 dcplusplus)
  • Revision ID: silver@warwickcompsoc.co.uk-20100705000318-awwqm8ocpp5m47yz
Merged to trunk.

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_left.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_left_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_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
26
 
        , aux::cast1st_impl< shift_left_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_left_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_left_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_left_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_left_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_left
69
 
 
70
 
    : shift_left_impl<
71
 
          typename shift_left_tag<N1>::type
72
 
        , typename shift_left_tag<N2>::type
73
 
        >::template apply< N1,N2 >::type
74
 
{
75
 
    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
76
 
 
77
 
};
78
 
 
79
 
BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
80
 
 
81
 
}}
82
 
 
83
 
namespace boost { namespace mpl {
84
 
template<>
85
 
struct shift_left_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
 
}}
 
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_left.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_left_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_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
 
26
        , aux::cast1st_impl< shift_left_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_left_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_left_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_left_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_left_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_left
 
69
 
 
70
    : shift_left_impl<
 
71
          typename shift_left_tag<N1>::type
 
72
        , typename shift_left_tag<N2>::type
 
73
        >::template apply< N1,N2 >::type
 
74
{
 
75
    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
76
 
 
77
};
 
78
 
 
79
BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
80
 
 
81
}}
 
82
 
 
83
namespace boost { namespace mpl {
 
84
template<>
 
85
struct shift_left_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
}}