new hash function; hash value for strings are kept with the string

This commit is contained in:
Roberto Ierusalimschy 1994-11-25 17:27:03 -02:00
parent fbfa1cbe9b
commit 10bdd83844
2 changed files with 5 additions and 2 deletions

4
tree.c
View File

@ -3,7 +3,7 @@
** TecCGraf - PUC-Rio ** TecCGraf - PUC-Rio
*/ */
char *rcs_tree="$Id: tree.c,v 1.9 1994/11/18 19:27:38 roberto Exp roberto $"; char *rcs_tree="$Id: tree.c,v 1.10 1994/11/23 14:31:11 roberto Stab roberto $";
#include <string.h> #include <string.h>
@ -37,6 +37,7 @@ static TreeNode *tree_create (TreeNode **node, char *str)
(*node)->left = (*node)->right = NULL; (*node)->left = (*node)->right = NULL;
strcpy((*node)->ts.str, str); strcpy((*node)->ts.str, str);
(*node)->ts.marked = 0; (*node)->ts.marked = 0;
(*node)->ts.hash = 0;
(*node)->varindex = (*node)->constindex = NOT_USED; (*node)->varindex = (*node)->constindex = NOT_USED;
return *node; return *node;
} }
@ -59,6 +60,7 @@ TaggedString *lua_createstring (char *str)
lua_pack(); lua_pack();
newString = (StringNode *)luaI_malloc(sizeof(StringNode)+strlen(str)); newString = (StringNode *)luaI_malloc(sizeof(StringNode)+strlen(str));
newString->ts.marked = 0; newString->ts.marked = 0;
newString->ts.hash = 0;
strcpy(newString->ts.str, str); strcpy(newString->ts.str, str);
newString->next = string_root; newString->next = string_root;
string_root = newString; string_root = newString;

3
tree.h
View File

@ -1,7 +1,7 @@
/* /*
** tree.h ** tree.h
** TecCGraf - PUC-Rio ** TecCGraf - PUC-Rio
** $Id: tree.h,v 1.5 1994/11/18 19:27:38 roberto Exp roberto $ ** $Id: tree.h,v 1.6 1994/11/23 14:31:11 roberto Stab roberto $
*/ */
#ifndef tree_h #ifndef tree_h
@ -13,6 +13,7 @@
typedef struct TaggedString typedef struct TaggedString
{ {
unsigned long hash; /* 0 if not initialized */
char marked; /* for garbage collection */ char marked; /* for garbage collection */
char str[1]; /* \0 byte already reserved */ char str[1]; /* \0 byte already reserved */
} TaggedString; } TaggedString;