Pack required boost code together.
[xy_vsfilter.git] / src / thirdparty / boost_1_47_0 / boost / mpl / aux_ / preprocessed / mwcw / iter_fold_impl.hpp
blobf633d1b98d6157c575c5bc6559249b85f5cf45f7
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 //
9 // Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
10 // -- DO NOT modify by hand!
12 namespace boost { namespace mpl { namespace aux {
14 /// forward declaration
16 template<
17 int N
18 , typename First
19 , typename Last
20 , typename State
21 , typename ForwardOp
23 struct iter_fold_impl;
25 template<
26 typename First
27 , typename Last
28 , typename State
29 , typename ForwardOp
31 struct iter_fold_impl< 0,First,Last,State,ForwardOp >
33 typedef First iter0;
34 typedef State state0;
35 typedef state0 state;
36 typedef iter0 iterator;
39 template<
40 typename First
41 , typename Last
42 , typename State
43 , typename ForwardOp
45 struct iter_fold_impl< 1,First,Last,State,ForwardOp >
47 typedef First iter0;
48 typedef State state0;
49 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
50 typedef typename mpl::next<iter0>::type iter1;
53 typedef state1 state;
54 typedef iter1 iterator;
57 template<
58 typename First
59 , typename Last
60 , typename State
61 , typename ForwardOp
63 struct iter_fold_impl< 2,First,Last,State,ForwardOp >
65 typedef First iter0;
66 typedef State state0;
67 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
68 typedef typename mpl::next<iter0>::type iter1;
69 typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
70 typedef typename mpl::next<iter1>::type iter2;
73 typedef state2 state;
74 typedef iter2 iterator;
77 template<
78 typename First
79 , typename Last
80 , typename State
81 , typename ForwardOp
83 struct iter_fold_impl< 3,First,Last,State,ForwardOp >
85 typedef First iter0;
86 typedef State state0;
87 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
88 typedef typename mpl::next<iter0>::type iter1;
89 typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
90 typedef typename mpl::next<iter1>::type iter2;
91 typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
92 typedef typename mpl::next<iter2>::type iter3;
95 typedef state3 state;
96 typedef iter3 iterator;
99 template<
100 typename First
101 , typename Last
102 , typename State
103 , typename ForwardOp
105 struct iter_fold_impl< 4,First,Last,State,ForwardOp >
107 typedef First iter0;
108 typedef State state0;
109 typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
110 typedef typename mpl::next<iter0>::type iter1;
111 typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
112 typedef typename mpl::next<iter1>::type iter2;
113 typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
114 typedef typename mpl::next<iter2>::type iter3;
115 typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
116 typedef typename mpl::next<iter3>::type iter4;
119 typedef state4 state;
120 typedef iter4 iterator;
123 template<
124 int N
125 , typename First
126 , typename Last
127 , typename State
128 , typename ForwardOp
130 struct iter_fold_impl
132 typedef iter_fold_impl<
134 , First
135 , Last
136 , State
137 , ForwardOp
138 > chunk_;
140 typedef iter_fold_impl<
141 ( (N - 4) < 0 ? 0 : N - 4 )
142 , typename chunk_::iterator
143 , Last
144 , typename chunk_::state
145 , ForwardOp
146 > res_;
148 typedef typename res_::state state;
149 typedef typename res_::iterator iterator;
152 template<
153 typename First
154 , typename Last
155 , typename State
156 , typename ForwardOp
158 struct iter_fold_impl< -1,First,Last,State,ForwardOp >
159 : iter_fold_impl<
161 , typename mpl::next<First>::type
162 , Last
163 , typename apply2< ForwardOp,State,First >::type
164 , ForwardOp
169 template<
170 typename Last
171 , typename State
172 , typename ForwardOp
174 struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
176 typedef State state;
177 typedef Last iterator;