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 | |
22 | namespace folly { |
23 | template < |
24 | typename Key, |
25 | typename Hasher = f14::DefaultHasher<Key>, |
26 | typename KeyEqual = f14::DefaultKeyEqual<Key>, |
27 | typename Alloc = f14::DefaultAlloc<Key>> |
28 | class F14NodeSet; |
29 | |
30 | template < |
31 | typename Key, |
32 | typename Hasher = f14::DefaultHasher<Key>, |
33 | typename KeyEqual = f14::DefaultKeyEqual<Key>, |
34 | typename Alloc = f14::DefaultAlloc<Key>> |
35 | class F14ValueSet; |
36 | |
37 | template < |
38 | typename Key, |
39 | typename Hasher = f14::DefaultHasher<Key>, |
40 | typename KeyEqual = f14::DefaultKeyEqual<Key>, |
41 | typename Alloc = f14::DefaultAlloc<Key>> |
42 | class F14VectorSet; |
43 | |
44 | template < |
45 | typename Key, |
46 | typename Hasher = f14::DefaultHasher<Key>, |
47 | typename KeyEqual = f14::DefaultKeyEqual<Key>, |
48 | typename Alloc = f14::DefaultAlloc<Key>> |
49 | class F14FastSet; |
50 | |
51 | #if FOLLY_HAS_MEMORY_RESOURCE |
52 | namespace pmr { |
53 | template < |
54 | typename Key, |
55 | typename Hasher = f14::DefaultHasher<Key>, |
56 | typename KeyEqual = f14::DefaultKeyEqual<Key>> |
57 | using F14NodeSet = folly::F14NodeSet< |
58 | Key, |
59 | Hasher, |
60 | KeyEqual, |
61 | folly::detail::std_pmr::polymorphic_allocator<Key>>; |
62 | |
63 | template < |
64 | typename Key, |
65 | typename Hasher = f14::DefaultHasher<Key>, |
66 | typename KeyEqual = f14::DefaultKeyEqual<Key>> |
67 | using F14ValueSet = folly::F14ValueSet< |
68 | Key, |
69 | Hasher, |
70 | KeyEqual, |
71 | folly::detail::std_pmr::polymorphic_allocator<Key>>; |
72 | |
73 | template < |
74 | typename Key, |
75 | typename Hasher = f14::DefaultHasher<Key>, |
76 | typename KeyEqual = f14::DefaultKeyEqual<Key>> |
77 | using F14VectorSet = folly::F14VectorSet< |
78 | Key, |
79 | Hasher, |
80 | KeyEqual, |
81 | folly::detail::std_pmr::polymorphic_allocator<Key>>; |
82 | |
83 | template < |
84 | typename Key, |
85 | typename Hasher = f14::DefaultHasher<Key>, |
86 | typename KeyEqual = f14::DefaultKeyEqual<Key>> |
87 | using 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 | |