/Src/Dependencies/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp
http://hadesmem.googlecode.com/ · C++ Header · 133 lines · 107 code · 17 blank · 9 comment · 0 complexity · f23b68627a3fa8f97d7741037050e150 MD5 · raw file
- // 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 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;
- };
- }}}