134 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
// 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;
 | 
						|
};
 | 
						|
 | 
						|
}}}
 |