Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:41:16

0001 
0002 // Copyright Aleksey Gurtovoy 2000-2004
0003 //
0004 // Distributed under the Boost Software License, Version 1.0. 
0005 // (See accompanying file LICENSE_1_0.txt or copy at 
0006 // http://www.boost.org/LICENSE_1_0.txt)
0007 //
0008 
0009 // Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
0010 // -- DO NOT modify by hand!
0011 
0012 namespace boost { namespace mpl { namespace aux {
0013 
0014 template< long N > struct advance_forward;
0015 template<>
0016 struct advance_forward<0>
0017 {
0018     template< typename Iterator > struct apply
0019     {
0020         typedef Iterator iter0;
0021         typedef iter0 type;
0022     };
0023 
0024     /// ETI workaround
0025     template<> struct apply<int>
0026     {
0027         typedef int type;
0028     };
0029 
0030 };
0031 
0032 template<>
0033 struct advance_forward<1>
0034 {
0035     template< typename Iterator > struct apply
0036     {
0037         typedef Iterator iter0;
0038         typedef typename next<iter0>::type iter1;
0039         typedef iter1 type;
0040     };
0041 
0042     /// ETI workaround
0043     template<> struct apply<int>
0044     {
0045         typedef int type;
0046     };
0047 
0048 };
0049 
0050 template<>
0051 struct advance_forward<2>
0052 {
0053     template< typename Iterator > struct apply
0054     {
0055         typedef Iterator iter0;
0056         typedef typename next<iter0>::type iter1;
0057         typedef typename next<iter1>::type iter2;
0058         typedef iter2 type;
0059     };
0060 
0061     /// ETI workaround
0062     template<> struct apply<int>
0063     {
0064         typedef int type;
0065     };
0066 
0067 };
0068 
0069 template<>
0070 struct advance_forward<3>
0071 {
0072     template< typename Iterator > struct apply
0073     {
0074         typedef Iterator iter0;
0075         typedef typename next<iter0>::type iter1;
0076         typedef typename next<iter1>::type iter2;
0077         typedef typename next<iter2>::type iter3;
0078         typedef iter3 type;
0079     };
0080 
0081     /// ETI workaround
0082     template<> struct apply<int>
0083     {
0084         typedef int type;
0085     };
0086 
0087 };
0088 
0089 template<>
0090 struct advance_forward<4>
0091 {
0092     template< typename Iterator > struct apply
0093     {
0094         typedef Iterator iter0;
0095         typedef typename next<iter0>::type iter1;
0096         typedef typename next<iter1>::type iter2;
0097         typedef typename next<iter2>::type iter3;
0098         typedef typename next<iter3>::type iter4;
0099         typedef iter4 type;
0100     };
0101 
0102     /// ETI workaround
0103     template<> struct apply<int>
0104     {
0105         typedef int type;
0106     };
0107 
0108 };
0109 
0110 template< long N >
0111 struct advance_forward
0112 {
0113     template< typename Iterator > struct apply
0114     {
0115         typedef typename apply_wrap1<
0116               advance_forward<4>
0117             , Iterator
0118             >::type chunk_result_;
0119 
0120         typedef typename apply_wrap1<
0121               advance_forward<(
0122                 (N - 4) < 0
0123                     ? 0
0124                     : N - 4
0125                     )>
0126             , chunk_result_
0127             >::type type;
0128     };
0129 };
0130 
0131 }}}
0132