| |
| // 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 the main "iter_fold_if_impl.hpp" header |
| // -- DO NOT modify by hand! |
| |
| namespace ndnboost { 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< |
| NDNBOOST_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< |
| NDNBOOST_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; |
| }; |
| |
| }}} |