source: vendor/nemo/current/NEMOGCM/EXTERNAL/XIOS/extern/boost/include/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp @ 44

Last change on this file since 44 was 44, checked in by cholod, 12 years ago

Load NEMO_TMP into vendor/nemo/current.

File size: 2.1 KB
Line 
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 the main "advance_forward.hpp" header
10// -- DO NOT modify by hand!
11
12namespace boost { namespace mpl { namespace aux {
13
14template< long N > struct advance_forward;
15template<>
16struct advance_forward<0>
17{
18    template< typename Iterator > struct apply
19    {
20        typedef Iterator iter0;
21        typedef iter0 type;
22    };
23};
24
25template<>
26struct advance_forward<1>
27{
28    template< typename Iterator > struct apply
29    {
30        typedef Iterator iter0;
31        typedef typename next<iter0>::type iter1;
32        typedef iter1 type;
33    };
34};
35
36template<>
37struct advance_forward<2>
38{
39    template< typename Iterator > struct apply
40    {
41        typedef Iterator iter0;
42        typedef typename next<iter0>::type iter1;
43        typedef typename next<iter1>::type iter2;
44        typedef iter2 type;
45    };
46};
47
48template<>
49struct advance_forward<3>
50{
51    template< typename Iterator > struct apply
52    {
53        typedef Iterator iter0;
54        typedef typename next<iter0>::type iter1;
55        typedef typename next<iter1>::type iter2;
56        typedef typename next<iter2>::type iter3;
57        typedef iter3 type;
58    };
59};
60
61template<>
62struct advance_forward<4>
63{
64    template< typename Iterator > struct apply
65    {
66        typedef Iterator iter0;
67        typedef typename next<iter0>::type iter1;
68        typedef typename next<iter1>::type iter2;
69        typedef typename next<iter2>::type iter3;
70        typedef typename next<iter3>::type iter4;
71        typedef iter4 type;
72    };
73};
74
75template< long N >
76struct advance_forward
77{
78    template< typename Iterator > struct apply
79    {
80        typedef typename apply_wrap1<
81              advance_forward<4>
82            , Iterator
83            >::type chunk_result_;
84
85        typedef typename apply_wrap1<
86              advance_forward<(
87                (N - 4) < 0
88                    ? 0
89                    : N - 4
90                    )>
91            , chunk_result_
92            >::type type;
93    };
94};
95
96}}}
97
Note: See TracBrowser for help on using the repository browser.