~ubuntu-branches/ubuntu/saucy/merkaartor/saucy

« back to all changes in this revision

Viewing changes to include/builtin-boost/boost/mpl/aux_/preprocessed/plain/minus.hpp

Tags: upstream-0.15.3+svn20934
ImportĀ upstreamĀ versionĀ 0.15.3+svn20934

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
// Copyright Aleksey Gurtovoy 2000-2004
 
3
//
 
4
// Distributed under the Boost Software License, Version 1.0. 
 
5
// (See accompanying file LICENSE_1_0.txt or copy at 
 
6
// http://www.boost.org/LICENSE_1_0.txt)
 
7
//
 
8
 
 
9
// Preprocessed version of "boost/mpl/minus.hpp" header
 
10
// -- DO NOT modify by hand!
 
11
 
 
12
namespace boost { namespace mpl {
 
13
 
 
14
template<
 
15
      typename Tag1
 
16
    , typename Tag2
 
17
    >
 
18
struct minus_impl
 
19
    : if_c<
 
20
          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
 
21
              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
 
22
            )
 
23
 
 
24
        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
 
25
        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
 
26
        >::type
 
27
{
 
28
};
 
29
 
 
30
/// for Digital Mars C++/compilers with no CTPS/TTP support
 
31
template<> struct minus_impl< na,na >
 
32
{
 
33
    template< typename U1, typename U2 > struct apply
 
34
    {
 
35
        typedef apply type;
 
36
        BOOST_STATIC_CONSTANT(int, value  = 0);
 
37
    };
 
38
};
 
39
 
 
40
template< typename Tag > struct minus_impl< na,Tag >
 
41
{
 
42
    template< typename U1, typename U2 > struct apply
 
43
    {
 
44
        typedef apply type;
 
45
        BOOST_STATIC_CONSTANT(int, value  = 0);
 
46
    };
 
47
};
 
48
 
 
49
template< typename Tag > struct minus_impl< Tag,na >
 
50
{
 
51
    template< typename U1, typename U2 > struct apply
 
52
    {
 
53
        typedef apply type;
 
54
        BOOST_STATIC_CONSTANT(int, value  = 0);
 
55
    };
 
56
};
 
57
 
 
58
template< typename T > struct minus_tag
 
59
{
 
60
    typedef typename T::tag type;
 
61
};
 
62
 
 
63
template<
 
64
      typename BOOST_MPL_AUX_NA_PARAM(N1)
 
65
    , typename BOOST_MPL_AUX_NA_PARAM(N2)
 
66
    , typename N3 = na, typename N4 = na, typename N5 = na
 
67
    >
 
68
struct minus
 
69
    : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
 
70
{
 
71
};
 
72
 
 
73
template<
 
74
      typename N1, typename N2, typename N3, typename N4
 
75
    >
 
76
struct minus< N1,N2,N3,N4,na >
 
77
 
 
78
    : minus< minus< minus< N1,N2 >, N3>, N4>
 
79
{
 
80
    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
 
81
          5
 
82
        , minus
 
83
        , ( N1, N2, N3, N4, na )
 
84
        )
 
85
};
 
86
 
 
87
template<
 
88
      typename N1, typename N2, typename N3
 
89
    >
 
90
struct minus< N1,N2,N3,na,na >
 
91
 
 
92
    : minus< minus< N1,N2 >, N3>
 
93
{
 
94
    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
 
95
          5
 
96
        , minus
 
97
        , ( N1, N2, N3, na, na )
 
98
        )
 
99
};
 
100
 
 
101
template<
 
102
      typename N1, typename N2
 
103
    >
 
104
struct minus< N1,N2,na,na,na >
 
105
    : minus_impl<
 
106
          typename minus_tag<N1>::type
 
107
        , typename minus_tag<N2>::type
 
108
        >::template apply< N1,N2 >::type
 
109
{
 
110
    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
 
111
          5
 
112
        , minus
 
113
        , ( N1, N2, na, na, na )
 
114
        )
 
115
 
 
116
};
 
117
 
 
118
BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
119
 
 
120
}}
 
121
 
 
122
namespace boost { namespace mpl {
 
123
template<>
 
124
struct minus_impl< integral_c_tag,integral_c_tag >
 
125
{
 
126
    template< typename N1, typename N2 > struct apply
 
127
 
 
128
        : integral_c<
 
129
              typename aux::largest_int<
 
130
                  typename N1::value_type
 
131
                , typename N2::value_type
 
132
                >::type
 
133
            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
 
134
                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
 
135
                )
 
136
            >
 
137
    {
 
138
    };
 
139
};
 
140
 
 
141
}}