util-hash: add iterator for hash function

pull/12862/head
Lukas Sismis 2 years ago committed by Victor Julien
parent bd1885c71a
commit 2188cfca24

@ -208,6 +208,21 @@ void *HashTableLookup(HashTable *ht, void *data, uint16_t datalen)
return NULL;
}
// CallbackFn is an iterator, first argument is the data, second is user auxilary data
void HashTableIterate(HashTable *ht, void (*CallbackFn)(void *, void *), void *aux)
{
if (ht == NULL || CallbackFn == NULL)
return;
for (uint32_t i = 0; i < ht->array_size; i++) {
HashTableBucket *hashbucket = ht->array[i];
while (hashbucket != NULL) {
CallbackFn(hashbucket->data, aux);
hashbucket = hashbucket->next;
}
}
}
uint32_t HashTableGenericHash(HashTable *ht, void *data, uint16_t datalen)
{
uint8_t *d = (uint8_t *)data;

@ -51,6 +51,7 @@ void HashTableFree(HashTable *);
int HashTableAdd(HashTable *, void *, uint16_t);
int HashTableRemove(HashTable *, void *, uint16_t);
void *HashTableLookup(HashTable *, void *, uint16_t);
void HashTableIterate(HashTable *ht, void (*CallbackFn)(void *, void *), void *aux);
uint32_t HashTableGenericHash(HashTable *, void *, uint16_t);
char HashTableDefaultCompare(void *, uint16_t, void *, uint16_t);

Loading…
Cancel
Save