improve resmgr
This commit is contained in:
parent
4db6b039c5
commit
1f1e4fdaba
10 changed files with 107 additions and 221 deletions
|
|
@ -1,9 +1,9 @@
|
|||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#if defined(__GLIBC__) && (__GLIBC__ == 2 && __GLIBC_MINOR__ < 28)
|
||||
#include <pthread.h>
|
||||
#else
|
||||
|
|
@ -629,31 +629,34 @@ void block_sig(int signo)
|
|||
c -= rot(b, 24); \
|
||||
}
|
||||
|
||||
uint32_t hash(uint32_t a, uint32_t b,uint32_t c, uint32_t d) {
|
||||
uint32_t hash(uint32_t a, uint32_t b, uint32_t c, uint32_t d)
|
||||
{
|
||||
uint32_t i1 = a, i2 = b, i3 = c, i4 = d;
|
||||
|
||||
mix(i1,i2,i3);
|
||||
mix(i2,i3,i4);
|
||||
mix(i3,i4,i1);
|
||||
final(i4,i1,i2);
|
||||
mix(i1, i2, i3);
|
||||
mix(i2, i3, i4);
|
||||
mix(i3, i4, i1);
|
||||
final(i4, i1, i2);
|
||||
|
||||
return i2;
|
||||
}
|
||||
|
||||
uint32_t hash64(uint64_t x) {
|
||||
uint32_t a = (uint32_t)(x & UMAX_BITS(32));
|
||||
uint32_t b = (uint32_t)(rot(x, 16) & UMAX_BITS(32));
|
||||
uint32_t c = (uint32_t)(rot(x,32) & UMAX_BITS(32));
|
||||
uint32_t d = (uint32_t)(rot(x, 48) & UMAX_BITS(32));
|
||||
uint32_t hash64(uint64_t x)
|
||||
{
|
||||
uint32_t a = (uint32_t)(x >> 32);
|
||||
uint32_t b = (uint32_t)(x & UMAX_BITS(32));
|
||||
uint32_t c = ((a & UMAX_BITS(16)) << 16) | (b >> 16);
|
||||
uint32_t d = ((b & UMAX_BITS(16)) << 16) | (a >> 16);
|
||||
|
||||
return hash(a,b,c,d);
|
||||
return hash(a, b, c, d);
|
||||
}
|
||||
|
||||
uint32_t hash_string(const char *key) {
|
||||
uint32_t hash_string(const char* key)
|
||||
{
|
||||
uint32_t hc = 5381;
|
||||
int c;
|
||||
int c;
|
||||
|
||||
while ((c = *key ++)) {
|
||||
while ((c = *key++)) {
|
||||
hc = ((hc << 5) + hc) + c;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue