diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-03-28 15:46:49 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-03-28 15:46:49 (GMT) |
commit | f53a1ef582494458301b97bf6e546be52d7ff7e8 (patch) | |
tree | 7571b5cbcbd8a8f1dd1c966c9045b6cb69f0e295 /3rdParty/Boost/src/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp | |
parent | 638345680d72ca6acaf123f2c8c1c391f696e371 (diff) | |
download | swift-contrib-f53a1ef582494458301b97bf6e546be52d7ff7e8.zip swift-contrib-f53a1ef582494458301b97bf6e546be52d7ff7e8.tar.bz2 |
Moving submodule contents back.
Diffstat (limited to '3rdParty/Boost/src/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp | 293 |
1 files changed, 293 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp b/3rdParty/Boost/src/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp new file mode 100644 index 0000000..69aadc4 --- /dev/null +++ b/3rdParty/Boost/src/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp @@ -0,0 +1,293 @@ + +// Copyright Aleksey Gurtovoy 2000-2004 +// +// 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_impl.hpp" header +// -- DO NOT modify by hand! + +namespace boost { namespace mpl { namespace aux { + +/// forward declaration + +template< + int N + , typename First + , typename Last + , typename State + , typename ForwardOp + > +struct iter_fold_impl; + +template< int N > +struct iter_fold_chunk; + +template<> struct iter_fold_chunk<0> +{ + template< + typename First + , typename Last + , typename State + , typename ForwardOp + > + struct result_ + { + typedef First iter0; + typedef State state0; + typedef state0 state; + typedef iter0 iterator; + }; + + /// ETI workaround + template<> struct result_< int,int,int,int > + { + typedef int state; + typedef int iterator; + }; + +}; + +template<> struct iter_fold_chunk<1> +{ + template< + typename First + , typename Last + , typename State + , typename ForwardOp + > + struct result_ + { + typedef First iter0; + typedef State state0; + typedef typename apply2< ForwardOp,state0,iter0 >::type state1; + typedef typename mpl::next<iter0>::type iter1; + + + typedef state1 state; + typedef iter1 iterator; + }; + + /// ETI workaround + template<> struct result_< int,int,int,int > + { + typedef int state; + typedef int iterator; + }; + +}; + +template<> struct iter_fold_chunk<2> +{ + template< + typename First + , typename Last + , typename State + , typename ForwardOp + > + struct result_ + { + typedef First iter0; + typedef State state0; + typedef typename apply2< ForwardOp,state0,iter0 >::type state1; + typedef typename mpl::next<iter0>::type iter1; + typedef typename apply2< ForwardOp,state1,iter1 >::type state2; + typedef typename mpl::next<iter1>::type iter2; + + + typedef state2 state; + typedef iter2 iterator; + }; + + /// ETI workaround + template<> struct result_< int,int,int,int > + { + typedef int state; + typedef int iterator; + }; + +}; + +template<> struct iter_fold_chunk<3> +{ + template< + typename First + , typename Last + , typename State + , typename ForwardOp + > + struct result_ + { + typedef First iter0; + typedef State state0; + typedef typename apply2< ForwardOp,state0,iter0 >::type state1; + typedef typename mpl::next<iter0>::type iter1; + typedef typename apply2< ForwardOp,state1,iter1 >::type state2; + typedef typename mpl::next<iter1>::type iter2; + typedef typename apply2< ForwardOp,state2,iter2 >::type state3; + typedef typename mpl::next<iter2>::type iter3; + + + typedef state3 state; + typedef iter3 iterator; + }; + + /// ETI workaround + template<> struct result_< int,int,int,int > + { + typedef int state; + typedef int iterator; + }; + +}; + +template<> struct iter_fold_chunk<4> +{ + template< + typename First + , typename Last + , typename State + , typename ForwardOp + > + struct result_ + { + typedef First iter0; + typedef State state0; + typedef typename apply2< ForwardOp,state0,iter0 >::type state1; + typedef typename mpl::next<iter0>::type iter1; + typedef typename apply2< ForwardOp,state1,iter1 >::type state2; + typedef typename mpl::next<iter1>::type iter2; + typedef typename apply2< ForwardOp,state2,iter2 >::type state3; + typedef typename mpl::next<iter2>::type iter3; + typedef typename apply2< ForwardOp,state3,iter3 >::type state4; + typedef typename mpl::next<iter3>::type iter4; + + + typedef state4 state; + typedef iter4 iterator; + }; + + /// ETI workaround + template<> struct result_< int,int,int,int > + { + typedef int state; + typedef int iterator; + }; + +}; + +template< int N > +struct iter_fold_chunk +{ + template< + typename First + , typename Last + , typename State + , typename ForwardOp + > + struct result_ + { + typedef iter_fold_impl< + 4 + , First + , Last + , State + , ForwardOp + > chunk_; + + typedef iter_fold_impl< + ( (N - 4) < 0 ? 0 : N - 4 ) + , typename chunk_::iterator + , Last + , typename chunk_::state + , ForwardOp + > res_; + + typedef typename res_::state state; + typedef typename res_::iterator iterator; + }; +}; + +template< + typename First + , typename Last + , typename State + , typename ForwardOp + > +struct iter_fold_step; + +template< + typename Last + , typename State + > +struct iter_fold_null_step +{ + typedef Last iterator; + typedef State state; +}; + +template<> +struct iter_fold_chunk< -1 > +{ + template< + typename First + , typename Last + , typename State + , typename ForwardOp + > + struct result_ + { + typedef typename if_< + typename is_same< First,Last >::type + , iter_fold_null_step< Last,State > + , iter_fold_step< First,Last,State,ForwardOp > + >::type res_; + + typedef typename res_::state state; + typedef typename res_::iterator iterator; + }; + + /// ETI workaround + template<> struct result_< int,int,int,int > + { + typedef int state; + typedef int iterator; + }; + +}; + +template< + typename First + , typename Last + , typename State + , typename ForwardOp + > +struct iter_fold_step +{ + typedef iter_fold_chunk< -1 >::template result_< + typename mpl::next<First>::type + , Last + , typename apply2< ForwardOp,State,First >::type + , ForwardOp + > chunk_; + + typedef typename chunk_::state state; + typedef typename chunk_::iterator iterator; +}; + +template< + int N + , typename First + , typename Last + , typename State + , typename ForwardOp + > +struct iter_fold_impl + : iter_fold_chunk<N> + ::template result_< First,Last,State,ForwardOp > +{ +}; + +}}} |