PageRenderTime 33ms CodeModel.GetById 17ms app.highlight 13ms RepoModel.GetById 1ms app.codeStats 1ms

/Src/Dependencies/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp

http://hadesmem.googlecode.com/
C++ Header | 180 lines | 147 code | 24 blank | 9 comment | 0 complexity | 722b4d468049916667190e5f318c22fe 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 the main "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      int N
 18    , typename First
 19    , typename Last
 20    , typename State
 21    , typename ForwardOp
 22    >
 23struct iter_fold_impl;
 24
 25template<
 26      typename First
 27    , typename Last
 28    , typename State
 29    , typename ForwardOp
 30    >
 31struct iter_fold_impl< 0,First,Last,State,ForwardOp >
 32{
 33    typedef First iter0;
 34    typedef State state0;
 35    typedef state0 state;
 36    typedef iter0 iterator;
 37};
 38
 39template<
 40      typename First
 41    , typename Last
 42    , typename State
 43    , typename ForwardOp
 44    >
 45struct iter_fold_impl< 1,First,Last,State,ForwardOp >
 46{
 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;
 51    
 52
 53    typedef state1 state;
 54    typedef iter1 iterator;
 55};
 56
 57template<
 58      typename First
 59    , typename Last
 60    , typename State
 61    , typename ForwardOp
 62    >
 63struct iter_fold_impl< 2,First,Last,State,ForwardOp >
 64{
 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;
 71    
 72
 73    typedef state2 state;
 74    typedef iter2 iterator;
 75};
 76
 77template<
 78      typename First
 79    , typename Last
 80    , typename State
 81    , typename ForwardOp
 82    >
 83struct iter_fold_impl< 3,First,Last,State,ForwardOp >
 84{
 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;
 93    
 94
 95    typedef state3 state;
 96    typedef iter3 iterator;
 97};
 98
 99template<
100      typename First
101    , typename Last
102    , typename State
103    , typename ForwardOp
104    >
105struct iter_fold_impl< 4,First,Last,State,ForwardOp >
106{
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;
117    
118
119    typedef state4 state;
120    typedef iter4 iterator;
121};
122
123template<
124      int N
125    , typename First
126    , typename Last
127    , typename State
128    , typename ForwardOp
129    >
130struct iter_fold_impl
131{
132    typedef iter_fold_impl<
133          4
134        , First
135        , Last
136        , State
137        , ForwardOp
138        > chunk_;
139
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_;
147
148    typedef typename res_::state state;
149    typedef typename res_::iterator iterator;
150};
151
152template<
153      typename First
154    , typename Last
155    , typename State
156    , typename ForwardOp
157    >
158struct iter_fold_impl< -1,First,Last,State,ForwardOp >
159    : iter_fold_impl<
160          -1
161        , typename mpl::next<First>::type
162        , Last
163        , typename apply2< ForwardOp,State,First >::type
164        , ForwardOp
165        >
166{
167};
168
169template<
170      typename Last
171    , typename State
172    , typename ForwardOp
173    >
174struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
175{
176    typedef State state;
177    typedef Last iterator;
178};
179
180}}}