diff options
Diffstat (limited to 'src/hash.c')
| -rw-r--r-- | src/hash.c | 15 | 
1 files changed, 15 insertions, 0 deletions
diff --git a/src/hash.c b/src/hash.c new file mode 100644 index 0000000..cfdafc3 --- /dev/null +++ b/src/hash.c @@ -0,0 +1,15 @@ +#include "hash.h" +#include <assert.h> + +uint64_t vgltf_hash_fnv_1a(const char *bytes, size_t nbytes) { +  assert(bytes); +  static const uint64_t FNV_OFFSET_BASIS = 14695981039346656037u; +  static const uint64_t FNV_PRIME = 1099511628211u; +  uint64_t hash = FNV_OFFSET_BASIS; +  for (size_t i = 0; i < nbytes; i++) { +    hash = hash ^ bytes[i]; +    hash = hash * FNV_PRIME; +  } + +  return hash; +}  | 
