blob: dc8fd637318815adf5f47eace1ea57cded7f8c56 [file] [log] [blame]
Jeff Thompsonef2d5a42013-08-22 19:09:24 -07001
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
Jeff Thompson3d613fd2013-10-15 15:39:04 -070016#if defined(NDNBOOST_PP_IS_ITERATING)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070017
18#include <ndnboost/preprocessor/enum_params.hpp>
19#include <ndnboost/preprocessor/enum_shifted_params.hpp>
20#include <ndnboost/preprocessor/dec.hpp>
21#include <ndnboost/preprocessor/cat.hpp>
22
Jeff Thompson3d613fd2013-10-15 15:39:04 -070023#define i NDNBOOST_PP_FRAME_ITERATION(1)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070024
25#if i == 1
26
27template<
28 typename T
Jeff Thompson3d613fd2013-10-15 15:39:04 -070029 , NDNBOOST_PP_ENUM_PARAMS(i, T C)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070030 >
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) \
Jeff Thompson3d613fd2013-10-15 15:39:04 -070045 NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(list,NDNBOOST_PP_DEC(i)),_c)<T, \
46 NDNBOOST_PP_ENUM_SHIFTED_PARAMS(i, C) \
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070047 > \
48 /**/
49
50template<
51 typename T
Jeff Thompson3d613fd2013-10-15 15:39:04 -070052 , NDNBOOST_PP_ENUM_PARAMS(i, T C)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070053 >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070054struct NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(list,i),_c)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070055 : l_item<
56 long_<i>
57 , integral_c<T,C0>
58 , MPL_AUX_LIST_C_TAIL(list,i,C)
59 >
60{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070061 typedef NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(list,i),_c) type;
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070062 typedef T value_type;
63};
64
65# undef MPL_AUX_LIST_C_TAIL
66
67#endif // i == 1
68
69#undef i
70
Jeff Thompson3d613fd2013-10-15 15:39:04 -070071#endif // NDNBOOST_PP_IS_ITERATING