From a30215d999d999af1b70ab1bc71de553e39075e4 Mon Sep 17 00:00:00 2001 From: Lucian Grijincu Date: Tue, 4 Oct 2016 21:28:20 -0700 Subject: [PATCH] folly: experimental: ABI-break: replace deprecated folly::StringPieceHash with folly::Hash Summary: folly::StringPieceHash has a large comment explaining why not to use it, but it's not marked as deprecated. It's also conveniently named StringPieceHash and not StringPieceHashDEPRECATED so new uses appear from time to time. Let's nuke the default before it does more damage. Reviewed By: yfeldblum Differential Revision: D3967239 fbshipit-source-id: 04b0564fdf2a70f1195ef2afdff092bc63cde975 --- folly/experimental/StringKeyedUnorderedMap.h | 15 ++++++++----- folly/experimental/StringKeyedUnorderedSet.h | 11 +++++++--- folly/experimental/test/StringKeyedTest.cpp | 23 ++++++++++++-------- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/folly/experimental/StringKeyedUnorderedMap.h b/folly/experimental/StringKeyedUnorderedMap.h index 475c1aec..c67b9089 100644 --- a/folly/experimental/StringKeyedUnorderedMap.h +++ b/folly/experimental/StringKeyedUnorderedMap.h @@ -18,9 +18,13 @@ #pragma once +#include #include #include #include +#include + +#include #include #include @@ -33,13 +37,14 @@ namespace folly { * It uses kind of hack: string pointed by StringPiece is copied when * StringPiece is inserted into map */ -template , - class Alloc = std::allocator>> +template < + class Value, + class Hash = Hash, + class Eq = std::equal_to, + class Alloc = std::allocator>> class StringKeyedUnorderedMap : private std::unordered_map { -private: + private: using Base = std::unordered_map; public: diff --git a/folly/experimental/StringKeyedUnorderedSet.h b/folly/experimental/StringKeyedUnorderedSet.h index e52feaa5..2a388e76 100644 --- a/folly/experimental/StringKeyedUnorderedSet.h +++ b/folly/experimental/StringKeyedUnorderedSet.h @@ -18,9 +18,13 @@ #pragma once +#include #include #include #include +#include + +#include #include #include @@ -33,9 +37,10 @@ namespace folly { * It uses kind of hack: string pointed by StringPiece is copied when * StringPiece is inserted into set */ -template , - class Alloc = std::allocator> +template < + class Hasher = Hash, + class Eq = std::equal_to, + class Alloc = std::allocator> class BasicStringKeyedUnorderedSet : private std::unordered_set { using Base = std::unordered_set; diff --git a/folly/experimental/test/StringKeyedTest.cpp b/folly/experimental/test/StringKeyedTest.cpp index 446e74a3..afd5a2c0 100644 --- a/folly/experimental/test/StringKeyedTest.cpp +++ b/folly/experimental/test/StringKeyedTest.cpp @@ -25,6 +25,7 @@ #include +#include #include #include #include @@ -113,19 +114,23 @@ typedef MemoryLeakCheckerAllocator> KeyLeakChecker; typedef MemoryLeakCheckerAllocator< std::allocator>> ValueLeakChecker; -typedef StringKeyedUnorderedMap, ValueLeakChecker> - LeakCheckedUnorderedMap; +typedef StringKeyedUnorderedMap< + int, + folly::Hash, + std::equal_to, + ValueLeakChecker> + LeakCheckedUnorderedMap; -typedef StringKeyedSetBase, ValueLeakChecker> LeakCheckedSet; +typedef StringKeyedSetBase, ValueLeakChecker> + LeakCheckedSet; -typedef StringKeyedMap, - ValueLeakChecker> LeakCheckedMap; +typedef StringKeyedMap, ValueLeakChecker> + LeakCheckedMap; using LeakCheckedUnorderedSet = BasicStringKeyedUnorderedSet< - folly::StringPieceHash, - std::equal_to, - ValueLeakChecker>; + folly::Hash, + std::equal_to, + ValueLeakChecker>; TEST(StringKeyedUnorderedMapTest, sanity) { LeakCheckedUnorderedMap map; -- 2.34.1