| 18 | using std::string; |
| 19 | |
| 20 | size_t deterministicHash(const void* data, size_t byteSize, size_t prevHash) { |
| 21 | // Fowler-Noll-Vo "1a" 32 bit hash |
| 22 | // https://en.wikipedia.org/wiki/Fowler-Noll-Vo_hash_function |
| 23 | const auto* byteData = static_cast<const uint8_t*>(data); |
| 24 | return accumulate( |
| 25 | byteData, byteData + byteSize, prevHash, |
| 26 | [&](size_t hash, uint8_t data) { return (hash ^ data) * FNV1A_PRIME; }); |
| 27 | } |
| 28 | |
| 29 | size_t deterministicHash(const string& data, const size_t prevHash) { |
| 30 | return deterministicHash(data.data(), data.size(), prevHash); |
no outgoing calls
no test coverage detected