Veritable Lasagna
An Allocator & Data Structure Library for C.
Loading...
Searching...
No Matches
vl_hash.h
Go to the documentation of this file.
1
14#ifndef VL_HASH_H
15#define VL_HASH_H
16
17#include "vl_memory.h"
18
22typedef vl_ularge_t vl_hash;
23
33typedef vl_hash (*vl_hash_function)(const void* data, vl_memsize_t dataSize);
34
35#define VL_HASH_STRING vlHashString
36#define VL_HASH_BYTES vlHashString
37#define VL_HASH_UINT8 vlHash8
38#define VL_HASH_UINT16 vlHash16
39#define VL_HASH_UINT32 vlHash32
40#define VL_HASH_UINT64 vlHash64
41#define VL_HASH_INT8 vlHash8
42#define VL_HASH_INT16 vlHash16
43#define VL_HASH_INT32 vlHash32
44#define VL_HASH_INT64 vlHash64
45#define VL_HASH_FLOAT vlHashFloat
46#define VL_HASH_DOUBLE vlHashDouble
47
48#define vlHashChar vlHash8
49#define vlHashShort vlHash16
50#define vlHashInt vlHash32
51#define vlHashLong vlHash64
52#define vlHashUChar vlHash8
53#define vlHashUShort vlHash16
54#define vlHashUInt vlHash32
55#define vlHashULong vlHash64
56
69VL_API vl_hash vlHashString(const void* data, vl_memsize_t dataSize);
70
80VL_API vl_hash vlHash8(const void* data, vl_memsize_t);
81
89VL_API vl_hash vlHash16(const void* data, vl_memsize_t);
90
101VL_API vl_hash vlHash32(const void* data, vl_memsize_t);
102
112VL_API vl_hash vlHash64(const void* data, vl_memsize_t);
113
114#ifndef vlHashCombine
126#define vlHashCombine(a, b) (vl_hash)(((a) ^ (b)) + 0xEF92DACB + ((a) << 6) + ((a) >> 2))
127#endif
128
129#endif // VL_HASH_H
vl_hash(* vl_hash_function)(const void *data, vl_memsize_t dataSize)
Hash function typedef.
Definition vl_hash.h:33
VL_API vl_hash vlHash64(const void *data, vl_memsize_t)
Generates a hash code for the 64-bit sequence at the specified address.
Definition vl_hash.c:49
VL_API vl_hash vlHash16(const void *data, vl_memsize_t)
Generates a hash code for the 16-bit sequence at the specified address. This is a direct bitcast of a...
Definition vl_hash.c:37
VL_API vl_hash vlHash32(const void *data, vl_memsize_t)
Generates a hash code for the 32-bit sequence at the specified address.
Definition vl_hash.c:43
VL_API vl_hash vlHashString(const void *data, vl_memsize_t dataSize)
Hashes the specified string.
Definition vl_hash.c:5
VL_API vl_hash vlHash8(const void *data, vl_memsize_t)
Generates a hash code for the 8-bit sequence at the specified address.
Definition vl_hash.c:31
VL_ULARGE_T vl_ularge_t
Largest available unsigned integer type.
Definition vl_numtypes.h:136