123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- // Copyright Aleksey Gurtovoy 2000-2004
- //
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- //
- // Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
- // -- DO NOT modify by hand!
- namespace boost { namespace mpl { namespace aux {
- template< long N > struct advance_backward;
- template<>
- struct advance_backward<0>
- {
- template< typename Iterator > struct apply
- {
- typedef Iterator iter0;
- typedef iter0 type;
- };
- /// ETI workaround
- template<> struct apply<int>
- {
- typedef int type;
- };
- };
- template<>
- struct advance_backward<1>
- {
- template< typename Iterator > struct apply
- {
- typedef Iterator iter0;
- typedef typename prior<iter0>::type iter1;
- typedef iter1 type;
- };
- /// ETI workaround
- template<> struct apply<int>
- {
- typedef int type;
- };
- };
- template<>
- struct advance_backward<2>
- {
- template< typename Iterator > struct apply
- {
- typedef Iterator iter0;
- typedef typename prior<iter0>::type iter1;
- typedef typename prior<iter1>::type iter2;
- typedef iter2 type;
- };
- /// ETI workaround
- template<> struct apply<int>
- {
- typedef int type;
- };
- };
- template<>
- struct advance_backward<3>
- {
- template< typename Iterator > struct apply
- {
- typedef Iterator iter0;
- typedef typename prior<iter0>::type iter1;
- typedef typename prior<iter1>::type iter2;
- typedef typename prior<iter2>::type iter3;
- typedef iter3 type;
- };
- /// ETI workaround
- template<> struct apply<int>
- {
- typedef int type;
- };
- };
- template<>
- struct advance_backward<4>
- {
- template< typename Iterator > struct apply
- {
- typedef Iterator iter0;
- typedef typename prior<iter0>::type iter1;
- typedef typename prior<iter1>::type iter2;
- typedef typename prior<iter2>::type iter3;
- typedef typename prior<iter3>::type iter4;
- typedef iter4 type;
- };
- /// ETI workaround
- template<> struct apply<int>
- {
- typedef int type;
- };
- };
- template< long N >
- struct advance_backward
- {
- template< typename Iterator > struct apply
- {
- typedef typename apply_wrap1<
- advance_backward<4>
- , Iterator
- >::type chunk_result_;
- typedef typename apply_wrap1<
- advance_backward<(
- (N - 4) < 0
- ? 0
- : N - 4
- )>
- , chunk_result_
- >::type type;
- };
- };
- }}}
|