00001 #include "wvhash.h"
00002
00003
00004
00005 unsigned WvHash(const char *s)
00006 {
00007 unsigned hash = 0, slide, andval;
00008 if (!s) return 0;
00009
00010 slide = sizeof(hash)*8 - 5;
00011 andval = 0x1F << slide;
00012
00013 while (*s)
00014 hash = (hash<<4) ^ (*(s++) & 0x1F) ^ ((hash & andval) >> slide);
00015
00016 return hash;
00017 }
00018
00019 unsigned WvHash(WvStringParm s)
00020 {
00021 return !s ? 0 : WvHash((const char *)s);
00022 }
00023
00024
00025 unsigned WvHash(const int &i)
00026 {
00027 return i;
00028 }
00029
00030
00031 unsigned WvHash(const void *p)
00032 {
00033 return reinterpret_cast<unsigned long>(p);
00034 }
00035