|
/**
|
|
* Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
|
|
*
|
|
* Licensed under the Universal Permissive License v 1.0 as shown at
|
|
* http://oss.oracle.com/licenses/upl
|
|
*
|
|
*/
|
|
#ifndef HASHFUN_H
|
|
#define HASHFUN_H
|
|
#include <stddef.h>
|
|
|
|
static size_t hash_init(void) { return 0; }
|
|
static size_t hash_add(size_t oldhash, size_t c) { return oldhash*11 + c; }
|
|
static size_t hash_end(size_t hash) { return (hash>>13) + hash; }
|
|
static size_t hash_string(const char *name) {
|
|
size_t r = hash_init();
|
|
while (*name) {
|
|
r = hash_add(r, (unsigned char)*name++);
|
|
}
|
|
return hash_end(r);
|
|
}
|
|
#endif
|