blob: 679bea916c3ee722191d9a4145055551bb03f4b8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#pragma once
#include "string.h"
#include "typedef.h"
typedef U32 FNV1A;
enum : FNV1A {
FNV1A_PRIME = 0x1000193,
FNV1A_BASIS = 0x811C9DC5
};
inline constexpr FNV1A fnv1a( const U8* data, const U32 size ) {
FNV1A out = FNV1A_BASIS;
for( U32 i = 0; i < size; ++i )
out = ( out ^ data[i] ) * FNV1A_PRIME;
return out;
}
inline constexpr FNV1A fnv1a( const char* str ) {
U32 len = strlen_ct( str );
return fnv1a( (const U8*)str, len );
}
|