OLD | NEW |
(Empty) | |
| 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_/fold_impl.hpp" header |
| 10 // -- DO NOT modify by hand! |
| 11 |
| 12 namespace boost { namespace mpl { namespace aux { |
| 13 |
| 14 /// forward declaration |
| 15 |
| 16 template< |
| 17 int N |
| 18 , typename First |
| 19 , typename Last |
| 20 , typename State |
| 21 , typename ForwardOp |
| 22 > |
| 23 struct fold_impl; |
| 24 |
| 25 template< |
| 26 typename First |
| 27 , typename Last |
| 28 , typename State |
| 29 , typename ForwardOp |
| 30 > |
| 31 struct 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 |
| 39 template< |
| 40 typename First |
| 41 , typename Last |
| 42 , typename State |
| 43 , typename ForwardOp |
| 44 > |
| 45 struct fold_impl< 1,First,Last,State,ForwardOp > |
| 46 { |
| 47 typedef First iter0; |
| 48 typedef State state0; |
| 49 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::t
ype state1; |
| 50 typedef typename mpl::next<iter0>::type iter1; |
| 51 |
| 52 |
| 53 typedef state1 state; |
| 54 typedef iter1 iterator; |
| 55 }; |
| 56 |
| 57 template< |
| 58 typename First |
| 59 , typename Last |
| 60 , typename State |
| 61 , typename ForwardOp |
| 62 > |
| 63 struct fold_impl< 2,First,Last,State,ForwardOp > |
| 64 { |
| 65 typedef First iter0; |
| 66 typedef State state0; |
| 67 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::t
ype state1; |
| 68 typedef typename mpl::next<iter0>::type iter1; |
| 69 typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::t
ype state2; |
| 70 typedef typename mpl::next<iter1>::type iter2; |
| 71 |
| 72 |
| 73 typedef state2 state; |
| 74 typedef iter2 iterator; |
| 75 }; |
| 76 |
| 77 template< |
| 78 typename First |
| 79 , typename Last |
| 80 , typename State |
| 81 , typename ForwardOp |
| 82 > |
| 83 struct fold_impl< 3,First,Last,State,ForwardOp > |
| 84 { |
| 85 typedef First iter0; |
| 86 typedef State state0; |
| 87 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::t
ype state1; |
| 88 typedef typename mpl::next<iter0>::type iter1; |
| 89 typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::t
ype state2; |
| 90 typedef typename mpl::next<iter1>::type iter2; |
| 91 typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::t
ype state3; |
| 92 typedef typename mpl::next<iter2>::type iter3; |
| 93 |
| 94 |
| 95 typedef state3 state; |
| 96 typedef iter3 iterator; |
| 97 }; |
| 98 |
| 99 template< |
| 100 typename First |
| 101 , typename Last |
| 102 , typename State |
| 103 , typename ForwardOp |
| 104 > |
| 105 struct fold_impl< 4,First,Last,State,ForwardOp > |
| 106 { |
| 107 typedef First iter0; |
| 108 typedef State state0; |
| 109 typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::t
ype state1; |
| 110 typedef typename mpl::next<iter0>::type iter1; |
| 111 typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::t
ype state2; |
| 112 typedef typename mpl::next<iter1>::type iter2; |
| 113 typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::t
ype state3; |
| 114 typedef typename mpl::next<iter2>::type iter3; |
| 115 typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::t
ype state4; |
| 116 typedef typename mpl::next<iter3>::type iter4; |
| 117 |
| 118 |
| 119 typedef state4 state; |
| 120 typedef iter4 iterator; |
| 121 }; |
| 122 |
| 123 template< |
| 124 int N |
| 125 , typename First |
| 126 , typename Last |
| 127 , typename State |
| 128 , typename ForwardOp |
| 129 > |
| 130 struct fold_impl |
| 131 { |
| 132 typedef fold_impl< |
| 133 4 |
| 134 , First |
| 135 , Last |
| 136 , State |
| 137 , ForwardOp |
| 138 > chunk_; |
| 139 |
| 140 typedef 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 |
| 152 template< |
| 153 typename First |
| 154 , typename Last |
| 155 , typename State |
| 156 , typename ForwardOp |
| 157 > |
| 158 struct fold_impl< -1,First,Last,State,ForwardOp > |
| 159 : fold_impl< |
| 160 -1 |
| 161 , typename mpl::next<First>::type |
| 162 , Last |
| 163 , typename apply2<ForwardOp,State, typename deref<First>::type>::type |
| 164 , ForwardOp |
| 165 > |
| 166 { |
| 167 }; |
| 168 |
| 169 template< |
| 170 typename Last |
| 171 , typename State |
| 172 , typename ForwardOp |
| 173 > |
| 174 struct fold_impl< -1,Last,Last,State,ForwardOp > |
| 175 { |
| 176 typedef State state; |
| 177 typedef Last iterator; |
| 178 }; |
| 179 |
| 180 }}} |
OLD | NEW |