1
// preprocessed version of 'boost/mpl/aux_/iter_fold_backward_impl.hpp' header
2
// see the original for copyright information
17
struct iter_fold_backward_impl;
19
template< nttp_long N >
20
struct iter_fold_backward_chunk;
23
struct iter_fold_backward_chunk<0>
35
typedef State fwd_state0;
36
typedef fwd_state0 bkwd_state0;
37
typedef bkwd_state0 state;
38
typedef iter0 iterator;
42
template<> struct result_<int, int, int, int, int>
51
struct iter_fold_backward_chunk<1>
63
typedef State fwd_state0;
64
typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
65
typedef typename iter0::next iter1;
68
typedef fwd_state1 bkwd_state1;
69
typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
70
typedef bkwd_state0 state;
71
typedef iter1 iterator;
75
template<> struct result_<int, int, int, int, int>
84
struct iter_fold_backward_chunk<2>
96
typedef State fwd_state0;
97
typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
98
typedef typename iter0::next iter1;
99
typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
100
typedef typename iter1::next iter2;
103
typedef fwd_state2 bkwd_state2;
104
typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
105
typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
108
typedef bkwd_state0 state;
109
typedef iter2 iterator;
113
template<> struct result_<int, int, int, int, int>
116
typedef int iterator;
122
struct iter_fold_backward_chunk<3>
128
, typename BackwardOp
134
typedef State fwd_state0;
135
typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
136
typedef typename iter0::next iter1;
137
typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
138
typedef typename iter1::next iter2;
139
typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
140
typedef typename iter2::next iter3;
143
typedef fwd_state3 bkwd_state3;
144
typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
145
typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
146
typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
149
typedef bkwd_state0 state;
150
typedef iter3 iterator;
154
template<> struct result_<int, int, int, int, int>
157
typedef int iterator;
163
struct iter_fold_backward_chunk<4>
169
, typename BackwardOp
175
typedef State fwd_state0;
176
typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
177
typedef typename iter0::next iter1;
178
typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
179
typedef typename iter1::next iter2;
180
typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
181
typedef typename iter2::next iter3;
182
typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
183
typedef typename iter3::next iter4;
186
typedef fwd_state4 bkwd_state4;
187
typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
188
typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
189
typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
190
typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
193
typedef bkwd_state0 state;
194
typedef iter4 iterator;
198
template<> struct result_<int, int, int, int, int>
201
typedef int iterator;
206
template< nttp_long N >
207
struct iter_fold_backward_chunk
213
, typename BackwardOp
219
typedef State fwd_state0;
220
typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
221
typedef typename iter0::next iter1;
222
typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
223
typedef typename iter1::next iter2;
224
typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
225
typedef typename iter2::next iter3;
226
typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
227
typedef typename iter3::next iter4;
230
typedef iter_fold_backward_impl<
231
( (N - 4) < 0 ? 0 : N - 4 )
239
typedef typename nested_chunk::state bkwd_state4;
240
typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
241
typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
242
typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
243
typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
246
typedef bkwd_state0 state;
247
typedef typename nested_chunk::iterator iterator;
255
, typename BackwardOp
258
struct iter_fold_backward_step;
264
struct iter_fold_backward_null_step
266
typedef Last iterator;
271
struct iter_fold_backward_chunk< -1 >
277
, typename BackwardOp
282
typedef typename if_<
283
typename is_same< First,Last >::type
284
, iter_fold_backward_null_step< Last,State >
285
, iter_fold_backward_step< First,Last,State,BackwardOp,ForwardOp >
288
typedef typename res_::state state;
289
typedef typename res_::iterator iterator;
293
template<> struct result_<int, int, int, int, int>
296
typedef int iterator;
305
, typename BackwardOp
308
struct iter_fold_backward_step
310
typedef iter_fold_backward_chunk< -1 >::template result_<
313
, typename apply2< ForwardOp,State,First >::type
318
typedef typename apply2<BackwardOp, typename nested_step::state, First>::type state;
319
typedef typename nested_step::iterator iterator;
327
, typename BackwardOp
330
struct iter_fold_backward_impl
331
: iter_fold_backward_chunk<N>
332
::template result_< First,Last,State,BackwardOp,ForwardOp >