Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:41:40

0001 
0002 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
0003 
0004 // Copyright Peter Dimov 2000-2002
0005 // Copyright Aleksey Gurtovoy 2000-2004
0006 //
0007 // Distributed under the Boost Software License, Version 1.0. 
0008 // (See accompanying file LICENSE_1_0.txt or copy at 
0009 // http://www.boost.org/LICENSE_1_0.txt)
0010 //
0011 // See http://www.boost.org/libs/mpl for documentation.
0012 
0013 // $Id$
0014 // $Date$
0015 // $Revision$
0016 
0017 #if defined(BOOST_PP_IS_ITERATING)
0018 
0019 #include <boost/preprocessor/enum_params.hpp>
0020 #include <boost/preprocessor/enum_shifted_params.hpp>
0021 #include <boost/preprocessor/dec.hpp>
0022 #include <boost/preprocessor/cat.hpp>
0023 
0024 #define i BOOST_PP_FRAME_ITERATION(1)
0025 
0026 #if i == 1
0027 
0028 template<
0029       BOOST_PP_ENUM_PARAMS(i, typename T)
0030     >
0031 struct list1
0032     : l_item<
0033           long_<1>
0034         , T0
0035         , l_end
0036         >
0037 {
0038     typedef list1 type;
0039 };
0040 
0041 #else
0042 
0043 #   define MPL_AUX_LIST_TAIL(list, i, T) \
0044     BOOST_PP_CAT(list,BOOST_PP_DEC(i))< \
0045       BOOST_PP_ENUM_SHIFTED_PARAMS(i, T) \
0046     > \
0047     /**/
0048     
0049 template<
0050       BOOST_PP_ENUM_PARAMS(i, typename T)
0051     >
0052 struct BOOST_PP_CAT(list,i)
0053     : l_item<
0054           long_<i>
0055         , T0
0056         , MPL_AUX_LIST_TAIL(list,i,T)
0057         >
0058 {
0059     typedef BOOST_PP_CAT(list,i) type;
0060 };
0061 
0062 #   undef MPL_AUX_LIST_TAIL
0063 
0064 #endif // i == 1
0065 
0066 #undef i
0067 
0068 #endif // BOOST_PP_IS_ITERATING