epoc32/include/stdapis/boost/mpl/aux_/iter_fold_impl.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp@2fe1408b6811
child 4 837f303aceeb
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
     1 
     2 // Copyright Aleksey Gurtovoy 2000-2004
     3 //
     4 // Distributed under the Boost Software License, Version 1.0. 
     5 // (See accompanying file LICENSE_1_0.txt or copy at 
     6 // http://www.boost.org/LICENSE_1_0.txt)
     7 //
     8 
     9 // Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
    10 // -- DO NOT modify by hand!
    11 
    12 namespace boost { namespace mpl { namespace aux {
    13 
    14 /// forward declaration
    15 
    16 template<
    17       int N
    18     , typename First
    19     , typename Last
    20     , typename State
    21     , typename ForwardOp
    22     >
    23 struct iter_fold_impl;
    24 
    25 template<
    26       typename First
    27     , typename Last
    28     , typename State
    29     , typename ForwardOp
    30     >
    31 struct iter_fold_impl< 0,First,Last,State,ForwardOp >
    32 {
    33     typedef First iter0;
    34     typedef State state0;
    35     typedef state0 state;
    36     typedef iter0 iterator;
    37 };
    38 
    39 template<
    40       typename First
    41     , typename Last
    42     , typename State
    43     , typename ForwardOp
    44     >
    45 struct iter_fold_impl< 1,First,Last,State,ForwardOp >
    46 {
    47     typedef First iter0;
    48     typedef State state0;
    49     typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
    50     typedef typename mpl::next<iter0>::type iter1;
    51     
    52 
    53     typedef state1 state;
    54     typedef iter1 iterator;
    55 };
    56 
    57 template<
    58       typename First
    59     , typename Last
    60     , typename State
    61     , typename ForwardOp
    62     >
    63 struct iter_fold_impl< 2,First,Last,State,ForwardOp >
    64 {
    65     typedef First iter0;
    66     typedef State state0;
    67     typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
    68     typedef typename mpl::next<iter0>::type iter1;
    69     typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
    70     typedef typename mpl::next<iter1>::type iter2;
    71     
    72 
    73     typedef state2 state;
    74     typedef iter2 iterator;
    75 };
    76 
    77 template<
    78       typename First
    79     , typename Last
    80     , typename State
    81     , typename ForwardOp
    82     >
    83 struct iter_fold_impl< 3,First,Last,State,ForwardOp >
    84 {
    85     typedef First iter0;
    86     typedef State state0;
    87     typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
    88     typedef typename mpl::next<iter0>::type iter1;
    89     typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
    90     typedef typename mpl::next<iter1>::type iter2;
    91     typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
    92     typedef typename mpl::next<iter2>::type iter3;
    93     
    94 
    95     typedef state3 state;
    96     typedef iter3 iterator;
    97 };
    98 
    99 template<
   100       typename First
   101     , typename Last
   102     , typename State
   103     , typename ForwardOp
   104     >
   105 struct iter_fold_impl< 4,First,Last,State,ForwardOp >
   106 {
   107     typedef First iter0;
   108     typedef State state0;
   109     typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
   110     typedef typename mpl::next<iter0>::type iter1;
   111     typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
   112     typedef typename mpl::next<iter1>::type iter2;
   113     typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
   114     typedef typename mpl::next<iter2>::type iter3;
   115     typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
   116     typedef typename mpl::next<iter3>::type iter4;
   117     
   118 
   119     typedef state4 state;
   120     typedef iter4 iterator;
   121 };
   122 
   123 template<
   124       int N
   125     , typename First
   126     , typename Last
   127     , typename State
   128     , typename ForwardOp
   129     >
   130 struct iter_fold_impl
   131 {
   132     typedef iter_fold_impl<
   133           4
   134         , First
   135         , Last
   136         , State
   137         , ForwardOp
   138         > chunk_;
   139 
   140     typedef iter_fold_impl<
   141           ( (N - 4) < 0 ? 0 : N - 4 )
   142         , typename chunk_::iterator
   143         , Last
   144         , typename chunk_::state
   145         , ForwardOp
   146         > res_;
   147 
   148     typedef typename res_::state state;
   149     typedef typename res_::iterator iterator;
   150 };
   151 
   152 template<
   153       typename First
   154     , typename Last
   155     , typename State
   156     , typename ForwardOp
   157     >
   158 struct iter_fold_impl< -1,First,Last,State,ForwardOp >
   159     : iter_fold_impl<
   160           -1
   161         , typename mpl::next<First>::type
   162         , Last
   163         , typename apply2< ForwardOp,State,First >::type
   164         , ForwardOp
   165         >
   166 {
   167 };
   168 
   169 template<
   170       typename Last
   171     , typename State
   172     , typename ForwardOp
   173     >
   174 struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
   175 {
   176     typedef State state;
   177     typedef Last iterator;
   178 };
   179 
   180 }}}