diff options
Diffstat (limited to '')
-rw-r--r-- | hash.c | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -0,0 +1,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* */ |