Back to home page

EIC code displayed by LXR

 
 

    


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

0001 
0002 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
0003 
0004 #if defined(BOOST_PP_IS_ITERATING)
0005 
0006 // Copyright Aleksey Gurtovoy 2000-2004
0007 //
0008 // Distributed under the Boost Software License, Version 1.0. 
0009 // (See accompanying file LICENSE_1_0.txt or copy at 
0010 // http://www.boost.org/LICENSE_1_0.txt)
0011 //
0012 // See http://www.boost.org/libs/mpl for documentation.
0013 
0014 // $Id$
0015 // $Date$
0016 // $Revision$
0017 
0018 #include <boost/preprocessor/enum_params.hpp>
0019 #include <boost/preprocessor/enum_shifted_params.hpp>
0020 #include <boost/preprocessor/comma_if.hpp>
0021 #include <boost/preprocessor/repeat.hpp>
0022 #include <boost/preprocessor/dec.hpp>
0023 #include <boost/preprocessor/cat.hpp>
0024 
0025 #define i_ BOOST_PP_FRAME_ITERATION(1)
0026 
0027 #if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
0028 
0029 #   define AUX778076_VECTOR_TAIL(vector, i_, C) \
0030     BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)<T \
0031           BOOST_PP_COMMA_IF(i_) BOOST_PP_ENUM_PARAMS(i_, C) \
0032         > \
0033     /**/
0034 
0035 #if i_ > 0
0036 template<
0037       typename T
0038     , BOOST_PP_ENUM_PARAMS(i_, T C)
0039     >
0040 struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)
0041     : v_item<
0042           integral_c<T,BOOST_PP_CAT(C,BOOST_PP_DEC(i_))>
0043         , AUX778076_VECTOR_TAIL(vector,BOOST_PP_DEC(i_),C)
0044         >
0045 {
0046     typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type;
0047     typedef T value_type;
0048 };
0049 #endif
0050 
0051 #   undef AUX778076_VECTOR_TAIL
0052 
0053 #else // "brute force" implementation
0054 
0055 #   define AUX778076_VECTOR_C_PARAM_FUNC(unused, i_, param) \
0056     BOOST_PP_COMMA_IF(i_) \
0057     integral_c<T,BOOST_PP_CAT(param,i_)> \
0058     /**/
0059 
0060 template<
0061       typename T
0062     , BOOST_PP_ENUM_PARAMS(i_, T C)
0063     >
0064 struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)
0065     : BOOST_PP_CAT(vector,i_)< BOOST_PP_REPEAT(i_,AUX778076_VECTOR_C_PARAM_FUNC,C) >
0066 {
0067     typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type;
0068     typedef T value_type;
0069 };
0070 
0071 #   undef AUX778076_VECTOR_C_PARAM_FUNC
0072 
0073 #endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
0074 
0075 #undef i_
0076 
0077 #endif // BOOST_PP_IS_ITERATING