1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-25 02:29:52 +00:00

More tweaking of the new hashtab module

git-svn-id: svn://svn.cc65.org/cc65/trunk@2560 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2003-10-22 19:13:02 +00:00
parent 5e07b14e8d
commit ff2dca420b
2 changed files with 10 additions and 7 deletions

View 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;
}

View 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;