aboutsummaryrefslogtreecommitdiffstats
path: root/fpga_interchange/type_wire.h
diff options
context:
space:
mode:
Diffstat (limited to 'fpga_interchange/type_wire.h')
-rw-r--r--fpga_interchange/type_wire.h36
1 files changed, 7 insertions, 29 deletions
diff --git a/fpga_interchange/type_wire.h b/fpga_interchange/type_wire.h
index f2a675ef..a472bccc 100644
--- a/fpga_interchange/type_wire.h
+++ b/fpga_interchange/type_wire.h
@@ -24,6 +24,7 @@
#include <algorithm>
#include <vector>
+#include "hashlib.h"
#include "nextpnr_namespaces.h"
#include "nextpnr_types.h"
@@ -48,6 +49,8 @@ struct TypeWireId
return type < other.type || (type == other.type && index < other.index);
}
+ unsigned int hash() const { return mkhash(type, index); }
+
int32_t type;
int32_t index;
};
@@ -63,49 +66,24 @@ struct TypeWirePair
bool operator==(const TypeWirePair &other) const { return src == other.src && dst == other.dst; }
bool operator!=(const TypeWirePair &other) const { return src != other.src || dst != other.dst; }
+
+ unsigned int hash() const { return mkhash(src.hash(), dst.hash()); }
};
struct TypeWireSet
{
public:
TypeWireSet(const Context *ctx, WireId wire);
- std::size_t hash() const { return hash_; }
+ unsigned int hash() const { return hash_; }
bool operator==(const TypeWireSet &other) const { return wire_types_ == other.wire_types_; }
bool operator!=(const TypeWireSet &other) const { return wire_types_ != other.wire_types_; }
private:
- std::size_t hash_;
+ unsigned int hash_;
std::vector<TypeWireId> wire_types_;
};
NEXTPNR_NAMESPACE_END
-template <> struct std::hash<NEXTPNR_NAMESPACE_PREFIX TypeWireId>
-{
- std::size_t operator()(const NEXTPNR_NAMESPACE_PREFIX TypeWireId &wire) const noexcept
- {
- std::size_t seed = 0;
- boost::hash_combine(seed, std::hash<int>()(wire.type));
- boost::hash_combine(seed, std::hash<int>()(wire.index));
- return seed;
- }
-};
-
-template <> struct std::hash<NEXTPNR_NAMESPACE_PREFIX TypeWirePair>
-{
- std::size_t operator()(const NEXTPNR_NAMESPACE_PREFIX TypeWirePair &pair) const noexcept
- {
- std::size_t seed = 0;
- boost::hash_combine(seed, std::hash<NEXTPNR_NAMESPACE_PREFIX TypeWireId>()(pair.src));
- boost::hash_combine(seed, std::hash<NEXTPNR_NAMESPACE_PREFIX TypeWireId>()(pair.dst));
- return seed;
- }
-};
-
-template <> struct std::hash<NEXTPNR_NAMESPACE_PREFIX TypeWireSet>
-{
- std::size_t operator()(const NEXTPNR_NAMESPACE_PREFIX TypeWireSet &set) const noexcept { return set.hash(); }
-};
-
#endif /* TYPE_WIRE_H */