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_/fold_impl.hpp" header
10 // -- DO NOT modify by hand!
12 namespace boost { namespace mpl { namespace aux {
14 /// forward declaration
28 template<> struct fold_chunk<0>
41 typedef iter0 iterator;
45 template<> struct result_< int,int,int,int >
53 template<> struct fold_chunk<1>
65 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
66 typedef typename mpl::next<iter0>::type iter1;
70 typedef iter1 iterator;
74 template<> struct result_< int,int,int,int >
82 template<> struct fold_chunk<2>
94 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
95 typedef typename mpl::next<iter0>::type iter1;
96 typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
97 typedef typename mpl::next<iter1>::type iter2;
100 typedef state2 state;
101 typedef iter2 iterator;
105 template<> struct result_< int,int,int,int >
108 typedef int iterator;
113 template<> struct fold_chunk<3>
124 typedef State state0;
125 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
126 typedef typename mpl::next<iter0>::type iter1;
127 typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
128 typedef typename mpl::next<iter1>::type iter2;
129 typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
130 typedef typename mpl::next<iter2>::type iter3;
133 typedef state3 state;
134 typedef iter3 iterator;
138 template<> struct result_< int,int,int,int >
141 typedef int iterator;
146 template<> struct fold_chunk<4>
157 typedef State state0;
158 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
159 typedef typename mpl::next<iter0>::type iter1;
160 typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
161 typedef typename mpl::next<iter1>::type iter2;
162 typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
163 typedef typename mpl::next<iter2>::type iter3;
164 typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
165 typedef typename mpl::next<iter3>::type iter4;
168 typedef state4 state;
169 typedef iter4 iterator;
173 template<> struct result_< int,int,int,int >
176 typedef int iterator;
201 ( (N - 4) < 0 ? 0 : N - 4 )
202 , typename chunk_::iterator
204 , typename chunk_::state
208 typedef typename res_::state state;
209 typedef typename res_::iterator iterator;
225 struct fold_null_step
227 typedef Last iterator;
232 struct fold_chunk< -1 >
242 typedef typename if_<
243 typename is_same< First,Last >::type
244 , fold_null_step< Last,State >
245 , fold_step< First,Last,State,ForwardOp >
248 typedef typename res_::state state;
249 typedef typename res_::iterator iterator;
253 template<> struct result_< int,int,int,int >
256 typedef int iterator;
269 typedef fold_chunk< -1 >::template result_<
270 typename mpl::next<First>::type
272 , typename apply2<ForwardOp,State, typename deref<First>::type>::type
276 typedef typename chunk_::state state;
277 typedef typename chunk_::iterator iterator;
289 ::template result_< First,Last,State,ForwardOp >