hashable-1.1.0.0: cbits/hashByteString.c
/* Bernstein's hash */
long djb_hash(const unsigned char* str, long len, long hash) {
while (len--) {
hash = (hash * 33) ^ *str++;
}
return hash;
}
/* Used for ByteArray#s. We can't treat them like pointers in
native Haskell, but we can in unsafe FFI calls.
*/
long djb_hash_offset(const unsigned char* str, long offset, long len, long hash) {
return djb_hash(str + offset, len, hash);
}