util: switch from Boost to std::unordered set/map

This commit replaces the ue2::unordered_{set,map} types with their STL
versions, with some new hashing utilities in util/hash.h. The new types
ue2_unordered_set<T> and ue2_unordered_map<Key, T> default to using the
ue2_hasher.

The header util/ue2_containers.h has been removed, and the flat_set/map
containers moved to util/flat_containers.h.
This commit is contained in:
Justin Viiret
2017-07-14 14:59:52 +10:00
committed by Matthew Barr
parent a425bb9b7c
commit 9cf66b6ac9
123 changed files with 1048 additions and 772 deletions

View File

@@ -221,8 +221,8 @@ public:
std::string str() const;
#endif
friend size_t hash_value(const depth &d) {
return d.val;
size_t hash() const {
return val;
}
private:
@@ -260,10 +260,6 @@ struct DepthMinMax : totally_ordered<DepthMinMax> {
};
inline size_t hash_value(const DepthMinMax &d) {
return hash_all(d.min, d.max);
}
/**
* \brief Merge two DepthMinMax values together to produce their union.
*/
@@ -271,4 +267,22 @@ DepthMinMax unionDepthMinMax(const DepthMinMax &a, const DepthMinMax &b);
} // namespace ue2
namespace std {
template<>
struct hash<ue2::depth> {
size_t operator()(const ue2::depth &d) const {
return d.hash();
}
};
template<>
struct hash<ue2::DepthMinMax> {
size_t operator()(const ue2::DepthMinMax &d) const {
return hash_all(d.min, d.max);
}
};
} // namespace
#endif // DEPTH_H