/extlibs/Boost/include/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp
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}}