1 /*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
4 Distributed under the Boost Software License, Version 1.0. (See accompanying
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 ==============================================================================*/
7 #if !defined(FUSION_MAP_07212005_1106)
8 #define FUSION_MAP_07212005_1106
10 #include <boost/fusion/support/config.hpp>
11 #include <boost/fusion/support/pair.hpp>
12 #include <boost/fusion/support/category_of.hpp>
13 #include <boost/fusion/support/detail/access.hpp>
14 #include <boost/fusion/container/map/detail/cpp03/map_fwd.hpp>
15 #include <boost/fusion/container/map/detail/cpp03/at_impl.hpp>
16 #include <boost/fusion/container/map/detail/cpp03/value_at_impl.hpp>
17 #include <boost/fusion/container/map/detail/cpp03/begin_impl.hpp>
18 #include <boost/fusion/container/map/detail/cpp03/end_impl.hpp>
19 #include <boost/fusion/container/map/detail/cpp03/value_of_impl.hpp>
20 #include <boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp>
21 #include <boost/fusion/container/map/detail/cpp03/deref_impl.hpp>
22 #include <boost/fusion/container/map/detail/cpp03/key_of_impl.hpp>
23 #include <boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp>
24 #include <boost/fusion/container/vector/vector.hpp>
25 #include <boost/mpl/identity.hpp>
26 #include <boost/mpl/bool.hpp>
27 #include <boost/preprocessor/iterate.hpp>
28 #include <boost/preprocessor/repetition/enum_params.hpp>
29 #include <boost/preprocessor/repetition/enum_binary_params.hpp>
30 #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \
31 defined(BOOST_MSVC) && (BOOST_MSVC == 1700)
32 // see map_forward_ctor.hpp
33 #include <boost/core/enable_if.hpp>
34 #include <boost/type_traits/is_same.hpp>
37 #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
38 #include <boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp>
40 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
41 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/map" FUSION_MAX_MAP_SIZE_STR ".hpp")
44 /*=============================================================================
45 Copyright (c) 2001-2011 Joel de Guzman
47 Distributed under the Boost Software License, Version 1.0. (See accompanying
48 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
50 This is an auto-generated file. Do not edit!
51 ==============================================================================*/
53 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
54 #pragma wave option(preserve: 1)
59 namespace boost { namespace fusion
62 struct fusion_sequence_tag;
64 template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, typename T)>
65 struct map : sequence_base<map<BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> >
67 struct category : random_access_traversal_tag, associative_tag {};
69 typedef map_tag fusion_tag;
70 typedef fusion_sequence_tag tag; // this gets picked up by MPL
71 typedef mpl::false_ is_view;
74 BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)>
77 typedef typename storage_type::size size;
79 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
83 BOOST_FUSION_GPU_ENABLED
87 template <typename Sequence>
88 BOOST_FUSION_GPU_ENABLED
89 map(Sequence const& rhs)
92 #include <boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp>
95 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
96 map& operator=(T const& rhs)
102 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
103 map& operator=(map const& rhs)
109 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
110 FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
112 #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
113 (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES))
114 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
116 : data(std::move(rhs.data)) {}
118 template <typename T>
119 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
120 map& operator=(T&& rhs)
122 data = BOOST_FUSION_FWD_ELEM(T, rhs);
126 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
127 map& operator=(map&& rhs)
129 data = std::move(rhs.data);
133 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
137 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
138 storage_type& get_data() { return data; }
139 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
140 storage_type const& get_data() const { return data; }
150 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
151 #pragma wave option(output: null)
154 #endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES