blob: 8efdde5e80bf01e729d9d720555186fef8ace7dd [file] [log] [blame]
uint32_t Hash64WithSeedsLow(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
return static_cast<uint32_t>(Hash64WithSeeds(s, len, seed0, seed1));
}
uint32_t Hash64WithSeedsHigh(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
return static_cast<uint32_t>(Hash64WithSeeds(s, len, seed0, seed1) >> 32);
}
// Hash the concatenation of the given string with itself.
uint64_t Hash64WithSeedsD(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
char buf[8000];
char* ss = len*2 > sizeof(buf) ? (char*)malloc(len*2) : buf;
memcpy(ss, s, len);
memcpy(ss + len, s, len);
uint64_t h = Hash64WithSeeds(ss, len*2, seed0, seed1);
if (ss != buf) free(ss);
return h;
}
// Hash the concatenation of the given string with itself.
uint32_t Hash64WithSeedsDLow(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
return static_cast<uint32_t>(Hash64WithSeedsD(s, len, seed0, seed1));
}
// Hash the concatenation of the given string with itself.
uint32_t Hash64WithSeedsDHigh(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
return static_cast<uint32_t>(Hash64WithSeedsD(s, len, seed0, seed1) >> 32);
}
// Hash the concatenation of the given string with 3 copies of itself.
uint64_t Hash64WithSeedsQ(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
char buf[8000];
char* ss = len*4 > sizeof(buf) ? (char*)malloc(len*4) : buf;
memcpy(ss, s, len);
memcpy(ss + len, s, len);
memcpy(ss + len*2, ss, len*2);
uint64_t h = Hash64WithSeeds(ss, len*4, seed0, seed1);
if (ss != buf) free(ss);
return h;
}
// Hash the concatenation of the given string with 3 copies of itself.
uint32_t Hash64WithSeedsQLow(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
return static_cast<uint32_t>(Hash64WithSeedsQ(s, len, seed0, seed1));
}
// Hash the concatenation of the given string with 3 copies of itself.
uint32_t Hash64WithSeedsQHigh(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
return static_cast<uint32_t>(Hash64WithSeedsQ(s, len, seed0, seed1) >> 32);
}