Commit bb5932ed authored by Xiao Shi's avatar Xiao Shi Committed by Facebook Github Bot

lift Default{Hasher, KeyEqual, Alloc} out of detail namespace

Summary:
Expose the default structs in `folly::f14` namespace so that users _could_
potentially refer to them.

Reviewed By: nbronson

Differential Revision: D7271846

fbshipit-source-id: 81a193209e59ed80260098ed97c99a7b6f2ad151
parent d277c610
......@@ -723,9 +723,9 @@ bool mapsEqual(M const& lhs, M const& rhs) {
template <
typename Key,
typename Mapped,
typename Hasher = f14::detail::DefaultHasher<Key>,
typename KeyEqual = f14::detail::DefaultKeyEqual<Key>,
typename Alloc = f14::detail::DefaultAlloc<std::pair<Key const, Mapped>>>
typename Hasher = f14::DefaultHasher<Key>,
typename KeyEqual = f14::DefaultKeyEqual<Key>,
typename Alloc = f14::DefaultAlloc<std::pair<Key const, Mapped>>>
class F14ValueMap
: public f14::detail::F14BasicMap<f14::detail::MapPolicyWithDefaults<
f14::detail::ValueContainerPolicy,
......@@ -780,9 +780,9 @@ bool operator!=(
template <
typename Key,
typename Mapped,
typename Hasher = f14::detail::DefaultHasher<Key>,
typename KeyEqual = f14::detail::DefaultKeyEqual<Key>,
typename Alloc = f14::detail::DefaultAlloc<std::pair<Key const, Mapped>>>
typename Hasher = f14::DefaultHasher<Key>,
typename KeyEqual = f14::DefaultKeyEqual<Key>,
typename Alloc = f14::DefaultAlloc<std::pair<Key const, Mapped>>>
class F14NodeMap
: public f14::detail::F14BasicMap<f14::detail::MapPolicyWithDefaults<
f14::detail::NodeContainerPolicy,
......@@ -839,9 +839,9 @@ bool operator!=(
template <
typename Key,
typename Mapped,
typename Hasher = f14::detail::DefaultHasher<Key>,
typename KeyEqual = f14::detail::DefaultKeyEqual<Key>,
typename Alloc = f14::detail::DefaultAlloc<std::pair<Key const, Mapped>>>
typename Hasher = f14::DefaultHasher<Key>,
typename KeyEqual = f14::DefaultKeyEqual<Key>,
typename Alloc = f14::DefaultAlloc<std::pair<Key const, Mapped>>>
class F14VectorMap
: public f14::detail::F14BasicMap<f14::detail::MapPolicyWithDefaults<
f14::detail::VectorContainerPolicy,
......@@ -976,9 +976,9 @@ bool operator!=(
template <
typename Key,
typename Mapped,
typename Hasher = f14::detail::DefaultHasher<Key>,
typename KeyEqual = f14::detail::DefaultKeyEqual<Key>,
typename Alloc = f14::detail::DefaultAlloc<std::pair<Key const, Mapped>>>
typename Hasher = f14::DefaultHasher<Key>,
typename KeyEqual = f14::DefaultKeyEqual<Key>,
typename Alloc = f14::DefaultAlloc<std::pair<Key const, Mapped>>>
using F14FastMap = std::conditional_t<
sizeof(std::pair<Key const, Mapped>) < 24,
F14ValueMap<Key, Mapped, Hasher, KeyEqual, Alloc>,
......
......@@ -506,9 +506,9 @@ bool setsEqual(S const& lhs, S const& rhs) {
template <
typename Key,
typename Hasher = f14::detail::DefaultHasher<Key>,
typename KeyEqual = f14::detail::DefaultKeyEqual<Key>,
typename Alloc = f14::detail::DefaultAlloc<Key>>
typename Hasher = f14::DefaultHasher<Key>,
typename KeyEqual = f14::DefaultKeyEqual<Key>,
typename Alloc = f14::DefaultAlloc<Key>>
class F14ValueSet
: public f14::detail::F14BasicSet<f14::detail::SetPolicyWithDefaults<
f14::detail::ValueContainerPolicy,
......@@ -559,9 +559,9 @@ bool operator!=(
template <
typename Key,
typename Hasher = f14::detail::DefaultHasher<Key>,
typename KeyEqual = f14::detail::DefaultKeyEqual<Key>,
typename Alloc = f14::detail::DefaultAlloc<Key>>
typename Hasher = f14::DefaultHasher<Key>,
typename KeyEqual = f14::DefaultKeyEqual<Key>,
typename Alloc = f14::DefaultAlloc<Key>>
class F14NodeSet
: public f14::detail::F14BasicSet<f14::detail::SetPolicyWithDefaults<
f14::detail::NodeContainerPolicy,
......@@ -612,9 +612,9 @@ bool operator!=(
template <
typename Key,
typename Hasher = f14::detail::DefaultHasher<Key>,
typename KeyEqual = f14::detail::DefaultKeyEqual<Key>,
typename Alloc = f14::detail::DefaultAlloc<Key>>
typename Hasher = f14::DefaultHasher<Key>,
typename KeyEqual = f14::DefaultKeyEqual<Key>,
typename Alloc = f14::DefaultAlloc<Key>>
class F14VectorSet
: public f14::detail::F14BasicSet<f14::detail::SetPolicyWithDefaults<
f14::detail::VectorContainerPolicy,
......@@ -741,9 +741,9 @@ bool operator!=(
template <
typename Key,
typename Hasher = f14::detail::DefaultHasher<Key>,
typename KeyEqual = f14::detail::DefaultKeyEqual<Key>,
typename Alloc = f14::detail::DefaultAlloc<Key>>
typename Hasher = f14::DefaultHasher<Key>,
typename KeyEqual = f14::DefaultKeyEqual<Key>,
typename Alloc = f14::DefaultAlloc<Key>>
using F14FastSet = std::conditional_t<
sizeof(Key) < 24,
F14ValueSet<Key, Hasher, KeyEqual, Alloc>,
......
......@@ -125,8 +125,28 @@ class F14HashToken final {
};
namespace f14 {
template <typename T>
using DefaultHasher = std::hash<T>;
template <typename T>
using DefaultKeyEqual = std::equal_to<T>;
template <typename T>
using DefaultAlloc = std::allocator<T>;
namespace detail {
//// Defaults should be selected using void
template <typename Arg, typename Default>
using VoidDefault =
std::conditional_t<std::is_same<Arg, Default>::value, void, Arg>;
template <typename Arg, typename Default>
using Defaulted =
typename std::conditional_t<std::is_same<Arg, void>::value, Default, Arg>;
template <
typename Void,
typename Hasher,
......@@ -147,25 +167,6 @@ struct EnableIfIsTransparent<
using type = T;
};
//// Defaults should be selected using void
template <typename Arg, typename Default>
using VoidDefault =
std::conditional_t<std::is_same<Arg, Default>::value, void, Arg>;
template <typename Arg, typename Default>
using Defaulted =
typename std::conditional_t<std::is_same<Arg, void>::value, Default, Arg>;
template <typename T>
using DefaultHasher = std::hash<T>;
template <typename T>
using DefaultKeyEqual = std::equal_to<T>;
template <typename T>
using DefaultAlloc = std::allocator<T>;
////////////////
template <typename T>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment