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