Skip to content

Commit 72fdef3

Browse files
author
Your Name
committed
Use unordered_map instead
1 parent 39a0bb5 commit 72fdef3

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

lib/programmemory.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,16 @@ struct CPPCHECKLIB ProgramMemory {
162162
};
163163

164164
struct ProgramMemoryState {
165-
using ChangedCache = std::map<std::tuple<const Token*, const Token*, const Token*>, const Token*>;
165+
struct ChangedKeyHash {
166+
std::size_t operator()(const std::tuple<const Token*, const Token*, const Token*>& t) const {
167+
const std::hash<const Token*> h;
168+
std::size_t seed = h(std::get<0>(t));
169+
seed ^= h(std::get<1>(t)) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
170+
seed ^= h(std::get<2>(t)) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
171+
return seed;
172+
}
173+
};
174+
using ChangedCache = std::unordered_map<std::tuple<const Token*, const Token*, const Token*>, const Token*, ChangedKeyHash>;
166175
// The token modifying expr between start and end, or nullptr.
167176
using FindChangedFn = std::function<const Token*(const Token* expr, const Token* start, const Token* end)>;
168177

0 commit comments

Comments
 (0)