Sha256: cf213a68dfedee73c7709343ad4699564185f4a2d195ffbb345cf7772a9eda26
Contents?: true
Size: 969 Bytes
Versions: 96
Compression:
Stored size: 969 Bytes
Contents
// Copyright 2016 The RE2 Authors. All Rights Reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. #ifndef UTIL_MIX_H_ #define UTIL_MIX_H_ #include <stddef.h> #include <limits> namespace re2 { // Silence "truncation of constant value" warning for kMul in 32-bit mode. // Since this is a header file, push and then pop to limit the scope. #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4309) #endif class HashMix { public: HashMix() : hash_(1) {} explicit HashMix(size_t val) : hash_(val + 83) {} void Mix(size_t val) { static const size_t kMul = static_cast<size_t>(0xdc3eb94af8ab4c93ULL); hash_ *= kMul; hash_ = ((hash_ << 19) | (hash_ >> (std::numeric_limits<size_t>::digits - 19))) + val; } size_t get() const { return hash_; } private: size_t hash_; }; #ifdef _MSC_VER #pragma warning(pop) #endif } // namespace re2 #endif // UTIL_MIX_H_
Version data entries
96 entries across 96 versions & 3 rubygems