a8ecebf5c419cb912778e899a08c9cc6687ef246
[awesomized/libmemcached] / lib / memcached_hash.c
1 #include "common.h"
2
3 unsigned int memcached_generate_hash(char *key, size_t key_length)
4 {
5 char *ptr= key;
6 unsigned int value= 0;
7
8 while (--key_length)
9 {
10 value += *ptr++;
11 value += (value << 10);
12 value ^= (value >> 6);
13 }
14 value += (value << 3);
15 value ^= (value >> 11);
16 value += (value << 15);
17
18 return value == 0 ? 1 : value;
19 }