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:
parent
5e07b14e8d
commit
ff2dca420b
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user