epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/plus.hpp
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
     1.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/plus.hpp	Wed Mar 31 12:27:01 2010 +0100
     1.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/plus.hpp	Wed Mar 31 12:33:34 2010 +0100
     1.3 @@ -1,6 +1,3 @@
     1.4 -
     1.5 -#ifndef BOOST_MPL_PLUS_HPP_INCLUDED
     1.6 -#define BOOST_MPL_PLUS_HPP_INCLUDED
     1.7  
     1.8  // Copyright Aleksey Gurtovoy 2000-2004
     1.9  //
    1.10 @@ -8,14 +5,137 @@
    1.11  // (See accompanying file LICENSE_1_0.txt or copy at 
    1.12  // http://www.boost.org/LICENSE_1_0.txt)
    1.13  //
    1.14 -// See http://www.boost.org/libs/mpl for documentation.
    1.15  
    1.16 -// $Source: /cvsroot/boost/boost/boost/mpl/plus.hpp,v $
    1.17 -// $Date: 2004/09/02 15:40:42 $
    1.18 -// $Revision: 1.4 $
    1.19 +// Preprocessed version of "boost/mpl/plus.hpp" header
    1.20 +// -- DO NOT modify by hand!
    1.21  
    1.22 -#define AUX778076_OP_NAME plus
    1.23 -#define AUX778076_OP_TOKEN +
    1.24 -#include <boost/mpl/aux_/arithmetic_op.hpp>
    1.25 +namespace boost { namespace mpl {
    1.26  
    1.27 -#endif // BOOST_MPL_PLUS_HPP_INCLUDED
    1.28 +template<
    1.29 +      typename Tag1
    1.30 +    , typename Tag2
    1.31 +    >
    1.32 +struct plus_impl
    1.33 +    : if_c<
    1.34 +          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
    1.35 +              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
    1.36 +            )
    1.37 +
    1.38 +        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
    1.39 +        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
    1.40 +        >::type
    1.41 +{
    1.42 +};
    1.43 +
    1.44 +/// for Digital Mars C++/compilers with no CTPS/TTP support
    1.45 +template<> struct plus_impl< na,na >
    1.46 +{
    1.47 +    template< typename U1, typename U2 > struct apply
    1.48 +    {
    1.49 +        typedef apply type;
    1.50 +        BOOST_STATIC_CONSTANT(int, value  = 0);
    1.51 +    };
    1.52 +};
    1.53 +
    1.54 +template< typename Tag > struct plus_impl< na,Tag >
    1.55 +{
    1.56 +    template< typename U1, typename U2 > struct apply
    1.57 +    {
    1.58 +        typedef apply type;
    1.59 +        BOOST_STATIC_CONSTANT(int, value  = 0);
    1.60 +    };
    1.61 +};
    1.62 +
    1.63 +template< typename Tag > struct plus_impl< Tag,na >
    1.64 +{
    1.65 +    template< typename U1, typename U2 > struct apply
    1.66 +    {
    1.67 +        typedef apply type;
    1.68 +        BOOST_STATIC_CONSTANT(int, value  = 0);
    1.69 +    };
    1.70 +};
    1.71 +
    1.72 +template< typename T > struct plus_tag
    1.73 +{
    1.74 +    typedef typename T::tag type;
    1.75 +};
    1.76 +
    1.77 +template<
    1.78 +      typename BOOST_MPL_AUX_NA_PARAM(N1)
    1.79 +    , typename BOOST_MPL_AUX_NA_PARAM(N2)
    1.80 +    , typename N3 = na, typename N4 = na, typename N5 = na
    1.81 +    >
    1.82 +struct plus
    1.83 +    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
    1.84 +{
    1.85 +};
    1.86 +
    1.87 +template<
    1.88 +      typename N1, typename N2, typename N3, typename N4
    1.89 +    >
    1.90 +struct plus< N1,N2,N3,N4,na >
    1.91 +
    1.92 +    : plus< plus< plus< N1,N2 >, N3>, N4>
    1.93 +{
    1.94 +    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
    1.95 +          5
    1.96 +        , plus
    1.97 +        , ( N1, N2, N3, N4, na )
    1.98 +        )
    1.99 +};
   1.100 +
   1.101 +template<
   1.102 +      typename N1, typename N2, typename N3
   1.103 +    >
   1.104 +struct plus< N1,N2,N3,na,na >
   1.105 +
   1.106 +    : plus< plus< N1,N2 >, N3>
   1.107 +{
   1.108 +    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
   1.109 +          5
   1.110 +        , plus
   1.111 +        , ( N1, N2, N3, na, na )
   1.112 +        )
   1.113 +};
   1.114 +
   1.115 +template<
   1.116 +      typename N1, typename N2
   1.117 +    >
   1.118 +struct plus< N1,N2,na,na,na >
   1.119 +    : plus_impl<
   1.120 +          typename plus_tag<N1>::type
   1.121 +        , typename plus_tag<N2>::type
   1.122 +        >::template apply< N1,N2 >::type
   1.123 +{
   1.124 +    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
   1.125 +          5
   1.126 +        , plus
   1.127 +        , ( N1, N2, na, na, na )
   1.128 +        )
   1.129 +
   1.130 +};
   1.131 +
   1.132 +BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
   1.133 +
   1.134 +}}
   1.135 +
   1.136 +namespace boost { namespace mpl {
   1.137 +template<>
   1.138 +struct plus_impl< integral_c_tag,integral_c_tag >
   1.139 +{
   1.140 +    template< typename N1, typename N2 > struct apply
   1.141 +
   1.142 +        : integral_c<
   1.143 +              typename aux::largest_int<
   1.144 +                  typename N1::value_type
   1.145 +                , typename N2::value_type
   1.146 +                >::type
   1.147 +            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
   1.148 +                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
   1.149 +                )
   1.150 +            >
   1.151 +    {
   1.152 +    };
   1.153 +};
   1.154 +
   1.155 +}}