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
;