diff options
author | Abseil Team <absl-team@google.com> | 2022-02-23 06:56:15 -0800 |
---|---|---|
committer | rogeeff <rogeeff@google.com> | 2022-02-23 10:24:01 -0500 |
commit | 0ad7994f10624cd1538b1287e56cae5ac9c0cb40 (patch) | |
tree | 2b8d698744e29cacfa524aee77930f69a27794e3 /absl/container/btree_set.h | |
parent | 808bc202fc13e85a7948db0d7fb58f0f051200b1 (diff) | |
download | abseil-0ad7994f10624cd1538b1287e56cae5ac9c0cb40.tar.gz abseil-0ad7994f10624cd1538b1287e56cae5ac9c0cb40.tar.bz2 abseil-0ad7994f10624cd1538b1287e56cae5ac9c0cb40.zip |
Export of internal Abseil changes
--
91d76b3ac9edff91f206d9eee60423c39eeeaf93 by Derek Mauro <dmauro@google.com>:
Internal change
PiperOrigin-RevId: 430442277
--
9f8a87bcc5cc5b0fd8b7f0318f37d152fd8bea06 by Evan Brown <ezb@google.com>:
Small refactoring to work towards allowing for node_btree_* containers.
- Change common_params::transfer to rely on slot_policy transfer instead of manually doing construct/destruct. Transfer is not construct/destruct for node containers.
- Move maps' value_compare into btree.h from btree_map.h so it can be reused for node_btree_map.h.
- Also add a test for maps' value_compare protected members.
PiperOrigin-RevId: 430245542
--
0126e0b6295342317d9c9f0a66e2d7009b858426 by Martijn Vels <mvels@google.com>:
Add CordRepSubString::Create function with hard checks on IsFlat() | IsExternal()
This hardens internal invariants, IsFlat() || IsExternal() is a cheap, single predicted branch, and removes boilerplate code from cord.cc
PiperOrigin-RevId: 429676041
--
ed98a92af49d9e238d9f1d1b69fb4eddcd1ccbc7 by Abseil Team <absl-team@google.com>:
tweaks to status.h documentation to reflect general-purpose communication
PiperOrigin-RevId: 429584104
GitOrigin-RevId: 91d76b3ac9edff91f206d9eee60423c39eeeaf93
Change-Id: I54d6d116a564f86a842b983ca76559bf9b388f72
Diffstat (limited to 'absl/container/btree_set.h')
-rw-r--r-- | absl/container/btree_set.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/absl/container/btree_set.h b/absl/container/btree_set.h index 78826830..7b6655ad 100644 --- a/absl/container/btree_set.h +++ b/absl/container/btree_set.h @@ -61,7 +61,7 @@ template <typename Key> struct set_slot_policy; template <typename Key, typename Compare, typename Alloc, int TargetNodeSize, - bool Multi> + bool IsMulti> struct set_params; } // namespace container_internal @@ -87,7 +87,7 @@ class btree_set : public container_internal::btree_set_container< container_internal::btree<container_internal::set_params< Key, Compare, Alloc, /*TargetNodeSize=*/256, - /*Multi=*/false>>> { + /*IsMulti=*/false>>> { using Base = typename btree_set::btree_set_container; public: @@ -427,7 +427,7 @@ class btree_multiset : public container_internal::btree_multiset_container< container_internal::btree<container_internal::set_params< Key, Compare, Alloc, /*TargetNodeSize=*/256, - /*Multi=*/true>>> { + /*IsMulti=*/true>>> { using Base = typename btree_multiset::btree_multiset_container; public: @@ -757,6 +757,12 @@ struct set_slot_policy { } template <typename Alloc> + static void transfer(Alloc *alloc, slot_type *new_slot, slot_type *old_slot) { + construct(alloc, new_slot, old_slot); + destroy(alloc, old_slot); + } + + template <typename Alloc> static void swap(Alloc * /*alloc*/, slot_type *a, slot_type *b) { using std::swap; swap(*a, *b); @@ -771,14 +777,11 @@ struct set_slot_policy { // A parameters structure for holding the type parameters for a btree_set. // Compare and Alloc should be nothrow copy-constructible. template <typename Key, typename Compare, typename Alloc, int TargetNodeSize, - bool Multi> -struct set_params : common_params<Key, Compare, Alloc, TargetNodeSize, Multi, - set_slot_policy<Key>> { + bool IsMulti> +struct set_params : common_params<Key, Compare, Alloc, TargetNodeSize, IsMulti, + /*IsMap=*/false, set_slot_policy<Key>> { using value_type = Key; using slot_type = typename set_params::common_params::slot_type; - using value_compare = - typename set_params::common_params::original_key_compare; - using is_map_container = std::false_type; template <typename V> static const V &key(const V &value) { |