// Copyright Aleksey Gurtovoy 2001-2004 | |
// Copyright David Abrahams 2001-2002 | |
// | |
// 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_/iter_fold_if_impl.hpp" header | |
// -- DO NOT modify by hand! | |
namespace boost { namespace mpl { namespace aux { | |
template< typename Iterator, typename State > | |
struct iter_fold_if_null_step | |
{ | |
typedef State state; | |
typedef Iterator iterator; | |
}; | |
template< bool > | |
struct iter_fold_if_step_impl | |
{ | |
template< | |
typename Iterator | |
, typename State | |
, typename StateOp | |
, typename IteratorOp | |
> | |
struct result_ | |
{ | |
typedef typename apply2< StateOp,State,Iterator >::type state; | |
typedef typename IteratorOp::type iterator; | |
}; | |
}; | |
template<> | |
struct iter_fold_if_step_impl<false> | |
{ | |
template< | |
typename Iterator | |
, typename State | |
, typename StateOp | |
, typename IteratorOp | |
> | |
struct result_ | |
{ | |
typedef State state; | |
typedef Iterator iterator; | |
}; | |
}; | |
template< | |
typename Iterator | |
, typename State | |
, typename ForwardOp | |
, typename Predicate | |
> | |
struct iter_fold_if_forward_step | |
{ | |
typedef typename apply2< Predicate,State,Iterator >::type not_last; | |
typedef typename iter_fold_if_step_impl< | |
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value | |
>::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_; | |
typedef typename impl_::state state; | |
typedef typename impl_::iterator iterator; | |
}; | |
template< | |
typename Iterator | |
, typename State | |
, typename BackwardOp | |
, typename Predicate | |
> | |
struct iter_fold_if_backward_step | |
{ | |
typedef typename apply2< Predicate,State,Iterator >::type not_last; | |
typedef typename iter_fold_if_step_impl< | |
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value | |
>::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_; | |
typedef typename impl_::state state; | |
typedef typename impl_::iterator iterator; | |
}; | |
template< | |
typename Iterator | |
, typename State | |
, typename ForwardOp | |
, typename ForwardPredicate | |
, typename BackwardOp | |
, typename BackwardPredicate | |
> | |
struct iter_fold_if_impl | |
{ | |
private: | |
typedef iter_fold_if_null_step< Iterator,State > forward_step0; | |
typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1; | |
typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2; | |
typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3; | |
typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4; | |
typedef typename if_< | |
typename forward_step4::not_last | |
, iter_fold_if_impl< | |
typename forward_step4::iterator | |
, typename forward_step4::state | |
, ForwardOp | |
, ForwardPredicate | |
, BackwardOp | |
, BackwardPredicate | |
> | |
, iter_fold_if_null_step< | |
typename forward_step4::iterator | |
, typename forward_step4::state | |
> | |
>::type backward_step4; | |
typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3; | |
typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2; | |
typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1; | |
typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0; | |
public: | |
typedef typename backward_step0::state state; | |
typedef typename backward_step4::iterator iterator; | |
}; | |
}}} |