]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 |