#include "absl/hash/internal/city.h"
#include <string.h>
#include <algorithm>
#include "absl/base/config.h"
#include "absl/base/internal/endian.h"
#include "absl/base/internal/unaligned_access.h"
#include "absl/base/optimization.h"
namespace absl {
ABSL_NAMESPACE_BEGIN
namespace hash_internal {
#ifdef ABSL_IS_BIG_ENDIAN
#define uint32_in_expected_order …
#define uint64_in_expected_order …
#else
#define uint32_in_expected_order(x) …
#define uint64_in_expected_order(x) …
#endif
static uint64_t Fetch64(const char *p) { … }
static uint32_t Fetch32(const char *p) { … }
static const uint64_t k0 = …;
static const uint64_t k1 = …;
static const uint64_t k2 = …;
static const uint32_t c1 = …;
static const uint32_t c2 = …;
static uint32_t fmix(uint32_t h) { … }
static uint32_t Rotate32(uint32_t val, int shift) { … }
#undef PERMUTE3
#define PERMUTE3(a, b, c) …
static uint32_t Mur(uint32_t a, uint32_t h) { … }
static uint32_t Hash32Len13to24(const char *s, size_t len) { … }
static uint32_t Hash32Len0to4(const char *s, size_t len) { … }
static uint32_t Hash32Len5to12(const char *s, size_t len) { … }
uint32_t CityHash32(const char *s, size_t len) { … }
static uint64_t Rotate(uint64_t val, int shift) { … }
static uint64_t ShiftMix(uint64_t val) { … }
static uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) { … }
static uint64_t HashLen16(uint64_t u, uint64_t v) { … }
static uint64_t HashLen0to16(const char *s, size_t len) { … }
static uint64_t HashLen17to32(const char *s, size_t len) { … }
static std::pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) { … }
static std::pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(const char *s,
uint64_t a,
uint64_t b) { … }
static uint64_t HashLen33to64(const char *s, size_t len) { … }
uint64_t CityHash64(const char *s, size_t len) { … }
uint64_t CityHash64WithSeed(const char *s, size_t len, uint64_t seed) { … }
uint64_t CityHash64WithSeeds(const char *s, size_t len, uint64_t seed0,
uint64_t seed1) { … }
}
ABSL_NAMESPACE_END
}