| 55 | static const uint64_t FNV64_SEED = 14695981039346656037UL; |
| 56 | |
| 57 | static uint64_t FnvHash(const void* data, int32_t bytes, uint64_t hash) { |
| 58 | const uint8_t* ptr = reinterpret_cast<const uint8_t*>(data); |
| 59 | while (bytes--) { |
| 60 | hash = (*ptr ^ hash) * FNV64_PRIME; |
| 61 | ++ptr; |
| 62 | } |
| 63 | return hash; |
| 64 | } |
| 65 | |
| 66 | static uint64_t Hash(const IntVal& v) { |
| 67 | return FnvHash(&v.val, sizeof(int32_t), FNV64_SEED); |