annotate DEPENDENCIES/generic/include/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp @ 108:080ce3dcdd8c

Merge
author Chris Cannam
date Mon, 07 Sep 2015 14:43:59 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1
Chris@16 2 // Copyright Aleksey Gurtovoy 2000-2004
Chris@16 3 //
Chris@16 4 // Distributed under the Boost Software License, Version 1.0.
Chris@16 5 // (See accompanying file LICENSE_1_0.txt or copy at
Chris@16 6 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 7 //
Chris@16 8
Chris@16 9 // *Preprocessed* version of the main "reverse_iter_fold_impl.hpp" header
Chris@16 10 // -- DO NOT modify by hand!
Chris@16 11
Chris@16 12 namespace boost { namespace mpl { namespace aux {
Chris@16 13
Chris@16 14 /// forward declaration
Chris@16 15
Chris@16 16 template<
Chris@16 17 long N
Chris@16 18 , typename First
Chris@16 19 , typename Last
Chris@16 20 , typename State
Chris@16 21 , typename BackwardOp
Chris@16 22 , typename ForwardOp
Chris@16 23 >
Chris@16 24 struct reverse_iter_fold_impl;
Chris@16 25
Chris@16 26 template< long N >
Chris@16 27 struct reverse_iter_fold_chunk;
Chris@16 28
Chris@16 29 template<> struct reverse_iter_fold_chunk<0>
Chris@16 30 {
Chris@16 31 template<
Chris@16 32 typename First
Chris@16 33 , typename Last
Chris@16 34 , typename State
Chris@16 35 , typename BackwardOp
Chris@16 36 , typename ForwardOp
Chris@16 37 >
Chris@16 38 struct result_
Chris@16 39 {
Chris@16 40 typedef First iter0;
Chris@16 41 typedef State fwd_state0;
Chris@16 42 typedef fwd_state0 bkwd_state0;
Chris@16 43 typedef bkwd_state0 state;
Chris@16 44 typedef iter0 iterator;
Chris@16 45 };
Chris@16 46 };
Chris@16 47
Chris@16 48 template<> struct reverse_iter_fold_chunk<1>
Chris@16 49 {
Chris@16 50 template<
Chris@16 51 typename First
Chris@16 52 , typename Last
Chris@16 53 , typename State
Chris@16 54 , typename BackwardOp
Chris@16 55 , typename ForwardOp
Chris@16 56 >
Chris@16 57 struct result_
Chris@16 58 {
Chris@16 59 typedef First iter0;
Chris@16 60 typedef State fwd_state0;
Chris@16 61 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
Chris@16 62 typedef typename mpl::next<iter0>::type iter1;
Chris@16 63
Chris@16 64
Chris@16 65 typedef fwd_state1 bkwd_state1;
Chris@16 66 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
Chris@16 67 typedef bkwd_state0 state;
Chris@16 68 typedef iter1 iterator;
Chris@16 69 };
Chris@16 70 };
Chris@16 71
Chris@16 72 template<> struct reverse_iter_fold_chunk<2>
Chris@16 73 {
Chris@16 74 template<
Chris@16 75 typename First
Chris@16 76 , typename Last
Chris@16 77 , typename State
Chris@16 78 , typename BackwardOp
Chris@16 79 , typename ForwardOp
Chris@16 80 >
Chris@16 81 struct result_
Chris@16 82 {
Chris@16 83 typedef First iter0;
Chris@16 84 typedef State fwd_state0;
Chris@16 85 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
Chris@16 86 typedef typename mpl::next<iter0>::type iter1;
Chris@16 87 typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
Chris@16 88 typedef typename mpl::next<iter1>::type iter2;
Chris@16 89
Chris@16 90
Chris@16 91 typedef fwd_state2 bkwd_state2;
Chris@16 92 typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
Chris@16 93 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
Chris@16 94
Chris@16 95
Chris@16 96 typedef bkwd_state0 state;
Chris@16 97 typedef iter2 iterator;
Chris@16 98 };
Chris@16 99 };
Chris@16 100
Chris@16 101 template<> struct reverse_iter_fold_chunk<3>
Chris@16 102 {
Chris@16 103 template<
Chris@16 104 typename First
Chris@16 105 , typename Last
Chris@16 106 , typename State
Chris@16 107 , typename BackwardOp
Chris@16 108 , typename ForwardOp
Chris@16 109 >
Chris@16 110 struct result_
Chris@16 111 {
Chris@16 112 typedef First iter0;
Chris@16 113 typedef State fwd_state0;
Chris@16 114 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
Chris@16 115 typedef typename mpl::next<iter0>::type iter1;
Chris@16 116 typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
Chris@16 117 typedef typename mpl::next<iter1>::type iter2;
Chris@16 118 typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
Chris@16 119 typedef typename mpl::next<iter2>::type iter3;
Chris@16 120
Chris@16 121
Chris@16 122 typedef fwd_state3 bkwd_state3;
Chris@16 123 typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
Chris@16 124 typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
Chris@16 125 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
Chris@16 126
Chris@16 127
Chris@16 128 typedef bkwd_state0 state;
Chris@16 129 typedef iter3 iterator;
Chris@16 130 };
Chris@16 131 };
Chris@16 132
Chris@16 133 template<> struct reverse_iter_fold_chunk<4>
Chris@16 134 {
Chris@16 135 template<
Chris@16 136 typename First
Chris@16 137 , typename Last
Chris@16 138 , typename State
Chris@16 139 , typename BackwardOp
Chris@16 140 , typename ForwardOp
Chris@16 141 >
Chris@16 142 struct result_
Chris@16 143 {
Chris@16 144 typedef First iter0;
Chris@16 145 typedef State fwd_state0;
Chris@16 146 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
Chris@16 147 typedef typename mpl::next<iter0>::type iter1;
Chris@16 148 typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
Chris@16 149 typedef typename mpl::next<iter1>::type iter2;
Chris@16 150 typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
Chris@16 151 typedef typename mpl::next<iter2>::type iter3;
Chris@16 152 typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
Chris@16 153 typedef typename mpl::next<iter3>::type iter4;
Chris@16 154
Chris@16 155
Chris@16 156 typedef fwd_state4 bkwd_state4;
Chris@16 157 typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
Chris@16 158 typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
Chris@16 159 typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
Chris@16 160 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
Chris@16 161
Chris@16 162
Chris@16 163 typedef bkwd_state0 state;
Chris@16 164 typedef iter4 iterator;
Chris@16 165 };
Chris@16 166 };
Chris@16 167
Chris@16 168 template< long N >
Chris@16 169 struct reverse_iter_fold_chunk
Chris@16 170 {
Chris@16 171 template<
Chris@16 172 typename First
Chris@16 173 , typename Last
Chris@16 174 , typename State
Chris@16 175 , typename BackwardOp
Chris@16 176 , typename ForwardOp
Chris@16 177 >
Chris@16 178 struct result_
Chris@16 179 {
Chris@16 180 typedef First iter0;
Chris@16 181 typedef State fwd_state0;
Chris@16 182 typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
Chris@16 183 typedef typename mpl::next<iter0>::type iter1;
Chris@16 184 typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
Chris@16 185 typedef typename mpl::next<iter1>::type iter2;
Chris@16 186 typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
Chris@16 187 typedef typename mpl::next<iter2>::type iter3;
Chris@16 188 typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
Chris@16 189 typedef typename mpl::next<iter3>::type iter4;
Chris@16 190
Chris@16 191
Chris@16 192 typedef reverse_iter_fold_impl<
Chris@16 193 ( (N - 4) < 0 ? 0 : N - 4 )
Chris@16 194 , iter4
Chris@16 195 , Last
Chris@16 196 , fwd_state4
Chris@16 197 , BackwardOp
Chris@16 198 , ForwardOp
Chris@16 199 > nested_chunk;
Chris@16 200
Chris@16 201 typedef typename nested_chunk::state bkwd_state4;
Chris@16 202 typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
Chris@16 203 typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
Chris@16 204 typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
Chris@16 205 typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
Chris@16 206
Chris@16 207
Chris@16 208 typedef bkwd_state0 state;
Chris@16 209 typedef typename nested_chunk::iterator iterator;
Chris@16 210 };
Chris@16 211 };
Chris@16 212
Chris@16 213 template<
Chris@16 214 typename First
Chris@16 215 , typename Last
Chris@16 216 , typename State
Chris@16 217 , typename BackwardOp
Chris@16 218 , typename ForwardOp
Chris@16 219 >
Chris@16 220 struct reverse_iter_fold_step;
Chris@16 221
Chris@16 222 template<
Chris@16 223 typename Last
Chris@16 224 , typename State
Chris@16 225 >
Chris@16 226 struct reverse_iter_fold_null_step
Chris@16 227 {
Chris@16 228 typedef Last iterator;
Chris@16 229 typedef State state;
Chris@16 230 };
Chris@16 231
Chris@16 232 template<>
Chris@16 233 struct reverse_iter_fold_chunk< -1 >
Chris@16 234 {
Chris@16 235 template<
Chris@16 236 typename First
Chris@16 237 , typename Last
Chris@16 238 , typename State
Chris@16 239 , typename BackwardOp
Chris@16 240 , typename ForwardOp
Chris@16 241 >
Chris@16 242 struct result_
Chris@16 243 {
Chris@16 244 typedef typename if_<
Chris@16 245 typename is_same< First,Last >::type
Chris@16 246 , reverse_iter_fold_null_step< Last,State >
Chris@16 247 , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
Chris@16 248 >::type res_;
Chris@16 249
Chris@16 250 typedef typename res_::state state;
Chris@16 251 typedef typename res_::iterator iterator;
Chris@16 252 };
Chris@16 253 };
Chris@16 254
Chris@16 255 template<
Chris@16 256 typename First
Chris@16 257 , typename Last
Chris@16 258 , typename State
Chris@16 259 , typename BackwardOp
Chris@16 260 , typename ForwardOp
Chris@16 261 >
Chris@16 262 struct reverse_iter_fold_step
Chris@16 263 {
Chris@16 264 typedef reverse_iter_fold_chunk< -1 >::template result_<
Chris@16 265 typename mpl::next<First>::type
Chris@16 266 , Last
Chris@16 267 , typename apply2< ForwardOp,State,First >::type
Chris@16 268 , BackwardOp
Chris@16 269 , ForwardOp
Chris@16 270 > nested_step;
Chris@16 271
Chris@16 272 typedef typename apply2<
Chris@16 273 BackwardOp
Chris@16 274 , typename nested_step::state
Chris@16 275 , First
Chris@16 276 >::type state;
Chris@16 277
Chris@16 278 typedef typename nested_step::iterator iterator;
Chris@16 279 };
Chris@16 280
Chris@16 281 template<
Chris@16 282 long N
Chris@16 283 , typename First
Chris@16 284 , typename Last
Chris@16 285 , typename State
Chris@16 286 , typename BackwardOp
Chris@16 287 , typename ForwardOp
Chris@16 288 >
Chris@16 289 struct reverse_iter_fold_impl
Chris@16 290 : reverse_iter_fold_chunk<N>
Chris@16 291 ::template result_< First,Last,State,BackwardOp,ForwardOp >
Chris@16 292 {
Chris@16 293 };
Chris@16 294
Chris@16 295 }}}