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 | |
13 | namespace boost { namespace mpl { |
14 | |
15 | template< |
16 | typename Tag1 |
17 | , typename Tag2 |
18 | > |
19 | struct 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 |
32 | template<> 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 | |
41 | template< typename Tag > struct bitor_impl< na,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 | |
50 | template< typename Tag > struct bitor_impl< 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 | |
59 | template< typename T > struct bitor_tag |
60 | { |
61 | typedef typename T::tag type; |
62 | }; |
63 | |
64 | template< |
65 | typename BOOST_MPL_AUX_NA_PARAM(N1) |
66 | , typename BOOST_MPL_AUX_NA_PARAM(N2) |
67 | , typename N3 = na, typename N4 = na, typename N5 = na |
68 | > |
69 | struct bitor_ |
70 | : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5> |
71 | { |
72 | BOOST_MPL_AUX_LAMBDA_SUPPORT( |
73 | 5 |
74 | , bitor_ |
75 | , ( N1, N2, N3, N4, N5 ) |
76 | ) |
77 | }; |
78 | |
79 | template< |
80 | typename N1, typename N2, typename N3, typename N4 |
81 | > |
82 | struct bitor_< N1,N2,N3,N4,na > |
83 | |
84 | : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4> |
85 | { |
86 | BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC( |
87 | 5 |
88 | , bitor_ |
89 | , ( N1, N2, N3, N4, na ) |
90 | ) |
91 | }; |
92 | |
93 | template< |
94 | typename N1, typename N2, typename N3 |
95 | > |
96 | struct bitor_< N1,N2,N3,na,na > |
97 | |
98 | : bitor_< bitor_< N1,N2 >, N3> |
99 | { |
100 | BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC( |
101 | 5 |
102 | , bitor_ |
103 | , ( N1, N2, N3, na, na ) |
104 | ) |
105 | }; |
106 | |
107 | template< |
108 | typename N1, typename N2 |
109 | > |
110 | struct bitor_< N1,N2,na,na,na > |
111 | : bitor_impl< |
112 | typename bitor_tag<N1>::type |
113 | , typename bitor_tag<N2>::type |
114 | >::template apply< N1,N2 >::type |
115 | { |
116 | BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC( |
117 | 5 |
118 | , bitor_ |
119 | , ( N1, N2, na, na, na ) |
120 | ) |
121 | |
122 | }; |
123 | |
124 | BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_) |
125 | |
126 | }} |
127 | |
128 | namespace boost { namespace mpl { |
129 | template<> |
130 | struct bitor_impl< integral_c_tag,integral_c_tag > |
131 | { |
132 | template< typename N1, typename N2 > struct apply |
133 | |
134 | : integral_c< |
135 | typename aux::largest_int< |
136 | typename N1::value_type |
137 | , typename N2::value_type |
138 | >::type |
139 | , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value |
140 | | BOOST_MPL_AUX_VALUE_WKND(N2)::value |
141 | ) |
142 | > |
143 | { |
144 | }; |
145 | }; |
146 | |
147 | }} |
148 | |