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

Version Path
grpc-1.67.0 third_party/re2/util/mix.h
grpc-1.67.0.pre1 third_party/re2/util/mix.h
grpc-1.66.0 third_party/re2/util/mix.h
grpc-1.66.0.pre5 third_party/re2/util/mix.h
grpc-1.66.0.pre3 third_party/re2/util/mix.h
grpc-1.58.3 third_party/re2/util/mix.h
grpc-1.59.5 third_party/re2/util/mix.h
grpc-1.60.2 third_party/re2/util/mix.h
grpc-1.61.3 third_party/re2/util/mix.h
grpc-1.62.3 third_party/re2/util/mix.h
grpc-1.63.2 third_party/re2/util/mix.h
grpc-1.64.3 third_party/re2/util/mix.h
grpc-1.65.2 third_party/re2/util/mix.h
grpc-1.65.1 third_party/re2/util/mix.h
grpc-1.65.0 third_party/re2/util/mix.h
grpc-1.65.0.pre2 third_party/re2/util/mix.h
grpc-1.65.0.pre1 third_party/re2/util/mix.h
grpc-1.63.0 third_party/re2/util/mix.h
grpc-1.62.0 third_party/re2/util/mix.h
grpc-1.62.0.pre1 third_party/re2/util/mix.h