#include "hash.h"
-/* ハッシュ値を取得する */
unsigned hash(int keyc, HKEY *keyv[], int tabsize)
{
- int i;
- char *p;
unsigned hashval = 0;
+ enum {
+ HASHNUM = 31
+ };
- for(i = 0; i < keyc; i++) {
+ for(int i = 0; i < keyc; i++) {
switch(keyv[i]->type) {
case CHARS:
- for(p = keyv[i]->val.s; *p != '\0'; p++) {
- hashval = *p + 31 * hashval;
+ for(int j = 0; keyv[i]->val.s[j]; j++) {
+ hashval = keyv[i]->val.s[j] + HASHNUM * hashval;
}
break;
case INT:
- hashval = keyv[i]->val.i + 31 * hashval;
+ hashval = keyv[i]->val.i + HASHNUM * hashval;
break;
default:
break;