/extlibs/Boost/include/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp
C++ Header | 231 lines | 187 code | 35 blank | 9 comment | 0 complexity | 8d67bfe838fcefb2448fab5b0b33ed7e 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}}}