2 // Copyright Aleksey Gurtovoy 2000-2004
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)
9 // Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
10 // -- DO NOT modify by hand!
12 namespace boost { namespace mpl { namespace aux {
14 /// forward declaration
24 struct reverse_iter_fold_impl;
33 struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
36 typedef State fwd_state0;
37 typedef fwd_state0 bkwd_state0;
38 typedef bkwd_state0 state;
39 typedef iter0 iterator;
49 struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
52 typedef State fwd_state0;
53 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
54 typedef typename mpl::next<iter0>::type iter1;
57 typedef fwd_state1 bkwd_state1;
58 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
59 typedef bkwd_state0 state;
60 typedef iter1 iterator;
70 struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
73 typedef State fwd_state0;
74 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
75 typedef typename mpl::next<iter0>::type iter1;
76 typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
77 typedef typename mpl::next<iter1>::type iter2;
80 typedef fwd_state2 bkwd_state2;
81 typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
82 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
85 typedef bkwd_state0 state;
86 typedef iter2 iterator;
96 struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
99 typedef State fwd_state0;
100 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
101 typedef typename mpl::next<iter0>::type iter1;
102 typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
103 typedef typename mpl::next<iter1>::type iter2;
104 typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
105 typedef typename mpl::next<iter2>::type iter3;
108 typedef fwd_state3 bkwd_state3;
109 typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
110 typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
111 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
114 typedef bkwd_state0 state;
115 typedef iter3 iterator;
122 , typename BackwardOp
125 struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
128 typedef State fwd_state0;
129 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
130 typedef typename mpl::next<iter0>::type iter1;
131 typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
132 typedef typename mpl::next<iter1>::type iter2;
133 typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
134 typedef typename mpl::next<iter2>::type iter3;
135 typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
136 typedef typename mpl::next<iter3>::type iter4;
139 typedef fwd_state4 bkwd_state4;
140 typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
141 typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
142 typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
143 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
146 typedef bkwd_state0 state;
147 typedef iter4 iterator;
155 , typename BackwardOp
158 struct reverse_iter_fold_impl
161 typedef State fwd_state0;
162 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
163 typedef typename mpl::next<iter0>::type iter1;
164 typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
165 typedef typename mpl::next<iter1>::type iter2;
166 typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
167 typedef typename mpl::next<iter2>::type iter3;
168 typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
169 typedef typename mpl::next<iter3>::type iter4;
172 typedef reverse_iter_fold_impl<
173 ( (N - 4) < 0 ? 0 : N - 4 )
181 typedef typename nested_chunk::state bkwd_state4;
182 typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
183 typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
184 typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
185 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
188 typedef bkwd_state0 state;
189 typedef typename nested_chunk::iterator iterator;
196 , typename BackwardOp
199 struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
201 typedef reverse_iter_fold_impl<
203 , typename mpl::next<First>::type
205 , typename apply2< ForwardOp,State,First >::type
210 typedef typename apply2<
212 , typename nested_step::state
216 typedef typename nested_step::iterator iterator;
222 , typename BackwardOp
225 struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
228 typedef Last iterator;