]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/fusion/include/boost/fusion/container/map/detail/cpp03/map.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / fusion / include / boost / fusion / container / map / detail / cpp03 / map.hpp
1 /*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
3
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
9
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>
35 #endif
36
37 #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
38 #include <boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp>
39 #else
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")
42 #endif
43
44 /*=============================================================================
45 Copyright (c) 2001-2011 Joel de Guzman
46
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)
49
50 This is an auto-generated file. Do not edit!
51 ==============================================================================*/
52
53 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
54 #pragma wave option(preserve: 1)
55 #endif
56
57 #define FUSION_HASH #
58
59 namespace boost { namespace fusion
60 {
61 struct void_;
62 struct fusion_sequence_tag;
63
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)> >
66 {
67 struct category : random_access_traversal_tag, associative_tag {};
68
69 typedef map_tag fusion_tag;
70 typedef fusion_sequence_tag tag; // this gets picked up by MPL
71 typedef mpl::false_ is_view;
72
73 typedef vector<
74 BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)>
75 storage_type;
76
77 typedef typename storage_type::size size;
78
79 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
80 map()
81 : data() {}
82
83 BOOST_FUSION_GPU_ENABLED
84 map(map const& rhs)
85 : data(rhs.data) {}
86
87 template <typename Sequence>
88 BOOST_FUSION_GPU_ENABLED
89 map(Sequence const& rhs)
90 : data(rhs) {}
91
92 #include <boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp>
93
94 template <typename T>
95 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
96 map& operator=(T const& rhs)
97 {
98 data = rhs;
99 return *this;
100 }
101
102 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
103 map& operator=(map const& rhs)
104 {
105 data = rhs.data;
106 return *this;
107 }
108
109 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
110 FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
111 #endif
112 #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
113 (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES))
114 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
115 map(map&& rhs)
116 : data(std::move(rhs.data)) {}
117
118 template <typename T>
119 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
120 map& operator=(T&& rhs)
121 {
122 data = BOOST_FUSION_FWD_ELEM(T, rhs);
123 return *this;
124 }
125
126 BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
127 map& operator=(map&& rhs)
128 {
129 data = std::move(rhs.data);
130 return *this;
131 }
132 #endif
133 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
134 FUSION_HASH endif
135 #endif
136
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; }
141
142 private:
143
144 storage_type data;
145 };
146 }}
147
148 #undef FUSION_HASH
149
150 #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
151 #pragma wave option(output: null)
152 #endif
153
154 #endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
155
156 #endif