]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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_/reverse_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 | long N | |
18 | , typename First | |
19 | , typename Last | |
20 | , typename State | |
21 | , typename BackwardOp | |
22 | , typename ForwardOp | |
23 | > | |
24 | struct reverse_iter_fold_impl; | |
25 | ||
26 | template< | |
27 | typename First | |
28 | , typename Last | |
29 | , typename State | |
30 | , typename BackwardOp | |
31 | , typename ForwardOp | |
32 | > | |
33 | struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp > | |
34 | { | |
35 | typedef First iter0; | |
36 | typedef State fwd_state0; | |
37 | typedef fwd_state0 bkwd_state0; | |
38 | typedef bkwd_state0 state; | |
39 | typedef iter0 iterator; | |
40 | }; | |
41 | ||
42 | template< | |
43 | typename First | |
44 | , typename Last | |
45 | , typename State | |
46 | , typename BackwardOp | |
47 | , typename ForwardOp | |
48 | > | |
49 | struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp > | |
50 | { | |
51 | typedef First iter0; | |
52 | typedef State fwd_state0; | |
53 | typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1; | |
54 | typedef typename mpl::next<iter0>::type iter1; | |
55 | ||
56 | ||
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; | |
61 | }; | |
62 | ||
63 | template< | |
64 | typename First | |
65 | , typename Last | |
66 | , typename State | |
67 | , typename BackwardOp | |
68 | , typename ForwardOp | |
69 | > | |
70 | struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp > | |
71 | { | |
72 | typedef First iter0; | |
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; | |
78 | ||
79 | ||
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; | |
83 | ||
84 | ||
85 | typedef bkwd_state0 state; | |
86 | typedef iter2 iterator; | |
87 | }; | |
88 | ||
89 | template< | |
90 | typename First | |
91 | , typename Last | |
92 | , typename State | |
93 | , typename BackwardOp | |
94 | , typename ForwardOp | |
95 | > | |
96 | struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp > | |
97 | { | |
98 | typedef First iter0; | |
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; | |
106 | ||
107 | ||
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; | |
112 | ||
113 | ||
114 | typedef bkwd_state0 state; | |
115 | typedef iter3 iterator; | |
116 | }; | |
117 | ||
118 | template< | |
119 | typename First | |
120 | , typename Last | |
121 | , typename State | |
122 | , typename BackwardOp | |
123 | , typename ForwardOp | |
124 | > | |
125 | struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp > | |
126 | { | |
127 | typedef First iter0; | |
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; | |
137 | ||
138 | ||
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; | |
144 | ||
145 | ||
146 | typedef bkwd_state0 state; | |
147 | typedef iter4 iterator; | |
148 | }; | |
149 | ||
150 | template< | |
151 | long N | |
152 | , typename First | |
153 | , typename Last | |
154 | , typename State | |
155 | , typename BackwardOp | |
156 | , typename ForwardOp | |
157 | > | |
158 | struct reverse_iter_fold_impl | |
159 | { | |
160 | typedef First iter0; | |
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; | |
170 | ||
171 | ||
172 | typedef reverse_iter_fold_impl< | |
173 | ( (N - 4) < 0 ? 0 : N - 4 ) | |
174 | , iter4 | |
175 | , Last | |
176 | , fwd_state4 | |
177 | , BackwardOp | |
178 | , ForwardOp | |
179 | > nested_chunk; | |
180 | ||
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; | |
186 | ||
187 | ||
188 | typedef bkwd_state0 state; | |
189 | typedef typename nested_chunk::iterator iterator; | |
190 | }; | |
191 | ||
192 | template< | |
193 | typename First | |
194 | , typename Last | |
195 | , typename State | |
196 | , typename BackwardOp | |
197 | , typename ForwardOp | |
198 | > | |
199 | struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp > | |
200 | { | |
201 | typedef reverse_iter_fold_impl< | |
202 | -1 | |
203 | , typename mpl::next<First>::type | |
204 | , Last | |
205 | , typename apply2< ForwardOp,State,First >::type | |
206 | , BackwardOp | |
207 | , ForwardOp | |
208 | > nested_step; | |
209 | ||
210 | typedef typename apply2< | |
211 | BackwardOp | |
212 | , typename nested_step::state | |
213 | , First | |
214 | >::type state; | |
215 | ||
216 | typedef typename nested_step::iterator iterator; | |
217 | }; | |
218 | ||
219 | template< | |
220 | typename Last | |
221 | , typename State | |
222 | , typename BackwardOp | |
223 | , typename ForwardOp | |
224 | > | |
225 | struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp > | |
226 | { | |
227 | typedef State state; | |
228 | typedef Last iterator; | |
229 | }; | |
230 | ||
231 | }}} |