-\r
-// Copyright Aleksey Gurtovoy 2000-2004\r
-//\r
-// Distributed under the Boost Software License, Version 1.0. \r
-// (See accompanying file LICENSE_1_0.txt or copy at \r
-// http://www.boost.org/LICENSE_1_0.txt)\r
-//\r
-\r
-// *Preprocessed* version of the main "iter_fold_impl.hpp" header\r
-// -- DO NOT modify by hand!\r
-\r
-namespace boost { namespace mpl { namespace aux {\r
-\r
-/// forward declaration\r
-\r
-template<\r
- int N\r
- , typename First\r
- , typename Last\r
- , typename State\r
- , typename ForwardOp\r
- >\r
-struct iter_fold_impl;\r
-\r
-template<\r
- typename First\r
- , typename Last\r
- , typename State\r
- , typename ForwardOp\r
- >\r
-struct iter_fold_impl< 0,First,Last,State,ForwardOp >\r
-{\r
- typedef First iter0;\r
- typedef State state0;\r
- typedef state0 state;\r
- typedef iter0 iterator;\r
-};\r
-\r
-template<\r
- typename First\r
- , typename Last\r
- , typename State\r
- , typename ForwardOp\r
- >\r
-struct iter_fold_impl< 1,First,Last,State,ForwardOp >\r
-{\r
- typedef First iter0;\r
- typedef State state0;\r
- typedef typename apply2< ForwardOp,state0,iter0 >::type state1;\r
- typedef typename mpl::next<iter0>::type iter1;\r
- \r
-\r
- typedef state1 state;\r
- typedef iter1 iterator;\r
-};\r
-\r
-template<\r
- typename First\r
- , typename Last\r
- , typename State\r
- , typename ForwardOp\r
- >\r
-struct iter_fold_impl< 2,First,Last,State,ForwardOp >\r
-{\r
- typedef First iter0;\r
- typedef State state0;\r
- typedef typename apply2< ForwardOp,state0,iter0 >::type state1;\r
- typedef typename mpl::next<iter0>::type iter1;\r
- typedef typename apply2< ForwardOp,state1,iter1 >::type state2;\r
- typedef typename mpl::next<iter1>::type iter2;\r
- \r
-\r
- typedef state2 state;\r
- typedef iter2 iterator;\r
-};\r
-\r
-template<\r
- typename First\r
- , typename Last\r
- , typename State\r
- , typename ForwardOp\r
- >\r
-struct iter_fold_impl< 3,First,Last,State,ForwardOp >\r
-{\r
- typedef First iter0;\r
- typedef State state0;\r
- typedef typename apply2< ForwardOp,state0,iter0 >::type state1;\r
- typedef typename mpl::next<iter0>::type iter1;\r
- typedef typename apply2< ForwardOp,state1,iter1 >::type state2;\r
- typedef typename mpl::next<iter1>::type iter2;\r
- typedef typename apply2< ForwardOp,state2,iter2 >::type state3;\r
- typedef typename mpl::next<iter2>::type iter3;\r
- \r
-\r
- typedef state3 state;\r
- typedef iter3 iterator;\r
-};\r
-\r
-template<\r
- typename First\r
- , typename Last\r
- , typename State\r
- , typename ForwardOp\r
- >\r
-struct iter_fold_impl< 4,First,Last,State,ForwardOp >\r
-{\r
- typedef First iter0;\r
- typedef State state0;\r
- typedef typename apply2< ForwardOp,state0,iter0 >::type state1;\r
- typedef typename mpl::next<iter0>::type iter1;\r
- typedef typename apply2< ForwardOp,state1,iter1 >::type state2;\r
- typedef typename mpl::next<iter1>::type iter2;\r
- typedef typename apply2< ForwardOp,state2,iter2 >::type state3;\r
- typedef typename mpl::next<iter2>::type iter3;\r
- typedef typename apply2< ForwardOp,state3,iter3 >::type state4;\r
- typedef typename mpl::next<iter3>::type iter4;\r
- \r
-\r
- typedef state4 state;\r
- typedef iter4 iterator;\r
-};\r
-\r
-template<\r
- int N\r
- , typename First\r
- , typename Last\r
- , typename State\r
- , typename ForwardOp\r
- >\r
-struct iter_fold_impl\r
-{\r
- typedef iter_fold_impl<\r
- 4\r
- , First\r
- , Last\r
- , State\r
- , ForwardOp\r
- > chunk_;\r
-\r
- typedef iter_fold_impl<\r
- ( (N - 4) < 0 ? 0 : N - 4 )\r
- , typename chunk_::iterator\r
- , Last\r
- , typename chunk_::state\r
- , ForwardOp\r
- > res_;\r
-\r
- typedef typename res_::state state;\r
- typedef typename res_::iterator iterator;\r
-};\r
-\r
-template<\r
- typename First\r
- , typename Last\r
- , typename State\r
- , typename ForwardOp\r
- >\r
-struct iter_fold_impl< -1,First,Last,State,ForwardOp >\r
- : iter_fold_impl<\r
- -1\r
- , typename mpl::next<First>::type\r
- , Last\r
- , typename apply2< ForwardOp,State,First >::type\r
- , ForwardOp\r
- >\r
-{\r
-};\r
-\r
-template<\r
- typename Last\r
- , typename State\r
- , typename ForwardOp\r
- >\r
-struct iter_fold_impl< -1,Last,Last,State,ForwardOp >\r
-{\r
- typedef State state;\r
- typedef Last iterator;\r
-};\r
-\r
-}}}\r
+
+// 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 the main "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<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+ 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;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+ 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;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+ 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;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+ 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;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+{
+ 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_impl< -1,First,Last,State,ForwardOp >
+ : iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}