]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / mpl / aux_ / preprocessed / msvc60 / iter_fold_impl.hpp
1
2 // Copyright Aleksey Gurtovoy 2000-2004
3 //
4 // Distributed under the Boost Software License, Version 1.0.
5 // (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //
8
9 // Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
10 // -- DO NOT modify by hand!
11
12 namespace boost { namespace mpl { namespace aux {
13
14 /// forward declaration
15
16 template<
17 int N
18 , typename First
19 , typename Last
20 , typename State
21 , typename ForwardOp
22 >
23 struct iter_fold_impl;
24
25 template< int N >
26 struct iter_fold_chunk;
27
28 template<> struct iter_fold_chunk<0>
29 {
30 template<
31 typename First
32 , typename Last
33 , typename State
34 , typename ForwardOp
35 >
36 struct result_
37 {
38 typedef First iter0;
39 typedef State state0;
40 typedef state0 state;
41 typedef iter0 iterator;
42 };
43
44 /// ETI workaround
45 template<> struct result_< int,int,int,int >
46 {
47 typedef int state;
48 typedef int iterator;
49 };
50
51 };
52
53 template<> struct iter_fold_chunk<1>
54 {
55 template<
56 typename First
57 , typename Last
58 , typename State
59 , typename ForwardOp
60 >
61 struct result_
62 {
63 typedef First iter0;
64 typedef State state0;
65 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
66 typedef typename mpl::next<iter0>::type iter1;
67
68
69 typedef state1 state;
70 typedef iter1 iterator;
71 };
72
73 /// ETI workaround
74 template<> struct result_< int,int,int,int >
75 {
76 typedef int state;
77 typedef int iterator;
78 };
79
80 };
81
82 template<> struct iter_fold_chunk<2>
83 {
84 template<
85 typename First
86 , typename Last
87 , typename State
88 , typename ForwardOp
89 >
90 struct result_
91 {
92 typedef First iter0;
93 typedef State state0;
94 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
95 typedef typename mpl::next<iter0>::type iter1;
96 typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
97 typedef typename mpl::next<iter1>::type iter2;
98
99
100 typedef state2 state;
101 typedef iter2 iterator;
102 };
103
104 /// ETI workaround
105 template<> struct result_< int,int,int,int >
106 {
107 typedef int state;
108 typedef int iterator;
109 };
110
111 };
112
113 template<> struct iter_fold_chunk<3>
114 {
115 template<
116 typename First
117 , typename Last
118 , typename State
119 , typename ForwardOp
120 >
121 struct result_
122 {
123 typedef First iter0;
124 typedef State state0;
125 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
126 typedef typename mpl::next<iter0>::type iter1;
127 typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
128 typedef typename mpl::next<iter1>::type iter2;
129 typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
130 typedef typename mpl::next<iter2>::type iter3;
131
132
133 typedef state3 state;
134 typedef iter3 iterator;
135 };
136
137 /// ETI workaround
138 template<> struct result_< int,int,int,int >
139 {
140 typedef int state;
141 typedef int iterator;
142 };
143
144 };
145
146 template<> struct iter_fold_chunk<4>
147 {
148 template<
149 typename First
150 , typename Last
151 , typename State
152 , typename ForwardOp
153 >
154 struct result_
155 {
156 typedef First iter0;
157 typedef State state0;
158 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
159 typedef typename mpl::next<iter0>::type iter1;
160 typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
161 typedef typename mpl::next<iter1>::type iter2;
162 typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
163 typedef typename mpl::next<iter2>::type iter3;
164 typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
165 typedef typename mpl::next<iter3>::type iter4;
166
167
168 typedef state4 state;
169 typedef iter4 iterator;
170 };
171
172 /// ETI workaround
173 template<> struct result_< int,int,int,int >
174 {
175 typedef int state;
176 typedef int iterator;
177 };
178
179 };
180
181 template< int N >
182 struct iter_fold_chunk
183 {
184 template<
185 typename First
186 , typename Last
187 , typename State
188 , typename ForwardOp
189 >
190 struct result_
191 {
192 typedef iter_fold_impl<
193 4
194 , First
195 , Last
196 , State
197 , ForwardOp
198 > chunk_;
199
200 typedef iter_fold_impl<
201 ( (N - 4) < 0 ? 0 : N - 4 )
202 , typename chunk_::iterator
203 , Last
204 , typename chunk_::state
205 , ForwardOp
206 > res_;
207
208 typedef typename res_::state state;
209 typedef typename res_::iterator iterator;
210 };
211 };
212
213 template<
214 typename First
215 , typename Last
216 , typename State
217 , typename ForwardOp
218 >
219 struct iter_fold_step;
220
221 template<
222 typename Last
223 , typename State
224 >
225 struct iter_fold_null_step
226 {
227 typedef Last iterator;
228 typedef State state;
229 };
230
231 template<>
232 struct iter_fold_chunk< -1 >
233 {
234 template<
235 typename First
236 , typename Last
237 , typename State
238 , typename ForwardOp
239 >
240 struct result_
241 {
242 typedef typename if_<
243 typename is_same< First,Last >::type
244 , iter_fold_null_step< Last,State >
245 , iter_fold_step< First,Last,State,ForwardOp >
246 >::type res_;
247
248 typedef typename res_::state state;
249 typedef typename res_::iterator iterator;
250 };
251
252 /// ETI workaround
253 template<> struct result_< int,int,int,int >
254 {
255 typedef int state;
256 typedef int iterator;
257 };
258
259 };
260
261 template<
262 typename First
263 , typename Last
264 , typename State
265 , typename ForwardOp
266 >
267 struct iter_fold_step
268 {
269 typedef iter_fold_chunk< -1 >::template result_<
270 typename mpl::next<First>::type
271 , Last
272 , typename apply2< ForwardOp,State,First >::type
273 , ForwardOp
274 > chunk_;
275
276 typedef typename chunk_::state state;
277 typedef typename chunk_::iterator iterator;
278 };
279
280 template<
281 int N
282 , typename First
283 , typename Last
284 , typename State
285 , typename ForwardOp
286 >
287 struct iter_fold_impl
288 : iter_fold_chunk<N>
289 ::template result_< First,Last,State,ForwardOp >
290 {
291 };
292
293 }}}