Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:47:48

0001 #ifdef BOOST_MSVC
0002 #pragma warning(push)
0003 #pragma warning(disable: 4512) // assignment operator could not be generated
0004 #pragma warning(disable: 4510) // default constructor could not be generated
0005 #pragma warning(disable: 4610) // can never be instantiated - user defined constructor required
0006 #endif
0007 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0008 
0009 #ifndef BOOST_PHOENIX_SUPPORT_VECTOR_HPP
0010 #define BOOST_PHOENIX_SUPPORT_VECTOR_HPP
0011 
0012 #include <boost/phoenix/core/limits.hpp>
0013 #include <boost/phoenix/support/iterate.hpp>
0014 #include <boost/preprocessor/repetition/enum_shifted_params.hpp>
0015 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
0016 
0017 #define BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL BOOST_FUSION_ADAPT_TPL_STRUCT
0018 
0019 #include <boost/phoenix/support/preprocessed/vector.hpp>
0020 
0021 #endif
0022 
0023 #else
0024 
0025 #if !BOOST_PHOENIX_IS_ITERATING
0026 
0027 #ifndef BOOST_PHOENIX_SUPPORT_VECTOR_HPP
0028 #define BOOST_PHOENIX_SUPPORT_VECTOR_HPP
0029 
0030 #include <boost/phoenix/core/limits.hpp>
0031 #include <boost/phoenix/support/iterate.hpp>
0032 #include <boost/preprocessor/repetition/enum_shifted_params.hpp>
0033 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
0034 
0035 #define BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL BOOST_FUSION_ADAPT_TPL_STRUCT
0036 
0037 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0038 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector_" BOOST_PHOENIX_LIMIT_STR ".hpp")
0039 #endif
0040 /*==============================================================================
0041     Copyright (c) 2005-2010 Joel de Guzman
0042     Copyright (c) 2010 Thomas Heller
0043 
0044     Distributed under the Boost Software License, Version 1.0. (See accompanying
0045     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0046 ==============================================================================*/
0047 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0048 #pragma wave option(preserve: 1)
0049 #endif
0050 
0051 #define M0(Z, N, D)                                                             \
0052     typedef BOOST_PP_CAT(A, N) BOOST_PP_CAT(member_type, N);                    \
0053     BOOST_PP_CAT(A, N) BOOST_PP_CAT(a, N);                                      \
0054 /**/
0055 #define M1(Z, N, D)                                                             \
0056     (BOOST_PP_CAT(A, N))                                                        \
0057 /**/
0058 #define M2(Z, N, D)                                                             \
0059     (BOOST_PP_CAT(T, N))                                                        \
0060 /**/
0061 #define M3(Z, N, D)                                                             \
0062     (BOOST_PP_CAT(A, N), BOOST_PP_CAT(a, N))                                    \
0063 /**/
0064 
0065 namespace boost { namespace phoenix
0066 {
0067     template <typename Dummy = void>
0068     struct vector0
0069     {
0070         typedef mpl::int_<0> size_type;
0071         static const int size_value = 0;
0072     };
0073 
0074     template <int> struct vector_chooser;
0075 
0076     template <>
0077     struct vector_chooser<0>
0078     {
0079         template <typename Dummy = void>
0080         struct apply
0081         {
0082             typedef vector0<> type;
0083         };
0084     };
0085 }}
0086 
0087 
0088 #define BOOST_PHOENIX_ITERATION_PARAMS                                          \
0089         (3, (1, BOOST_PP_INC(BOOST_PHOENIX_LIMIT),                              \
0090         <boost/phoenix/support/vector.hpp>))
0091 #include BOOST_PHOENIX_ITERATE()
0092 
0093 #undef M0
0094 #undef M1
0095 #undef M2
0096 #undef M3
0097 
0098 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0099 #pragma wave option(output: null)
0100 #endif
0101 
0102 #endif
0103 
0104 #else
0105 
0106 namespace boost { namespace phoenix
0107 {
0108     template <BOOST_PHOENIX_typename_A>
0109     struct BOOST_PP_CAT(vector, BOOST_PHOENIX_ITERATION)
0110     {
0111         BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M0, _)
0112         
0113         typedef mpl::int_<BOOST_PHOENIX_ITERATION> size_type;
0114         static const int size_value = BOOST_PHOENIX_ITERATION;
0115 
0116         typedef
0117             BOOST_PP_CAT(vector, BOOST_PP_DEC(BOOST_PHOENIX_ITERATION))<BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PHOENIX_ITERATION, A)>
0118             args_type;
0119 
0120         args_type args() const
0121         {
0122             args_type r = {BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PHOENIX_ITERATION, a)};
0123             return r;
0124         }
0125     };
0126 
0127     template <>
0128     struct vector_chooser<BOOST_PHOENIX_ITERATION>
0129     {
0130         template <BOOST_PHOENIX_typename_A>
0131         struct apply
0132         {
0133             typedef BOOST_PP_CAT(vector, BOOST_PHOENIX_ITERATION)<BOOST_PHOENIX_A> type;
0134         };
0135     };
0136 }}
0137 
0138 #define BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM0                                \
0139     BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M1, _)                             \
0140 /**/
0141 #define BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM1                                \
0142    (                                                                            \
0143         BOOST_PP_CAT(                                                           \
0144             boost::phoenix::vector                                              \
0145           , BOOST_PHOENIX_ITERATION                                             \
0146         )                                                                       \
0147     )                                                                           \
0148     BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M1, _)                             \
0149 /**/
0150 #define BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM2                                \
0151     BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M3, _)                             \
0152 /**/
0153 
0154 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
0155     BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM0
0156   , BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM1
0157   , BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM2
0158 )
0159 
0160 #endif
0161 
0162 #endif
0163 
0164 #ifdef BOOST_MSVC
0165 #pragma warning(pop)
0166 #endif