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

@@ -206,13 +206,6 @@ bool operator==(const Report &a, const Report &b) {
a.topSquashDistance == b.topSquashDistance;
}
inline
size_t hash_value(const Report &r) {
return hash_all(r.type, r.quashSom, r.minOffset, r.maxOffset, r.minLength,
r.ekey, r.offsetAdjust, r.onmatch, r.revNfaIndex,
r.somDistance, r.topSquashDistance);
}
static inline
Report makeECallback(u32 report, s32 offsetAdjust, u32 ekey) {
Report ir(EXTERNAL_CALLBACK, report);
@@ -262,6 +255,19 @@ bool isSimpleExhaustible(const Report &ir) {
return true;
}
} // namespace
} // namespace ue2
namespace std {
template<>
struct hash<ue2::Report> {
std::size_t operator()(const ue2::Report &r) const {
return ue2::hash_all(r.type, r.quashSom, r.minOffset, r.maxOffset,
r.minLength, r.ekey, r.offsetAdjust, r.onmatch,
r.revNfaIndex, r.somDistance, r.topSquashDistance);
}
};
} // namespace std
#endif // UTIL_REPORT_H