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