]> git.donarmstrong.com Git - rsem.git/blob - boost/mpl/list/aux_/numbered_c.hpp
Updated boost to v1.55.0
[rsem.git] / boost / mpl / list / aux_ / numbered_c.hpp
1
2 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
3
4 // Copyright Aleksey Gurtovoy 2000-2004
5 //
6 // Distributed under the Boost Software License, Version 1.0. 
7 // (See accompanying file LICENSE_1_0.txt or copy at 
8 // http://www.boost.org/LICENSE_1_0.txt)
9 //
10 // See http://www.boost.org/libs/mpl for documentation.
11
12 // $Id: numbered_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
13 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
14 // $Revision: 49267 $
15
16 #if defined(BOOST_PP_IS_ITERATING)
17
18 #include <boost/preprocessor/enum_params.hpp>
19 #include <boost/preprocessor/enum_shifted_params.hpp>
20 #include <boost/preprocessor/dec.hpp>
21 #include <boost/preprocessor/cat.hpp>
22
23 #define i BOOST_PP_FRAME_ITERATION(1)
24
25 #if i == 1
26
27 template<
28       typename T
29     , BOOST_PP_ENUM_PARAMS(i, T C)
30     >
31 struct list1_c
32     : l_item<
33           long_<1>
34         , integral_c<T,C0>
35         , l_end
36         >
37 {
38     typedef list1_c type;
39     typedef T value_type;
40 };
41
42 #else
43
44 #   define MPL_AUX_LIST_C_TAIL(list, i, C) \
45     BOOST_PP_CAT(BOOST_PP_CAT(list,BOOST_PP_DEC(i)),_c)<T, \
46       BOOST_PP_ENUM_SHIFTED_PARAMS(i, C) \
47     > \
48     /**/
49     
50 template<
51       typename T
52     , BOOST_PP_ENUM_PARAMS(i, T C)
53     >
54 struct BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c)
55     : l_item<
56           long_<i>
57         , integral_c<T,C0>
58         , MPL_AUX_LIST_C_TAIL(list,i,C)
59         >
60 {
61     typedef BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c) type;
62     typedef T value_type;
63 };
64
65 #   undef MPL_AUX_LIST_C_TAIL
66
67 #endif // i == 1
68
69 #undef i
70
71 #endif // BOOST_PP_IS_ITERATING