PageRenderTime 32ms CodeModel.GetById 26ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/extlibs/Boost/include/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp

https://bitbucket.org/hugoruscitti/pilascpp
C++ Header | 134 lines | 101 code | 22 blank | 11 comment | 0 complexity | db67b2dd938195f9dac335f6d9b272bd MD5 | raw file
  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/bitor.hpp" header
 11// -- DO NOT modify by hand!
 12
 13namespace boost { namespace mpl {
 14
 15template<
 16      typename Tag1
 17    , typename Tag2
 18    >
 19struct bitor_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< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
 26        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
 27        >::type
 28{
 29};
 30
 31/// for Digital Mars C++/compilers with no CTPS/TTP support
 32template<> struct bitor_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
 41template<> struct bitor_impl< na,integral_c_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
 50template<> struct bitor_impl< integral_c_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
 59template< typename T > struct bitor_tag
 60{
 61    typedef typename T::tag type;
 62};
 63
 64/// forward declaration
 65
 66template<
 67      typename BOOST_MPL_AUX_NA_PARAM(N1)
 68    , typename BOOST_MPL_AUX_NA_PARAM(N2)
 69    >
 70struct bitor_2;
 71
 72template<
 73      typename BOOST_MPL_AUX_NA_PARAM(N1)
 74    , typename BOOST_MPL_AUX_NA_PARAM(N2)
 75    , typename N3 = na, typename N4 = na, typename N5 = na
 76    >
 77struct bitor_
 78
 79    : if_<
 80
 81          is_na<N3>
 82        , bitor_2< N1,N2 >
 83        , bitor_<
 84              bitor_2< N1,N2 >
 85            , N3, N4, N5
 86            >
 87        >::type
 88
 89{
 90    BOOST_MPL_AUX_LAMBDA_SUPPORT(
 91          5
 92        , bitor_
 93        , ( N1, N2, N3, N4, N5 )
 94        )
 95};
 96
 97template<
 98      typename N1
 99    , typename N2
100    >
101struct bitor_2
102    : bitor_impl<
103          typename bitor_tag<N1>::type
104        , typename bitor_tag<N2>::type
105        >::template apply< N1,N2 >::type
106{
107    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
108
109};
110
111BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
112
113}}
114
115namespace boost { namespace mpl {
116template<>
117struct bitor_impl< integral_c_tag,integral_c_tag >
118{
119    template< typename N1, typename N2 > struct apply
120
121        : integral_c<
122              typename aux::largest_int<
123                  typename N1::value_type
124                , typename N2::value_type
125                >::type
126            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
127                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
128                )
129            >
130    {
131    };
132};
133
134}}