root/src/inlines.cc

Revision 5, 0.8 KB (checked in by nick, 3 years ago)
Line 
1#include "apachetop.h"
2
3#define THREE_QUARTERS  24
4#define ONE_EIGHTH      4
5#define HIGH_BITS       (~((unsigned int)(~0) >> ONE_EIGHTH))
6
7inline unsigned int StringHash(register const char *str)
8{
9        register unsigned int val;
10        register unsigned int i;
11
12        for (val = 0; *str; str++)
13        {
14                val = (val << ONE_EIGHTH) + *str;
15
16                if ((i = val & HIGH_BITS) != 0)
17                        val = (val ^ (i >> THREE_QUARTERS)) & ~HIGH_BITS;
18        }
19        return val;
20}
21
22inline unsigned int QuickHash(register const char *str)
23{
24        register unsigned int val, tmp;
25
26        for(val = 0 ; *str ; str++)
27        {
28                val = (val << 4) + *str;
29                if ((tmp = (val & 0xf0000000)))
30                        val = (val ^ (tmp >> 24)) ^ tmp;
31        }
32        return val;
33}
34
35inline unsigned long TTHash(register const char *str)
36{
37        unsigned long hash = 5381;
38        int c;
39
40        while ((c = *str++))
41                hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
42
43        return hash;
44}
Note: See TracBrowser for help on using the browser.