Fixes for VS 2008
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / msvc60 / advance_forward.hpp
1 \r
2 // Copyright Aleksey Gurtovoy 2000-2004\r
3 //\r
4 // Distributed under the Boost Software License, Version 1.0. \r
5 // (See accompanying file LICENSE_1_0.txt or copy at \r
6 // http://www.boost.org/LICENSE_1_0.txt)\r
7 //\r
8 \r
9 // Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header\r
10 // -- DO NOT modify by hand!\r
11 \r
12 namespace boost { namespace mpl { namespace aux {\r
13 \r
14 template< long N > struct advance_forward;\r
15 template<>\r
16 struct advance_forward<0>\r
17 {\r
18     template< typename Iterator > struct apply\r
19     {\r
20         typedef Iterator iter0;\r
21         typedef iter0 type;\r
22     };\r
23 \r
24     /// ETI workaround\r
25     template<> struct apply<int>\r
26     {\r
27         typedef int type;\r
28     };\r
29 \r
30 };\r
31 \r
32 template<>\r
33 struct advance_forward<1>\r
34 {\r
35     template< typename Iterator > struct apply\r
36     {\r
37         typedef Iterator iter0;\r
38         typedef typename next<iter0>::type iter1;\r
39         typedef iter1 type;\r
40     };\r
41 \r
42     /// ETI workaround\r
43     template<> struct apply<int>\r
44     {\r
45         typedef int type;\r
46     };\r
47 \r
48 };\r
49 \r
50 template<>\r
51 struct advance_forward<2>\r
52 {\r
53     template< typename Iterator > struct apply\r
54     {\r
55         typedef Iterator iter0;\r
56         typedef typename next<iter0>::type iter1;\r
57         typedef typename next<iter1>::type iter2;\r
58         typedef iter2 type;\r
59     };\r
60 \r
61     /// ETI workaround\r
62     template<> struct apply<int>\r
63     {\r
64         typedef int type;\r
65     };\r
66 \r
67 };\r
68 \r
69 template<>\r
70 struct advance_forward<3>\r
71 {\r
72     template< typename Iterator > struct apply\r
73     {\r
74         typedef Iterator iter0;\r
75         typedef typename next<iter0>::type iter1;\r
76         typedef typename next<iter1>::type iter2;\r
77         typedef typename next<iter2>::type iter3;\r
78         typedef iter3 type;\r
79     };\r
80 \r
81     /// ETI workaround\r
82     template<> struct apply<int>\r
83     {\r
84         typedef int type;\r
85     };\r
86 \r
87 };\r
88 \r
89 template<>\r
90 struct advance_forward<4>\r
91 {\r
92     template< typename Iterator > struct apply\r
93     {\r
94         typedef Iterator iter0;\r
95         typedef typename next<iter0>::type iter1;\r
96         typedef typename next<iter1>::type iter2;\r
97         typedef typename next<iter2>::type iter3;\r
98         typedef typename next<iter3>::type iter4;\r
99         typedef iter4 type;\r
100     };\r
101 \r
102     /// ETI workaround\r
103     template<> struct apply<int>\r
104     {\r
105         typedef int type;\r
106     };\r
107 \r
108 };\r
109 \r
110 template< long N >\r
111 struct advance_forward\r
112 {\r
113     template< typename Iterator > struct apply\r
114     {\r
115         typedef typename apply_wrap1<\r
116               advance_forward<4>\r
117             , Iterator\r
118             >::type chunk_result_;\r
119 \r
120         typedef typename apply_wrap1<\r
121               advance_forward<(\r
122                 (N - 4) < 0\r
123                     ? 0\r
124                     : N - 4\r
125                     )>\r
126             , chunk_result_\r
127             >::type type;\r
128     };\r
129 };\r
130 \r
131 }}}\r
132 \r