Fixes for VS 2008
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / bcc551 / 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 \r
25 template<>\r
26 struct advance_forward<1>\r
27 {\r
28     template< typename Iterator > struct apply\r
29     {\r
30         typedef Iterator iter0;\r
31         typedef typename next<iter0>::type iter1;\r
32         typedef iter1 type;\r
33     };\r
34 };\r
35 \r
36 template<>\r
37 struct advance_forward<2>\r
38 {\r
39     template< typename Iterator > struct apply\r
40     {\r
41         typedef Iterator iter0;\r
42         typedef typename next<iter0>::type iter1;\r
43         typedef typename next<iter1>::type iter2;\r
44         typedef iter2 type;\r
45     };\r
46 };\r
47 \r
48 template<>\r
49 struct advance_forward<3>\r
50 {\r
51     template< typename Iterator > struct apply\r
52     {\r
53         typedef Iterator iter0;\r
54         typedef typename next<iter0>::type iter1;\r
55         typedef typename next<iter1>::type iter2;\r
56         typedef typename next<iter2>::type iter3;\r
57         typedef iter3 type;\r
58     };\r
59 };\r
60 \r
61 template<>\r
62 struct advance_forward<4>\r
63 {\r
64     template< typename Iterator > struct apply\r
65     {\r
66         typedef Iterator iter0;\r
67         typedef typename next<iter0>::type iter1;\r
68         typedef typename next<iter1>::type iter2;\r
69         typedef typename next<iter2>::type iter3;\r
70         typedef typename next<iter3>::type iter4;\r
71         typedef iter4 type;\r
72     };\r
73 };\r
74 \r
75 template< long N >\r
76 struct advance_forward\r
77 {\r
78     template< typename Iterator > struct apply\r
79     {\r
80         typedef typename apply_wrap1<\r
81               advance_forward<4>\r
82             , Iterator\r
83             >::type chunk_result_;\r
84 \r
85         typedef typename apply_wrap1<\r
86               advance_forward<(\r
87                 (N - 4) < 0\r
88                     ? 0\r
89                     : N - 4\r
90                     )>\r
91             , chunk_result_\r
92             >::type type;\r
93     };\r
94 };\r
95 \r
96 }}}\r
97 \r