aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/hashlib.h
diff options
context:
space:
mode:
authorclairexen <claire@symbioticeda.com>2020-05-31 20:40:48 +0200
committerGitHub <noreply@github.com>2020-05-31 20:40:48 +0200
commitff785cdb46d6b1ddc19d5acc21b4d1236b3adf3f (patch)
tree1cd1a2a26ed78e489b4945275a92bbb02f1b02d4 /kernel/hashlib.h
parentfe273faad11d67b1473b966e606ca982b91afd85 (diff)
parent6eea4b3d79590f874caa3ec740785781f3926666 (diff)
downloadyosys-ff785cdb46d6b1ddc19d5acc21b4d1236b3adf3f.tar.gz
yosys-ff785cdb46d6b1ddc19d5acc21b4d1236b3adf3f.tar.bz2
yosys-ff785cdb46d6b1ddc19d5acc21b4d1236b3adf3f.zip
Merge pull request #1862 from boqwxp/cleanup_techmap
Clean up `passes/techmap/techmap.cc`
Diffstat (limited to 'kernel/hashlib.h')
-rw-r--r--kernel/hashlib.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/hashlib.h b/kernel/hashlib.h
index 592d6e577..5c87b55f5 100644
--- a/kernel/hashlib.h
+++ b/kernel/hashlib.h
@@ -207,6 +207,7 @@ class dict
entry_t() { }
entry_t(const std::pair<K, T> &udata, int next) : udata(udata), next(next) { }
entry_t(std::pair<K, T> &&udata, int next) : udata(std::move(udata)), next(next) { }
+ bool operator<(const entry_t &other) const { return udata.first < other.udata.first; }
};
std::vector<int> hashtable;
@@ -615,6 +616,15 @@ public:
return !operator==(other);
}
+ unsigned int hash() const {
+ unsigned int h = mkhash_init;
+ for (auto &entry : entries) {
+ h ^= hash_ops<K>::hash(entry.udata.first);
+ h ^= hash_ops<T>::hash(entry.udata.second);
+ }
+ return h;
+ }
+
void reserve(size_t n) { entries.reserve(n); }
size_t size() const { return entries.size(); }
bool empty() const { return entries.empty(); }