source: NonGTP/Boost/boost/mpl/list/aux_/numbered_c.hpp @ 857

Revision 857, 1.6 KB checked in by igarcia, 18 years ago (diff)
Line 
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// $Source: /cvsroot/boost/boost/boost/mpl/list/aux_/numbered_c.hpp,v $
13// $Date: 2004/11/28 01:48:53 $
14// $Revision: 1.5 $
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
27template<
28      typename T
29    , BOOST_PP_ENUM_PARAMS(i, T C)
30    >
31struct 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   
50template<
51      typename T
52    , BOOST_PP_ENUM_PARAMS(i, T C)
53    >
54struct 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
Note: See TracBrowser for help on using the repository browser.