PageRenderTime 81ms CodeModel.GetById 40ms app.highlight 37ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp

http://hadesmem.googlecode.com/
C++ Header | 231 lines | 187 code | 35 blank | 9 comment | 0 complexity | b42b2970438823d07bab9487158a69af MD5 | raw file
  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
 12namespace boost { namespace mpl { namespace aux {
 13
 14/// forward declaration
 15
 16template<
 17      long N
 18    , typename First
 19    , typename Last
 20    , typename State
 21    , typename BackwardOp
 22    , typename ForwardOp
 23    >
 24struct reverse_iter_fold_impl;
 25
 26template<
 27      typename First
 28    , typename Last
 29    , typename State
 30    , typename BackwardOp
 31    , typename ForwardOp
 32    >
 33struct 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
 42template<
 43      typename First
 44    , typename Last
 45    , typename State
 46    , typename BackwardOp
 47    , typename ForwardOp
 48    >
 49struct 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
 63template<
 64      typename First
 65    , typename Last
 66    , typename State
 67    , typename BackwardOp
 68    , typename ForwardOp
 69    >
 70struct 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
 89template<
 90      typename First
 91    , typename Last
 92    , typename State
 93    , typename BackwardOp
 94    , typename ForwardOp
 95    >
 96struct 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
118template<
119      typename First
120    , typename Last
121    , typename State
122    , typename BackwardOp
123    , typename ForwardOp
124    >
125struct 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
150template<
151      long N
152    , typename First
153    , typename Last
154    , typename State
155    , typename BackwardOp
156    , typename ForwardOp
157    >
158struct 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
192template<
193      typename First
194    , typename Last
195    , typename State
196    , typename BackwardOp
197    , typename ForwardOp
198    >
199struct 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
219template<
220      typename Last
221    , typename State
222    , typename BackwardOp
223    , typename ForwardOp
224    >
225struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
226{
227    typedef State state;
228    typedef Last iterator;
229};
230
231}}}