diff options
author | Abseil Team <absl-team@google.com> | 2020-10-21 00:01:29 -0700 |
---|---|---|
committer | Gennadiy Rozental <rogeeff@google.com> | 2020-10-22 02:21:05 -0400 |
commit | eb317a701b83bf9a4f2a035d75747a3d76a48324 (patch) | |
tree | b208a95534ae461724c9f170d500915a18fa6381 /absl | |
parent | 4b915e70929ca2d6152240facc83d3d38c5d5f28 (diff) |
Export of internal Abseil changes
--
d09230db053c544c2dc7fd7d95d1ebe4302071e9 by Abseil Team <absl-team@google.com>:
Move testonly_uses_linear_node_search to BtreeNodePeer
PiperOrigin-RevId: 338210523
--
7b11c945dbba7a354103c194877eba240f7f0cbc by Derek Mauro <dmauro@google.com>:
Allow pinning to a GoogleTest commit to make the build reproducible
Allow using a cached copy of the commit to avoid depending on GitHub
PiperOrigin-RevId: 338115715
--
8414f496c570a6398744da8324e158b39a2e3d92 by Andy Getzendanner <durandal@google.com>:
Generate a pkg-config file per absl_cc_library.
PiperOrigin-RevId: 337986219
GitOrigin-RevId: d09230db053c544c2dc7fd7d95d1ebe4302071e9
Change-Id: Iae398ab8ad5c0c6833abd01aa5198315f5b6fa99
Diffstat (limited to 'absl')
-rw-r--r-- | absl/container/btree_test.cc | 61 | ||||
-rw-r--r-- | absl/container/internal/btree.h | 13 | ||||
-rw-r--r-- | absl/container/internal/btree_container.h | 1 |
3 files changed, 34 insertions, 41 deletions
diff --git a/absl/container/btree_test.cc b/absl/container/btree_test.cc index b6c11ea1..c2f098f0 100644 --- a/absl/container/btree_test.cc +++ b/absl/container/btree_test.cc @@ -1183,6 +1183,39 @@ TEST(Btree, RangeCtorSanity) { EXPECT_EQ(1, tmap.size()); } +} // namespace + +class BtreeNodePeer { + public: + // Yields the size of a leaf node with a specific number of values. + template <typename ValueType> + constexpr static size_t GetTargetNodeSize(size_t target_values_per_node) { + return btree_node< + set_params<ValueType, std::less<ValueType>, std::allocator<ValueType>, + /*TargetNodeSize=*/256, // This parameter isn't used here. + /*Multi=*/false>>::SizeWithNValues(target_values_per_node); + } + + // Yields the number of values in a (non-root) leaf node for this btree. + template <typename Btree> + constexpr static size_t GetNumValuesPerNode() { + return btree_node<typename Btree::params_type>::kNodeValues; + } + + template <typename Btree> + constexpr static size_t GetMaxFieldType() { + return std::numeric_limits< + typename btree_node<typename Btree::params_type>::field_type>::max(); + } + + template <typename Btree> + constexpr static bool UsesLinearNodeSearch() { + return btree_node<typename Btree::params_type>::use_linear_search::value; + } +}; + +namespace { + TEST(Btree, BtreeMapCanHoldMoveOnlyTypes) { absl::btree_map<std::string, std::unique_ptr<std::string>> m; @@ -1328,34 +1361,6 @@ TEST(Btree, RValueInsert) { EXPECT_EQ(tracker.swaps(), 0); } -} // namespace - -class BtreeNodePeer { - public: - // Yields the size of a leaf node with a specific number of values. - template <typename ValueType> - constexpr static size_t GetTargetNodeSize(size_t target_values_per_node) { - return btree_node< - set_params<ValueType, std::less<ValueType>, std::allocator<ValueType>, - /*TargetNodeSize=*/256, // This parameter isn't used here. - /*Multi=*/false>>::SizeWithNValues(target_values_per_node); - } - - // Yields the number of values in a (non-root) leaf node for this set. - template <typename Set> - constexpr static size_t GetNumValuesPerNode() { - return btree_node<typename Set::params_type>::kNodeValues; - } - - template <typename Set> - constexpr static size_t GetMaxFieldType() { - return std::numeric_limits< - typename btree_node<typename Set::params_type>::field_type>::max(); - } -}; - -namespace { - // A btree set with a specific number of values per node. template <typename Key, int TargetValuesPerNode, typename Cmp = std::less<Key>> class SizedBtreeSet diff --git a/absl/container/internal/btree.h b/absl/container/internal/btree.h index 55d69572..cadbeab1 100644 --- a/absl/container/internal/btree.h +++ b/absl/container/internal/btree.h @@ -803,12 +803,6 @@ class btree_node { // Deletes a node and all of its children. static void clear_and_delete(btree_node *node, allocator_type *alloc); - public: - // Exposed only for tests. - static bool testonly_uses_linear_node_search() { - return use_linear_search::value; - } - private: template <typename... Args> void value_init(const field_type i, allocator_type *alloc, Args &&... args) { @@ -1496,13 +1490,6 @@ class btree { return res; } - public: - // Exposed only for tests. - static bool testonly_uses_linear_node_search() { - return node_type::testonly_uses_linear_node_search(); - } - - private: // We use compressed tuple in order to save space because key_compare and // allocator_type are usually empty. absl::container_internal::CompressedTuple<key_compare, allocator_type, diff --git a/absl/container/internal/btree_container.h b/absl/container/internal/btree_container.h index 279024d3..2322e7c7 100644 --- a/absl/container/internal/btree_container.h +++ b/absl/container/internal/btree_container.h @@ -370,6 +370,7 @@ template <typename Tree> class btree_map_container : public btree_set_container<Tree> { using super_type = btree_set_container<Tree>; using params_type = typename Tree::params_type; + friend class BtreeNodePeer; private: template <class K> |