source: XIOS/dev/dev_olga/src/extern/boost/include/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp @ 1022

Last change on this file since 1022 was 1022, checked in by mhnguyen, 7 years ago
File size: 2.6 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 "boost/mpl/aux_/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    /// ETI workaround
25    template<> struct apply<int>
26    {
27        typedef int type;
28    };
29
30};
31
32template<>
33struct advance_forward<1>
34{
35    template< typename Iterator > struct apply
36    {
37        typedef Iterator iter0;
38        typedef typename next<iter0>::type iter1;
39        typedef iter1 type;
40    };
41
42    /// ETI workaround
43    template<> struct apply<int>
44    {
45        typedef int type;
46    };
47
48};
49
50template<>
51struct advance_forward<2>
52{
53    template< typename Iterator > struct apply
54    {
55        typedef Iterator iter0;
56        typedef typename next<iter0>::type iter1;
57        typedef typename next<iter1>::type iter2;
58        typedef iter2 type;
59    };
60
61    /// ETI workaround
62    template<> struct apply<int>
63    {
64        typedef int type;
65    };
66
67};
68
69template<>
70struct advance_forward<3>
71{
72    template< typename Iterator > struct apply
73    {
74        typedef Iterator iter0;
75        typedef typename next<iter0>::type iter1;
76        typedef typename next<iter1>::type iter2;
77        typedef typename next<iter2>::type iter3;
78        typedef iter3 type;
79    };
80
81    /// ETI workaround
82    template<> struct apply<int>
83    {
84        typedef int type;
85    };
86
87};
88
89template<>
90struct advance_forward<4>
91{
92    template< typename Iterator > struct apply
93    {
94        typedef Iterator iter0;
95        typedef typename next<iter0>::type iter1;
96        typedef typename next<iter1>::type iter2;
97        typedef typename next<iter2>::type iter3;
98        typedef typename next<iter3>::type iter4;
99        typedef iter4 type;
100    };
101
102    /// ETI workaround
103    template<> struct apply<int>
104    {
105        typedef int type;
106    };
107
108};
109
110template< long N >
111struct advance_forward
112{
113    template< typename Iterator > struct apply
114    {
115        typedef typename apply_wrap1<
116              advance_forward<4>
117            , Iterator
118            >::type chunk_result_;
119
120        typedef typename apply_wrap1<
121              advance_forward<(
122                (N - 4) < 0
123                    ? 0
124                    : N - 4
125                    )>
126            , chunk_result_
127            >::type type;
128    };
129};
130
131}}}
132
Note: See TracBrowser for help on using the repository browser.