summaryrefslogtreecommitdiff
path: root/boost/unordered/detail/map.hpp
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2017-09-13 11:08:07 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2017-09-13 11:09:00 +0900
commitb5c87084afaef42b2d058f68091be31988a6a874 (patch)
treeadef9a65870a41181687e11d57fdf98e7629de3c /boost/unordered/detail/map.hpp
parent34bd32e225e2a8a94104489b31c42e5801cc1f4a (diff)
downloadboost-b5c87084afaef42b2d058f68091be31988a6a874.tar.gz
boost-b5c87084afaef42b2d058f68091be31988a6a874.tar.bz2
boost-b5c87084afaef42b2d058f68091be31988a6a874.zip
Imported Upstream version 1.64.0upstream/1.64.0
Change-Id: Id9212edd016dd55f21172c427aa7894d1d24148b Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/unordered/detail/map.hpp')
-rw-r--r--boost/unordered/detail/map.hpp174
1 files changed, 101 insertions, 73 deletions
diff --git a/boost/unordered/detail/map.hpp b/boost/unordered/detail/map.hpp
index 14253ef49a..cb9a954bb2 100644
--- a/boost/unordered/detail/map.hpp
+++ b/boost/unordered/detail/map.hpp
@@ -3,77 +3,105 @@
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#include <boost/unordered/detail/implementation.hpp>
#include <boost/unordered/unordered_map_fwd.hpp>
-#include <boost/unordered/detail/equivalent.hpp>
-#include <boost/unordered/detail/unique.hpp>
-
-namespace boost { namespace unordered { namespace detail {
- template <typename A, typename K, typename M, typename H, typename P>
- struct map
- {
- typedef boost::unordered::detail::map<A, K, M, H, P> types;
-
- typedef A allocator;
- typedef std::pair<K const, M> value_type;
- typedef H hasher;
- typedef P key_equal;
- typedef K key_type;
-
- typedef boost::unordered::detail::allocator_traits<allocator>
- traits;
- typedef boost::unordered::detail::pick_node<allocator, value_type> pick;
- typedef typename pick::node node;
- typedef typename pick::bucket bucket;
- typedef typename pick::link_pointer link_pointer;
-
- typedef boost::unordered::detail::table_impl<types> table;
- typedef boost::unordered::detail::map_extractor<key_type, value_type>
- extractor;
-
- typedef typename boost::unordered::detail::pick_policy<K>::type policy;
-
- typedef boost::unordered::iterator_detail::
- iterator<node> iterator;
- typedef boost::unordered::iterator_detail::
- c_iterator<node> c_iterator;
- typedef boost::unordered::iterator_detail::
- l_iterator<node, policy> l_iterator;
- typedef boost::unordered::iterator_detail::
- cl_iterator<node, policy> cl_iterator;
- };
-
- template <typename A, typename K, typename M, typename H, typename P>
- struct multimap
- {
- typedef boost::unordered::detail::multimap<A, K, M, H, P> types;
-
- typedef A allocator;
- typedef std::pair<K const, M> value_type;
- typedef H hasher;
- typedef P key_equal;
- typedef K key_type;
-
- typedef boost::unordered::detail::allocator_traits<allocator> traits;
- typedef boost::unordered::detail::pick_grouped_node<allocator,
- value_type> pick;
- typedef typename pick::node node;
- typedef typename pick::bucket bucket;
- typedef typename pick::link_pointer link_pointer;
-
- typedef boost::unordered::detail::grouped_table_impl<types> table;
- typedef boost::unordered::detail::map_extractor<key_type, value_type>
- extractor;
-
- typedef typename boost::unordered::detail::pick_policy<K>::type policy;
-
- typedef boost::unordered::iterator_detail::
- iterator<node> iterator;
- typedef boost::unordered::iterator_detail::
- c_iterator<node> c_iterator;
- typedef boost::unordered::iterator_detail::
- l_iterator<node, policy> l_iterator;
- typedef boost::unordered::iterator_detail::
- cl_iterator<node, policy> cl_iterator;
- };
-
-}}}
+
+namespace boost {
+namespace unordered {
+namespace detail {
+template <typename A, typename K, typename M, typename H, typename P> struct map
+{
+ typedef boost::unordered::detail::map<A, K, M, H, P> types;
+
+ typedef std::pair<K const, M> value_type;
+ typedef H hasher;
+ typedef P key_equal;
+ typedef K const const_key_type;
+
+ typedef typename ::boost::unordered::detail::rebind_wrap<A,
+ value_type>::type value_allocator;
+ typedef boost::unordered::detail::allocator_traits<value_allocator>
+ value_allocator_traits;
+
+ typedef boost::unordered::detail::pick_node<A, value_type> pick;
+ typedef typename pick::node node;
+ typedef typename pick::bucket bucket;
+ typedef typename pick::link_pointer link_pointer;
+ typedef typename pick::node_algo node_algo;
+
+ typedef boost::unordered::detail::table_impl<types> table;
+ typedef boost::unordered::detail::map_extractor<value_type> extractor;
+
+ typedef typename boost::unordered::detail::pick_policy<K>::type policy;
+
+ typedef boost::unordered::iterator_detail::iterator<node> iterator;
+ typedef boost::unordered::iterator_detail::c_iterator<node> c_iterator;
+ typedef boost::unordered::iterator_detail::l_iterator<node, policy>
+ l_iterator;
+ typedef boost::unordered::iterator_detail::cl_iterator<node, policy>
+ cl_iterator;
+
+ typedef boost::unordered::node_handle_map<node, K, M, A> node_type;
+ typedef boost::unordered::insert_return_type_map<node, K, M, A>
+ insert_return_type;
+};
+
+template <typename A, typename K, typename M, typename H, typename P>
+struct multimap
+{
+ typedef boost::unordered::detail::multimap<A, K, M, H, P> types;
+
+ typedef std::pair<K const, M> value_type;
+ typedef H hasher;
+ typedef P key_equal;
+ typedef K const const_key_type;
+
+ typedef typename ::boost::unordered::detail::rebind_wrap<A,
+ value_type>::type value_allocator;
+ typedef boost::unordered::detail::allocator_traits<value_allocator>
+ value_allocator_traits;
+
+#if BOOST_UNORDERED_INTEROPERABLE_NODES
+ typedef boost::unordered::detail::pick_node<A, value_type> pick;
+#else
+ typedef boost::unordered::detail::pick_grouped_node<A, value_type> pick;
+#endif
+ typedef typename pick::node node;
+ typedef typename pick::bucket bucket;
+ typedef typename pick::link_pointer link_pointer;
+ typedef typename pick::node_algo node_algo;
+
+ typedef boost::unordered::detail::grouped_table_impl<types> table;
+ typedef boost::unordered::detail::map_extractor<value_type> extractor;
+
+ typedef typename boost::unordered::detail::pick_policy<K>::type policy;
+
+ typedef boost::unordered::iterator_detail::iterator<node> iterator;
+ typedef boost::unordered::iterator_detail::c_iterator<node> c_iterator;
+ typedef boost::unordered::iterator_detail::l_iterator<node, policy>
+ l_iterator;
+ typedef boost::unordered::iterator_detail::cl_iterator<node, policy>
+ cl_iterator;
+
+ typedef boost::unordered::node_handle_map<node, K, M, A> node_type;
+};
+
+template <typename K, typename M, typename H, typename P, typename A>
+class instantiate_map
+{
+ typedef boost::unordered_map<K, M, H, P, A> container;
+ container x;
+ typename container::node_type node_type;
+ typename container::insert_return_type insert_return_type;
+};
+
+template <typename K, typename M, typename H, typename P, typename A>
+class instantiate_multimap
+{
+ typedef boost::unordered_multimap<K, M, H, P, A> container;
+ container x;
+ typename container::node_type node_type;
+};
+}
+}
+}