mirror of
https://github.com/cc65/cc65.git
synced 2024-12-26 08:32:00 +00:00
Fix errors in tracking the number of items in the table. Added function
HT_GetCount to retrieve the number of items. git-svn-id: svn://svn.cc65.org/cc65/trunk@5248 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
ae98f4bcd8
commit
d0d550be66
@ -194,6 +194,7 @@ void HT_Remove (HashTable* T, void* Entry)
|
|||||||
if (*Q == N) {
|
if (*Q == N) {
|
||||||
/* Found - remove it */
|
/* Found - remove it */
|
||||||
*Q = N->Next;
|
*Q = N->Next;
|
||||||
|
--T->Count;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* Next node */
|
/* Next node */
|
||||||
@ -235,6 +236,7 @@ void HT_Walk (HashTable* T, int (*F) (void* Entry, void* Data), void* Data)
|
|||||||
if (F (*Cur, Data)) {
|
if (F (*Cur, Data)) {
|
||||||
/* Delete the node from the chain */
|
/* Delete the node from the chain */
|
||||||
*Cur = Next;
|
*Cur = Next;
|
||||||
|
--T->Count;
|
||||||
} else {
|
} else {
|
||||||
/* Next node in chain */
|
/* Next node in chain */
|
||||||
Cur = &(*Cur)->Next;
|
Cur = &(*Cur)->Next;
|
||||||
|
@ -139,6 +139,16 @@ INLINE HashTable* NewHashTable (unsigned Slots, const HashFunctions* Func)
|
|||||||
void FreeHashTable (HashTable* T);
|
void FreeHashTable (HashTable* T);
|
||||||
/* Free a hash table. Note: This will not free the entries in the table! */
|
/* Free a hash table. Note: This will not free the entries in the table! */
|
||||||
|
|
||||||
|
#if defined(HAVE_INLINE)
|
||||||
|
INLINE unsigned HT_GetCount (const HashTable* T)
|
||||||
|
/* Return the number of items in the table. */
|
||||||
|
{
|
||||||
|
return T->Count;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define HT_GetCount(T) ((T)->Count)
|
||||||
|
#endif
|
||||||
|
|
||||||
HashNode* HT_FindHash (const HashTable* T, const void* Key, unsigned Hash);
|
HashNode* HT_FindHash (const HashTable* T, const void* Key, unsigned Hash);
|
||||||
/* Find the node with the given key. Differs from HT_Find in that the hash
|
/* Find the node with the given key. Differs from HT_Find in that the hash
|
||||||
* for the key is precalculated and passed to the function.
|
* for the key is precalculated and passed to the function.
|
||||||
|
Loading…
Reference in New Issue
Block a user