1/*
2 * Copyright (c) Facebook, Inc. and its affiliates.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <folly/container/detail/F14Defaults.h>
20#include <folly/memory/MemoryResource.h>
21
22namespace folly {
23template <
24 typename Key,
25 typename Hasher = f14::DefaultHasher<Key>,
26 typename KeyEqual = f14::DefaultKeyEqual<Key>,
27 typename Alloc = f14::DefaultAlloc<Key>>
28class F14NodeSet;
29
30template <
31 typename Key,
32 typename Hasher = f14::DefaultHasher<Key>,
33 typename KeyEqual = f14::DefaultKeyEqual<Key>,
34 typename Alloc = f14::DefaultAlloc<Key>>
35class F14ValueSet;
36
37template <
38 typename Key,
39 typename Hasher = f14::DefaultHasher<Key>,
40 typename KeyEqual = f14::DefaultKeyEqual<Key>,
41 typename Alloc = f14::DefaultAlloc<Key>>
42class F14VectorSet;
43
44template <
45 typename Key,
46 typename Hasher = f14::DefaultHasher<Key>,
47 typename KeyEqual = f14::DefaultKeyEqual<Key>,
48 typename Alloc = f14::DefaultAlloc<Key>>
49class F14FastSet;
50
51#if FOLLY_HAS_MEMORY_RESOURCE
52namespace pmr {
53template <
54 typename Key,
55 typename Hasher = f14::DefaultHasher<Key>,
56 typename KeyEqual = f14::DefaultKeyEqual<Key>>
57using F14NodeSet = folly::F14NodeSet<
58 Key,
59 Hasher,
60 KeyEqual,
61 folly::detail::std_pmr::polymorphic_allocator<Key>>;
62
63template <
64 typename Key,
65 typename Hasher = f14::DefaultHasher<Key>,
66 typename KeyEqual = f14::DefaultKeyEqual<Key>>
67using F14ValueSet = folly::F14ValueSet<
68 Key,
69 Hasher,
70 KeyEqual,
71 folly::detail::std_pmr::polymorphic_allocator<Key>>;
72
73template <
74 typename Key,
75 typename Hasher = f14::DefaultHasher<Key>,
76 typename KeyEqual = f14::DefaultKeyEqual<Key>>
77using F14VectorSet = folly::F14VectorSet<
78 Key,
79 Hasher,
80 KeyEqual,
81 folly::detail::std_pmr::polymorphic_allocator<Key>>;
82
83template <
84 typename Key,
85 typename Hasher = f14::DefaultHasher<Key>,
86 typename KeyEqual = f14::DefaultKeyEqual<Key>>
87using F14FastSet = folly::F14FastSet<
88 Key,
89 Hasher,
90 KeyEqual,
91 folly::detail::std_pmr::polymorphic_allocator<Key>>;
92} // namespace pmr
93#endif // FOLLY_HAS_MEMORY_RESOURCE
94
95} // namespace folly
96