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_/advance_forward.hpp" header 10 // -- DO NOT modify by hand! 11 12 namespace boost { namespace mpl { namespace aux { 13 14 template< long N > struct advance_forward; 15 template<> 16 struct advance_forward<0> 17 { 18 template< typename Iterator > struct apply 19 { 20 typedef Iterator iter0; 21 typedef iter0 type; 22 }; 23 24 /// ETI workaround 25 template<> struct apply<int> 26 { 27 typedef int type; 28 }; 29 30 }; 31 32 template<> 33 struct advance_forward<1> 34 { 35 template< typename Iterator > struct apply 36 { 37 typedef Iterator iter0; 38 typedef typename next<iter0>::type iter1; 39 typedef iter1 type; 40 }; 41 42 /// ETI workaround 43 template<> struct apply<int> 44 { 45 typedef int type; 46 }; 47 48 }; 49 50 template<> 51 struct advance_forward<2> 52 { 53 template< typename Iterator > struct apply 54 { 55 typedef Iterator iter0; 56 typedef typename next<iter0>::type iter1; 57 typedef typename next<iter1>::type iter2; 58 typedef iter2 type; 59 }; 60 61 /// ETI workaround 62 template<> struct apply<int> 63 { 64 typedef int type; 65 }; 66 67 }; 68 69 template<> 70 struct advance_forward<3> 71 { 72 template< typename Iterator > struct apply 73 { 74 typedef Iterator iter0; 75 typedef typename next<iter0>::type iter1; 76 typedef typename next<iter1>::type iter2; 77 typedef typename next<iter2>::type iter3; 78 typedef iter3 type; 79 }; 80 81 /// ETI workaround 82 template<> struct apply<int> 83 { 84 typedef int type; 85 }; 86 87 }; 88 89 template<> 90 struct advance_forward<4> 91 { 92 template< typename Iterator > struct apply 93 { 94 typedef Iterator iter0; 95 typedef typename next<iter0>::type iter1; 96 typedef typename next<iter1>::type iter2; 97 typedef typename next<iter2>::type iter3; 98 typedef typename next<iter3>::type iter4; 99 typedef iter4 type; 100 }; 101 102 /// ETI workaround 103 template<> struct apply<int> 104 { 105 typedef int type; 106 }; 107 108 }; 109 110 template< long N > 111 struct advance_forward 112 { 113 template< typename Iterator > struct apply 114 { 115 typedef typename apply_wrap1< 116 advance_forward<4> 117 , Iterator 118 >::type chunk_result_; 119 120 typedef typename apply_wrap1< 121 advance_forward<( 122 (N - 4) < 0 123 ? 0 124 : N - 4 125 )> 126 , chunk_result_ 127 >::type type; 128 }; 129 }; 130 131 }}} 132 133