]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
184cf15602b7a665f5bda090e3065fae9cf9bdbb
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / mpl / aux_ / preprocessed / msvc60 / iter_fold_impl.hpp
1 \r
2 // Copyright Aleksey Gurtovoy 2000-2004\r
3 //\r
4 // Distributed under the Boost Software License, Version 1.0. \r
5 // (See accompanying file LICENSE_1_0.txt or copy at \r
6 // http://www.boost.org/LICENSE_1_0.txt)\r
7 //\r
8 \r
9 // Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header\r
10 // -- DO NOT modify by hand!\r
11 \r
12 namespace boost { namespace mpl { namespace aux {\r
13 \r
14 /// forward declaration\r
15 \r
16 template<\r
17       int N\r
18     , typename First\r
19     , typename Last\r
20     , typename State\r
21     , typename ForwardOp\r
22     >\r
23 struct iter_fold_impl;\r
24 \r
25 template< int N >\r
26 struct iter_fold_chunk;\r
27 \r
28 template<> struct iter_fold_chunk<0>\r
29 {\r
30     template<\r
31           typename First\r
32         , typename Last\r
33         , typename State\r
34         , typename ForwardOp\r
35         >\r
36     struct result_\r
37     {\r
38         typedef First iter0;\r
39         typedef State state0;\r
40         typedef state0 state;\r
41         typedef iter0 iterator;\r
42     };\r
43 \r
44     /// ETI workaround\r
45     template<> struct result_< int,int,int,int >\r
46     {\r
47         typedef int state;\r
48         typedef int iterator;\r
49     };\r
50 \r
51 };\r
52 \r
53 template<> struct iter_fold_chunk<1>\r
54 {\r
55     template<\r
56           typename First\r
57         , typename Last\r
58         , typename State\r
59         , typename ForwardOp\r
60         >\r
61     struct result_\r
62     {\r
63         typedef First iter0;\r
64         typedef State state0;\r
65         typedef typename apply2< ForwardOp,state0,iter0 >::type state1;\r
66         typedef typename mpl::next<iter0>::type iter1;\r
67         \r
68 \r
69         typedef state1 state;\r
70         typedef iter1 iterator;\r
71     };\r
72 \r
73     /// ETI workaround\r
74     template<> struct result_< int,int,int,int >\r
75     {\r
76         typedef int state;\r
77         typedef int iterator;\r
78     };\r
79 \r
80 };\r
81 \r
82 template<> struct iter_fold_chunk<2>\r
83 {\r
84     template<\r
85           typename First\r
86         , typename Last\r
87         , typename State\r
88         , typename ForwardOp\r
89         >\r
90     struct result_\r
91     {\r
92         typedef First iter0;\r
93         typedef State state0;\r
94         typedef typename apply2< ForwardOp,state0,iter0 >::type state1;\r
95         typedef typename mpl::next<iter0>::type iter1;\r
96         typedef typename apply2< ForwardOp,state1,iter1 >::type state2;\r
97         typedef typename mpl::next<iter1>::type iter2;\r
98         \r
99 \r
100         typedef state2 state;\r
101         typedef iter2 iterator;\r
102     };\r
103 \r
104     /// ETI workaround\r
105     template<> struct result_< int,int,int,int >\r
106     {\r
107         typedef int state;\r
108         typedef int iterator;\r
109     };\r
110 \r
111 };\r
112 \r
113 template<> struct iter_fold_chunk<3>\r
114 {\r
115     template<\r
116           typename First\r
117         , typename Last\r
118         , typename State\r
119         , typename ForwardOp\r
120         >\r
121     struct result_\r
122     {\r
123         typedef First iter0;\r
124         typedef State state0;\r
125         typedef typename apply2< ForwardOp,state0,iter0 >::type state1;\r
126         typedef typename mpl::next<iter0>::type iter1;\r
127         typedef typename apply2< ForwardOp,state1,iter1 >::type state2;\r
128         typedef typename mpl::next<iter1>::type iter2;\r
129         typedef typename apply2< ForwardOp,state2,iter2 >::type state3;\r
130         typedef typename mpl::next<iter2>::type iter3;\r
131         \r
132 \r
133         typedef state3 state;\r
134         typedef iter3 iterator;\r
135     };\r
136 \r
137     /// ETI workaround\r
138     template<> struct result_< int,int,int,int >\r
139     {\r
140         typedef int state;\r
141         typedef int iterator;\r
142     };\r
143 \r
144 };\r
145 \r
146 template<> struct iter_fold_chunk<4>\r
147 {\r
148     template<\r
149           typename First\r
150         , typename Last\r
151         , typename State\r
152         , typename ForwardOp\r
153         >\r
154     struct result_\r
155     {\r
156         typedef First iter0;\r
157         typedef State state0;\r
158         typedef typename apply2< ForwardOp,state0,iter0 >::type state1;\r
159         typedef typename mpl::next<iter0>::type iter1;\r
160         typedef typename apply2< ForwardOp,state1,iter1 >::type state2;\r
161         typedef typename mpl::next<iter1>::type iter2;\r
162         typedef typename apply2< ForwardOp,state2,iter2 >::type state3;\r
163         typedef typename mpl::next<iter2>::type iter3;\r
164         typedef typename apply2< ForwardOp,state3,iter3 >::type state4;\r
165         typedef typename mpl::next<iter3>::type iter4;\r
166         \r
167 \r
168         typedef state4 state;\r
169         typedef iter4 iterator;\r
170     };\r
171 \r
172     /// ETI workaround\r
173     template<> struct result_< int,int,int,int >\r
174     {\r
175         typedef int state;\r
176         typedef int iterator;\r
177     };\r
178 \r
179 };\r
180 \r
181 template< int N >\r
182 struct iter_fold_chunk\r
183 {\r
184     template<\r
185           typename First\r
186         , typename Last\r
187         , typename State\r
188         , typename ForwardOp\r
189         >\r
190     struct result_\r
191     {\r
192         typedef iter_fold_impl<\r
193               4\r
194             , First\r
195             , Last\r
196             , State\r
197             , ForwardOp\r
198             > chunk_;\r
199 \r
200         typedef iter_fold_impl<\r
201               ( (N - 4) < 0 ? 0 : N - 4 )\r
202             , typename chunk_::iterator\r
203             , Last\r
204             , typename chunk_::state\r
205             , ForwardOp\r
206             > res_;\r
207 \r
208         typedef typename res_::state state;\r
209         typedef typename res_::iterator iterator;\r
210     };\r
211 };\r
212 \r
213 template<\r
214       typename First\r
215     , typename Last\r
216     , typename State\r
217     , typename ForwardOp\r
218     >\r
219 struct iter_fold_step;\r
220 \r
221 template<\r
222       typename Last\r
223     , typename State\r
224     >\r
225 struct iter_fold_null_step\r
226 {\r
227     typedef Last iterator;\r
228     typedef State state;\r
229 };\r
230 \r
231 template<>\r
232 struct iter_fold_chunk< -1 >\r
233 {\r
234     template<\r
235           typename First\r
236         , typename Last\r
237         , typename State\r
238         , typename ForwardOp\r
239         >\r
240     struct result_\r
241     {\r
242         typedef typename if_<\r
243               typename is_same< First,Last >::type\r
244             , iter_fold_null_step< Last,State >\r
245             , iter_fold_step< First,Last,State,ForwardOp >\r
246             >::type res_;\r
247 \r
248         typedef typename res_::state state;\r
249         typedef typename res_::iterator iterator;\r
250     };\r
251 \r
252     /// ETI workaround\r
253     template<> struct result_< int,int,int,int >\r
254     {\r
255         typedef int state;\r
256         typedef int iterator;\r
257     };\r
258 \r
259 };\r
260 \r
261 template<\r
262       typename First\r
263     , typename Last\r
264     , typename State\r
265     , typename ForwardOp\r
266     >\r
267 struct iter_fold_step\r
268 {\r
269     typedef iter_fold_chunk< -1 >::template result_<\r
270           typename mpl::next<First>::type\r
271         , Last\r
272         , typename apply2< ForwardOp,State,First >::type\r
273         , ForwardOp\r
274         > chunk_;\r
275 \r
276     typedef typename chunk_::state state;\r
277     typedef typename chunk_::iterator iterator;\r
278 };\r
279 \r
280 template<\r
281       int N\r
282     , typename First\r
283     , typename Last\r
284     , typename State\r
285     , typename ForwardOp\r
286     >\r
287 struct iter_fold_impl\r
288     : iter_fold_chunk<N>\r
289         ::template result_< First,Last,State,ForwardOp >\r
290 {\r
291 };\r
292 \r
293 }}}\r