mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-02 08:25:40 +02:00
Move string hashing from mbtiles to text
This commit is contained in:
@@ -184,3 +184,31 @@ char *dtoa_milo(double val) {
|
||||
}
|
||||
return dup;
|
||||
}
|
||||
|
||||
unsigned long long fnv1a(std::string const &s) {
|
||||
// Store tiles by a hash of their contents (fnv1a 64-bit)
|
||||
// http://www.isthe.com/chongo/tech/comp/fnv/
|
||||
const unsigned long long fnv_offset_basis = 14695981039346656037u;
|
||||
const unsigned long long fnv_prime = 1099511628211u;
|
||||
unsigned long long h = fnv_offset_basis;
|
||||
for (size_t i = 0; i < s.size(); i++) {
|
||||
h ^= (unsigned char) s[i];
|
||||
h *= fnv_prime;
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
unsigned long long fnv1a(const char *s, char additional) {
|
||||
// Store tiles by a hash of their contents (fnv1a 64-bit)
|
||||
// http://www.isthe.com/chongo/tech/comp/fnv/
|
||||
const unsigned long long fnv_offset_basis = 14695981039346656037u;
|
||||
const unsigned long long fnv_prime = 1099511628211u;
|
||||
unsigned long long h = fnv_offset_basis;
|
||||
for (size_t i = 0; s[i] != '\0'; i++) {
|
||||
h ^= (unsigned char) s[i];
|
||||
h *= fnv_prime;
|
||||
}
|
||||
h ^= (unsigned char) additional;
|
||||
h *= fnv_prime;
|
||||
return h;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user