2 #include <ossia/detail/hash.hpp>
6 #if defined(_GLIBCXX_DEBUG)
7 #define OSSIA_NO_FAST_CONTAINERS
8 #elif defined(_LIBCPP_DEBUG_LEVEL) && _LIBCPP_DEBUG_LEVEL > 0
9 #define OSSIA_NO_FAST_CONTAINERS
10 #elif defined(_LIBCPP_ENABLE_ASSERTIONS) && _LIBCPP_ENABLE_ASSERTIONS > 0
11 #define OSSIA_NO_FAST_CONTAINERS
12 #elif defined(_LIBCPP_ENABLE_DEBUG_MODE)
13 #define OSSIA_NO_FAST_CONTAINERS
14 #elif defined(_ITERATOR_DEBUG_LEVEL) && _ITERATOR_DEBUG_LEVEL > 0
15 #define OSSIA_NO_FAST_CONTAINERS
19 #if !defined(OSSIA_NO_FAST_CONTAINERS)
20 #include <ankerl/unordered_dense.h>
21 #include <unordered_map>
25 typename K,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
26 typename A = std::allocator<K>>
27 using hash_set = ankerl::unordered_dense::set<K, H, E, A>;
30 typename K,
typename V,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
31 typename A = std::allocator<std::pair<K, V>>>
32 using hash_map = ankerl::unordered_dense::map<K, V, H, E, A>;
35 typename K,
typename V,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
37 using hash_multimap = std::unordered_multimap<K, V, H, E>;
40 #include <unordered_map>
41 #include <unordered_set>
45 typename K,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
47 using hash_set = std::unordered_set<K, H, E>;
50 typename K,
typename V,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
52 using hash_map = std::unordered_map<K, V, H, E>;
55 typename K,
typename V,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
57 using hash_multimap = std::unordered_multimap<K, V, H, E>;