1
// preprocessed version of 'boost/mpl/aux_/fold_backward_impl.hpp' header
2
// see the original for copyright information
17
struct fold_backward_impl;
20
struct fold_backward_chunk;
23
struct fold_backward_chunk<0>
35
typedef State fwd_state0;
36
typedef fwd_state0 bkwd_state0;
37
typedef bkwd_state0 state;
38
typedef iter0 iterator;
44
struct fold_backward_chunk<1>
56
typedef State fwd_state0;
57
typedef typename ForwardOp::template apply<fwd_state0, typename iter0::type>::type fwd_state1;
58
typedef typename iter0::next iter1;
61
typedef fwd_state1 bkwd_state1;
62
typedef typename BackwardOp::template apply<bkwd_state1, typename iter0::type>::type bkwd_state0;
63
typedef bkwd_state0 state;
64
typedef iter1 iterator;
70
struct fold_backward_chunk<2>
82
typedef State fwd_state0;
83
typedef typename ForwardOp::template apply<fwd_state0, typename iter0::type>::type fwd_state1;
84
typedef typename iter0::next iter1;
85
typedef typename ForwardOp::template apply<fwd_state1, typename iter1::type>::type fwd_state2;
86
typedef typename iter1::next iter2;
89
typedef fwd_state2 bkwd_state2;
90
typedef typename BackwardOp::template apply<bkwd_state2, typename iter1::type>::type bkwd_state1;
91
typedef typename BackwardOp::template apply<bkwd_state1, typename iter0::type>::type bkwd_state0;
94
typedef bkwd_state0 state;
95
typedef iter2 iterator;
101
struct fold_backward_chunk<3>
107
, typename BackwardOp
113
typedef State fwd_state0;
114
typedef typename ForwardOp::template apply<fwd_state0, typename iter0::type>::type fwd_state1;
115
typedef typename iter0::next iter1;
116
typedef typename ForwardOp::template apply<fwd_state1, typename iter1::type>::type fwd_state2;
117
typedef typename iter1::next iter2;
118
typedef typename ForwardOp::template apply<fwd_state2, typename iter2::type>::type fwd_state3;
119
typedef typename iter2::next iter3;
122
typedef fwd_state3 bkwd_state3;
123
typedef typename BackwardOp::template apply<bkwd_state3, typename iter2::type>::type bkwd_state2;
124
typedef typename BackwardOp::template apply<bkwd_state2, typename iter1::type>::type bkwd_state1;
125
typedef typename BackwardOp::template apply<bkwd_state1, typename iter0::type>::type bkwd_state0;
128
typedef bkwd_state0 state;
129
typedef iter3 iterator;
135
struct fold_backward_chunk<4>
141
, typename BackwardOp
147
typedef State fwd_state0;
148
typedef typename ForwardOp::template apply<fwd_state0, typename iter0::type>::type fwd_state1;
149
typedef typename iter0::next iter1;
150
typedef typename ForwardOp::template apply<fwd_state1, typename iter1::type>::type fwd_state2;
151
typedef typename iter1::next iter2;
152
typedef typename ForwardOp::template apply<fwd_state2, typename iter2::type>::type fwd_state3;
153
typedef typename iter2::next iter3;
154
typedef typename ForwardOp::template apply<fwd_state3, typename iter3::type>::type fwd_state4;
155
typedef typename iter3::next iter4;
158
typedef fwd_state4 bkwd_state4;
159
typedef typename BackwardOp::template apply<bkwd_state4, typename iter3::type>::type bkwd_state3;
160
typedef typename BackwardOp::template apply<bkwd_state3, typename iter2::type>::type bkwd_state2;
161
typedef typename BackwardOp::template apply<bkwd_state2, typename iter1::type>::type bkwd_state1;
162
typedef typename BackwardOp::template apply<bkwd_state1, typename iter0::type>::type bkwd_state0;
165
typedef bkwd_state0 state;
166
typedef iter4 iterator;
172
struct fold_backward_chunk
178
, typename BackwardOp
184
typedef State fwd_state0;
185
typedef typename ForwardOp::template apply<fwd_state0, typename iter0::type>::type fwd_state1;
186
typedef typename iter0::next iter1;
187
typedef typename ForwardOp::template apply<fwd_state1, typename iter1::type>::type fwd_state2;
188
typedef typename iter1::next iter2;
189
typedef typename ForwardOp::template apply<fwd_state2, typename iter2::type>::type fwd_state3;
190
typedef typename iter2::next iter3;
191
typedef typename ForwardOp::template apply<fwd_state3, typename iter3::type>::type fwd_state4;
192
typedef typename iter3::next iter4;
195
typedef fold_backward_impl<
196
( (N - 4) < 0 ? 0 : N - 4 )
204
typedef typename nested_chunk::state bkwd_state4;
205
typedef typename BackwardOp::template apply<bkwd_state4, typename iter3::type>::type bkwd_state3;
206
typedef typename BackwardOp::template apply<bkwd_state3, typename iter2::type>::type bkwd_state2;
207
typedef typename BackwardOp::template apply<bkwd_state2, typename iter1::type>::type bkwd_state1;
208
typedef typename BackwardOp::template apply<bkwd_state1, typename iter0::type>::type bkwd_state0;
211
typedef bkwd_state0 state;
212
typedef typename nested_chunk::iterator iterator;
220
, typename BackwardOp
223
struct fold_backward_step;
229
struct fold_backward_null_step
231
typedef Last iterator;
236
struct fold_backward_chunk< -1 >
242
, typename BackwardOp
247
typedef typename if_<
248
typename is_same< First,Last >::type
249
, fold_backward_null_step< Last,State >
250
, fold_backward_step< First,Last,State,BackwardOp,ForwardOp >
253
typedef typename res_::state state;
254
typedef typename res_::iterator iterator;
263
, typename BackwardOp
266
struct fold_backward_step
268
typedef fold_backward_chunk< -1 >::template result_<
272
,typename ForwardOp::template apply<State, typename First::type>::type
277
typedef typename BackwardOp::template apply<typename nested_step::state, typename First::type>::type state;
278
typedef typename nested_step::iterator iterator;
286
, typename BackwardOp
289
struct fold_backward_impl
290
: fold_backward_chunk<N>
291
::template result_< First,Last,State,BackwardOp,ForwardOp >