File indexing completed on 2025-12-16 09:47:51
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef BOOST_PP_IS_ITERATING
0009 #if !defined(FUSION_PP_MAP_TIE_20060814_1116)
0010 #define FUSION_PP_MAP_TIE_20060814_1116
0011
0012 #include <boost/preprocessor/iterate.hpp>
0013 #include <boost/preprocessor/repetition/enum_params.hpp>
0014 #include <boost/preprocessor/repetition/enum_binary_params.hpp>
0015 #include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
0016 #include <boost/preprocessor/repetition/repeat_from_to.hpp>
0017 #include <boost/fusion/container/map/map.hpp>
0018 #include <boost/fusion/container/map/detail/cpp03/limits.hpp>
0019 #include <boost/fusion/support/pair.hpp>
0020 #include <boost/fusion/container/generation/pair_tie.hpp>
0021 #include <boost/type_traits/add_reference.hpp>
0022
0023 #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
0024 #include <boost/fusion/container/generation/detail/preprocessed/map_tie.hpp>
0025 #else
0026 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
0027 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/map_tie" FUSION_MAX_MAP_SIZE_STR".hpp")
0028 #endif
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
0040 #pragma wave option(preserve: 1)
0041 #endif
0042
0043 namespace boost { namespace fusion
0044 {
0045 struct void_;
0046
0047 namespace result_of
0048 {
0049 template <
0050 BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
0051 FUSION_MAX_MAP_SIZE, typename K, void_)
0052 , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
0053 FUSION_MAX_MAP_SIZE, typename D, void_)
0054 , typename Extra = void_
0055 >
0056 struct map_tie;
0057
0058 template <>
0059 struct map_tie<>
0060 {
0061 typedef map<> type;
0062 };
0063 }
0064
0065 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0066 inline map<>
0067 map_tie()
0068 {
0069 return map<>();
0070 }
0071
0072 #define BOOST_FUSION_TIED_PAIR(z, n, data) \
0073 fusion::pair< \
0074 BOOST_PP_CAT(K, n) \
0075 , typename add_reference<BOOST_PP_CAT(D, n)>::type>
0076
0077 #define BOOST_FUSION_PAIR_TIE(z, n, _) \
0078 fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
0079
0080 #define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_map_tie.hpp>
0081 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
0082 #include BOOST_PP_ITERATE()
0083
0084 #undef BOOST_FUSION_PAIR
0085 #undef BOOST_FUSION_MAKE_PAIR
0086
0087 }}
0088
0089 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
0090 #pragma wave option(output: null)
0091 #endif
0092
0093 #endif
0094
0095 #endif
0096 #else
0097
0098
0099
0100
0101
0102
0103 #define N BOOST_PP_ITERATION()
0104
0105 namespace result_of
0106 {
0107 template <
0108 BOOST_PP_ENUM_PARAMS(N, typename K)
0109 , BOOST_PP_ENUM_PARAMS(N, typename D)
0110 >
0111 #define TEXT(z, n, text) , text
0112 struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
0113 #undef TEXT
0114 {
0115 typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
0116 };
0117 }
0118
0119 template <
0120 BOOST_PP_ENUM_PARAMS(N, typename K)
0121 , BOOST_PP_ENUM_PARAMS(N, typename D)
0122 >
0123 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0124 inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
0125 map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & arg))
0126 {
0127 return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
0128 BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, arg));
0129 }
0130
0131 #undef N
0132 #endif
0133