From 679b73098ea07e89ec38d8817fc255859474b11e Mon Sep 17 00:00:00 2001 From: Daniel James Date: Tue, 25 Apr 2017 09:54:28 +0100 Subject: [PATCH] Option to use grouped nodes everywhere Seems to work okay, but I'm not happy with and of the options. So I'm going to look into doing something else before the next release. --- .travis.yml | 4 ++-- include/boost/unordered/detail/implementation.hpp | 1 + include/boost/unordered/detail/map.hpp | 10 +++++++--- include/boost/unordered/detail/set.hpp | 10 +++++++--- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index eaa2200a..03f49936 100644 --- a/.travis.yml +++ b/.travis.yml @@ -44,8 +44,8 @@ matrix: user_config="using gcc : : g++-4.8 -fsanitize=address -Werror --std=c++03 -DBOOST_UNORDERED_INTEROPERABLE_NODES=1 ;" - compiler: clang env: | - label="gcc C++11 interopable1"; - user_config="using clang : : clang++ -fsanitize=address -Werror --std=c++03 -DBOOST_UNORDERED_INTEROPERABLE_NODES=1 ;" + label="gcc C++11 interopable2"; + user_config="using clang : : clang++ -fsanitize=address -Werror --std=c++03 -DBOOST_UNORDERED_INTEROPERABLE_NODES=2 ;" before_script: - cd ${TRAVIS_BUILD_DIR} diff --git a/include/boost/unordered/detail/implementation.hpp b/include/boost/unordered/detail/implementation.hpp index 518001c8..81d2936b 100644 --- a/include/boost/unordered/detail/implementation.hpp +++ b/include/boost/unordered/detail/implementation.hpp @@ -71,6 +71,7 @@ // // 0 = Use different nodes // 1 = Use ungrouped nodes everywhere +// 2 = Use grouped nodes everywhere // // Might add an extra value to use grouped nodes everywhere later. diff --git a/include/boost/unordered/detail/map.hpp b/include/boost/unordered/detail/map.hpp index 1d963965..9b059d18 100644 --- a/include/boost/unordered/detail/map.hpp +++ b/include/boost/unordered/detail/map.hpp @@ -23,7 +23,11 @@ template struct map typedef boost::unordered::detail::allocator_traits value_allocator_traits; +#if BOOST_UNORDERED_INTEROPERABLE_NODES != 2 typedef boost::unordered::detail::pick_node pick; +#else + typedef boost::unordered::detail::pick_grouped_node pick; +#endif typedef typename pick::node node; typedef typename pick::bucket bucket; typedef typename pick::link_pointer link_pointer; @@ -65,10 +69,10 @@ struct multimap typedef boost::unordered::detail::allocator_traits value_allocator_traits; -#if BOOST_UNORDERED_INTEROPERABLE_NODES - typedef boost::unordered::detail::pick_node pick; -#else +#if BOOST_UNORDERED_INTEROPERABLE_NODES != 1 typedef boost::unordered::detail::pick_grouped_node pick; +#else + typedef boost::unordered::detail::pick_node pick; #endif typedef typename pick::node node; typedef typename pick::bucket bucket; diff --git a/include/boost/unordered/detail/set.hpp b/include/boost/unordered/detail/set.hpp index 7b9bdca3..6de4423c 100644 --- a/include/boost/unordered/detail/set.hpp +++ b/include/boost/unordered/detail/set.hpp @@ -23,7 +23,11 @@ template struct set typedef boost::unordered::detail::allocator_traits value_allocator_traits; +#if BOOST_UNORDERED_INTEROPERABLE_NODES != 2 typedef boost::unordered::detail::pick_node pick; +#else + typedef boost::unordered::detail::pick_grouped_node pick; +#endif typedef typename pick::node node; typedef typename pick::bucket bucket; typedef typename pick::link_pointer link_pointer; @@ -64,10 +68,10 @@ template struct multiset typedef boost::unordered::detail::allocator_traits value_allocator_traits; -#if BOOST_UNORDERED_INTEROPERABLE_NODES - typedef boost::unordered::detail::pick_node pick; -#else +#if BOOST_UNORDERED_INTEROPERABLE_NODES != 1 typedef boost::unordered::detail::pick_grouped_node pick; +#else + typedef boost::unordered::detail::pick_node pick; #endif typedef typename pick::node node; typedef typename pick::bucket bucket;