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