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;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}}}
							 |