aboutsummaryrefslogtreecommitdiffstats
path: root/hash.c
blob: 82629fa1335140f17d6136dcc4e49db66da7a55e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* $Id: hash.c,v 1.5 2003/04/07 16:27:10 ukai Exp $ */
#include <string.h>
#include "hash.h"
#include <gc.h>

static unsigned int
hashfunc(char *s)
{
    unsigned int h = 0;
    while (*s) {
	if (h & 0x80000000) {
	    h <<= 1;
	    h |= 1;
	}
	else
	    h <<= 1;
	h += *s;
	s++;
    }
    return h;
}

#define keycomp(x,y) !strcmp(x,y)

/* *INDENT-OFF* */
defhashfunc(char *, int, si)
defhashfunc(char *, char *, ss)
defhashfunc(char *, void *, sv)
defhashfunc_i(int, void *, iv)
/* *INDENT-ON* */