2010-07-26 17:06:36 +00:00
|
|
|
|
|
|
|
// 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;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
template<>
|
|
|
|
struct advance_backward<1>
|
|
|
|
{
|
|
|
|
template< typename Iterator > struct apply
|
|
|
|
{
|
|
|
|
typedef Iterator iter0;
|
|
|
|
typedef typename prior<iter0>::type iter1;
|
|
|
|
typedef iter1 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;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
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;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
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;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
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;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
}}}
|
|
|
|
|