]> git.sur5r.net Git - cc65/commitdiff
More tweaking of the new hashtab module
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 22 Oct 2003 19:13:02 +0000 (19:13 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 22 Oct 2003 19:13:02 +0000 (19:13 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2560 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/common/hashtab.c
src/common/hashtab.h

index 72319a6a200d2b3693d2eccdbedde32a35d602cc..3572086edd201776a31db25278eb4bedeef75f48 100644 (file)
@@ -96,7 +96,7 @@ HashNode* HT_Find (const HashTable* T, const void* Key)
          * if it is not really necessary.
          */
         if (N->Hash == Hash &&
-            T->Func->Compare (Key, T->Func->GetIndex (N->Entry))) {
+            T->Func->Compare (Key, T->Func->GetKey (N->Entry))) {
             /* Found */
             break;
         }
@@ -133,8 +133,8 @@ void HT_Insert (HashTable* T, HashNode* N)
         HT_Alloc (T);
     }
 
-    /* Generate the hash for the node contents */
-    N->Hash = T->Func->GenHash (T->Func->GetIndex (N->Entry));
+    /* Generate the hash over the node key. */
+    N->Hash = T->Func->GenHash (T->Func->GetKey (N->Entry));
 
     /* Calculate the reduced hash */
     RHash = N->Hash % T->Slots;
@@ -143,6 +143,9 @@ void HT_Insert (HashTable* T, HashNode* N)
     N->Next = T->Table[RHash];
     T->Table[RHash] = N;
 
+    /* Set the owner */
+    N->Owner = T;
+
     /* One more entry */
     ++T->Count;
 }
index 24e492716efdfa11226572efb5e4437bec8678c0..b50acee426cfba4d67dddee2e02074dbf7c256e7 100644 (file)
@@ -59,7 +59,7 @@ struct HashNode {
     void*               Entry;          /* Pointer to user entry data */
 };
 
-#define STATIC_HASHNODE_INITIALIZER(Entry)      { 0, 0, 0, Entry }
+#define STATIC_HASHNODE_INITIALIZER(Entry) { 0, 0, 0, Entry }
 
 /* Hash table functions */
 typedef struct HashFunctions HashFunctions;
@@ -68,8 +68,8 @@ struct HashFunctions {
     unsigned (*GenHash) (const void* Key);
     /* Generate the hash over a key. */
 
-    const void* (*GetIndex) (void* Entry);
-    /* Given a pointer to the user entry data, return a pointer to the index */
+    const void* (*GetKey) (void* Entry);
+    /* Given a pointer to the user entry data, return a pointer to the key */
 
     HashNode* (*GetHashNode) (void* Entry);
     /* Given a pointer to the user entry data, return a pointer to the hash node */
@@ -99,7 +99,7 @@ struct HashTable {
 
 #if defined(HAVE_INLINE)
 INLINE void InitHashNode (HashNode* N, void* Entry)
-/* Initialize a hash node */
+/* Initialize a hash node. */
 {
     N->Next     = 0;
     N->Owner    = 0;