text: 
  // 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_/reverse_iter_fold_impl.hpp" header
  // -- DO NOT modify by hand!
  
  namespace boost { namespace mpl { namespace aux {
  
  /// forward declaration
  
  template<
        long N
      , typename First
      , typename Last
      , typename State
      , typename BackwardOp
      , typename ForwardOp
      >
  struct reverse_iter_fold_impl;
  
  template< long N >
  struct reverse_iter_fold_chunk;
  
  template<> struct reverse_iter_fold_chunk<0>
  {
      template<
            typename First
          , typename Last
          , typename State
          , typename BackwardOp
          , typename ForwardOp
          >
      struct result_
      {
          typedef First iter0;
          typedef State fwd_state0;
          typedef fwd_state0 bkwd_state0;
          typedef bkwd_state0 state;
          typedef iter0 iterator;
      };
  };
  
  template<> struct reverse_iter_fold_chunk<1>
  {
      template<
            typename First
          , typename Last
          , typename State
          , typename BackwardOp
          , typename ForwardOp
          >
      struct result_
      {
          typedef First iter0;
          typedef State fwd_state0;
          typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
          typedef typename mpl::next<iter0>::type iter1;
          
  
          typedef fwd_state1 bkwd_state1;
          typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
          typedef bkwd_state0 state;
          typedef iter1 iterator;
      };
  };
  
  template<> struct reverse_iter_fold_chunk<2>
  {
      template<
            typename First
          , typename Last
          , typename State
          , typename BackwardOp
          , typename ForwardOp
          >
      struct result_
      {
          typedef First iter0;
          typedef State fwd_state0;
          typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
          typedef typename mpl::next<iter0>::type iter1;
          typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
          typedef typename mpl::next<iter1>::type iter2;
          
  
          typedef fwd_state2 bkwd_state2;
          typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
          typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
          
  
          typedef bkwd_state0 state;
          typedef iter2 iterator;
      };
  };
  
  template<> struct reverse_iter_fold_chunk<3>
  {
      template<
            typename First
          , typename Last
          , typename State
          , typename BackwardOp
          , typename ForwardOp
          >
      struct result_
      {
          typedef First iter0;
          typedef State fwd_state0;
          typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
          typedef typename mpl::next<iter0>::type iter1;
          typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
          typedef typename mpl::next<iter1>::type iter2;
          typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
          typedef typename mpl::next<iter2>::type iter3;
          
  
          typedef fwd_state3 bkwd_state3;
          typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
          typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
          typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
          
  
          typedef bkwd_state0 state;
          typedef iter3 iterator;
      };
  };
  
  template<> struct reverse_iter_fold_chunk<4>
  {
      template<
            typename First
          , typename Last
          , typename State
          , typename BackwardOp
          , typename ForwardOp
          >
      struct result_
      {
          typedef First iter0;
          typedef State fwd_state0;
          typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
          typedef typename mpl::next<iter0>::type iter1;
          typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
          typedef typename mpl::next<iter1>::type iter2;
          typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
          typedef typename mpl::next<iter2>::type iter3;
          typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
          typedef typename mpl::next<iter3>::type iter4;
          
  
          typedef fwd_state4 bkwd_state4;
          typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
          typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
          typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
          typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
          
  
          typedef bkwd_state0 state;
          typedef iter4 iterator;
      };
  };
  
  template< long N >
  struct reverse_iter_fold_chunk
  {
      template<
            typename First
          , typename Last
          , typename State
          , typename BackwardOp
          , typename ForwardOp
          >
      struct result_
      {
          typedef First iter0;
          typedef State fwd_state0;
          typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
          typedef typename mpl::next<iter0>::type iter1;
          typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
          typedef typename mpl::next<iter1>::type iter2;
          typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
          typedef typename mpl::next<iter2>::type iter3;
          typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
          typedef typename mpl::next<iter3>::type iter4;
          
  
          typedef reverse_iter_fold_impl<
                ( (N - 4) < 0 ? 0 : N - 4 )
              , iter4
              , Last
              , fwd_state4
              , BackwardOp
              , ForwardOp
              > nested_chunk;
  
          typedef typename nested_chunk::state bkwd_state4;
          typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
          typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
          typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
          typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
          
  
          typedef bkwd_state0 state;
          typedef typename nested_chunk::iterator iterator;
      };
  };
  
  template<
        typename First
      , typename Last
      , typename State
      , typename BackwardOp
      , typename ForwardOp
      >
  struct reverse_iter_fold_step;
  
  template<
        typename Last
      , typename State
      >
  struct reverse_iter_fold_null_step
  {
      typedef Last iterator;
      typedef State state;
  };
  
  template<>
  struct reverse_iter_fold_chunk< -1 >
  {
      template<
            typename First
          , typename Last
          , typename State
          , typename BackwardOp
          , typename ForwardOp
          >
      struct result_
      {
          typedef typename if_<
                typename is_same< First,Last >::type
              , reverse_iter_fold_null_step< Last,State >
              , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
              >::type res_;
  
          typedef typename res_::state state;
          typedef typename res_::iterator iterator;
      };
  };
  
  template<
        typename First
      , typename Last
      , typename State
      , typename BackwardOp
      , typename ForwardOp
      >
  struct reverse_iter_fold_step
  {
      typedef reverse_iter_fold_chunk< -1 >::template result_<
            typename mpl::next<First>::type
          , Last
          , typename apply2< ForwardOp,State,First >::type
          , BackwardOp
          , ForwardOp
          > nested_step;
  
      typedef typename apply2<
            BackwardOp
          , typename nested_step::state
          , First
          >::type state;
  
      typedef typename nested_step::iterator iterator;
  };
  
  template<
        long N
      , typename First
      , typename Last
      , typename State
      , typename BackwardOp
      , typename ForwardOp
      >
  struct reverse_iter_fold_impl
      : reverse_iter_fold_chunk<N>
          ::template result_< First,Last,State,BackwardOp,ForwardOp >
  {
  };
  
  }}}
  