ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
uthash.h File Reference

Go to the source code of this file.

Macros

#define HASH_FUNCTION(keyptr, keylen, hashv)
 
#define HASH_JEN_MIX(a, b, c)
 

Macro Definition Documentation

◆ HASH_FUNCTION

#define HASH_FUNCTION (   keyptr,
  keylen,
  hashv 
)
Value:
do { \
if (!(keyptr) || (keylen) == 0) { \
(hashv) = 1; /* Non-zero constant for safety */ \
} else { \
(hashv) = fnv1a_hash_bytes((keyptr), (keylen)); \
} \
} while (0)

Definition at line 41 of file uthash.h.

42 { \
43 if (!(keyptr) || (keylen) == 0) { \
44 (hashv) = 1; /* Non-zero constant for safety */ \
45 } else { \
46 (hashv) = fnv1a_hash_bytes((keyptr), (keylen)); \
47 } \
48 } while (0)

◆ HASH_JEN_MIX

#define HASH_JEN_MIX (   a,
  b,
  c 
)

Definition at line 59 of file uthash.h.

60 { \
61 /* Use 64-bit arithmetic for shifts to avoid undefined behavior, then mask back to 32-bit */ \
62 uint64_t _a = (uint64_t)(a), _b = (uint64_t)(b), _c = (uint64_t)(c); \
63 _a -= _b; \
64 _a -= _c; \
65 _a ^= (_c >> 13); \
66 a = (unsigned)(_a & 0xFFFFFFFFU); \
67 \
68 _b -= _c; \
69 _b -= (uint64_t)a; \
70 _b ^= (((uint64_t)a << 8) & 0xFFFFFFFFU); \
71 b = (unsigned)(_b & 0xFFFFFFFFU); \
72 \
73 _c -= (uint64_t)a; \
74 _c -= (uint64_t)b; \
75 _c ^= ((uint64_t)b >> 13); \
76 c = (unsigned)(_c & 0xFFFFFFFFU); \
77 \
78 _a = (uint64_t)a; \
79 _a -= (uint64_t)b; \
80 _a -= (uint64_t)c; \
81 _a ^= ((uint64_t)c >> 12); \
82 a = (unsigned)(_a & 0xFFFFFFFFU); \
83 \
84 _b = (uint64_t)b; \
85 _b -= (uint64_t)c; \
86 _b -= (uint64_t)a; \
87 _b ^= (((uint64_t)a << 16) & 0xFFFFFFFFU); \
88 b = (unsigned)(_b & 0xFFFFFFFFU); \
89 \
90 _c = (uint64_t)c; \
91 _c -= (uint64_t)a; \
92 _c -= (uint64_t)b; \
93 _c ^= ((uint64_t)b >> 5); \
94 c = (unsigned)(_c & 0xFFFFFFFFU); \
95 \
96 _a = (uint64_t)a; \
97 _a -= (uint64_t)b; \
98 _a -= (uint64_t)c; \
99 _a ^= ((uint64_t)c >> 3); \
100 a = (unsigned)(_a & 0xFFFFFFFFU); \
101 \
102 _b = (uint64_t)b; \
103 _b -= (uint64_t)c; \
104 _b -= (uint64_t)a; \
105 _b ^= (((uint64_t)a << 10) & 0xFFFFFFFFU); \
106 b = (unsigned)(_b & 0xFFFFFFFFU); \
107 \
108 _c = (uint64_t)c; \
109 _c -= (uint64_t)a; \
110 _c -= (uint64_t)b; \
111 _c ^= ((uint64_t)b >> 15); \
112 c = (unsigned)(_c & 0xFFFFFFFFU); \
113 } while (0)
unsigned long long uint64_t
Definition common.h:59