From bc7906bde428b718b02ee0bbe9041aaa13a36fe4 Mon Sep 17 00:00:00 2001 From: Matheus Date: Fri, 30 Dec 2022 03:26:57 -0300 Subject: [PATCH] hashtables: isset() --- src/include/hashtable.h | 1 + src/include/hashtable/hashtable.c | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/include/hashtable.h b/src/include/hashtable.h index f48f85eb..6ebd4d9b 100644 --- a/src/include/hashtable.h +++ b/src/include/hashtable.h @@ -24,5 +24,6 @@ bool hashtable_remove(hashtable*, char*); void hashtable_destroy(hashtable*); void* hashtable_get(hashtable*, char*); bool hashtable_set(hashtable*, char*, void*); +bool hashtable_isset(hashtable*, char*); #endif diff --git a/src/include/hashtable/hashtable.c b/src/include/hashtable/hashtable.c index 2b8e1826..26b0dae1 100644 --- a/src/include/hashtable/hashtable.c +++ b/src/include/hashtable/hashtable.c @@ -27,6 +27,24 @@ static inline hashtableentry* getentry(hashtable* table, char* key){ return &table->entries[entryn]; } +bool hashtable_isset(hashtable* table, char* key){ + + hashtableentry* entry = getentry(table, key); + + if(!entry) + return false; + + if(!entry->key) + return false; + + while(entry && strcmp(entry->key, key)) + entry = entry->next; + + if(!entry) return false; + + return true; +} + void* hashtable_fromoffset(hashtable* table, uintmax_t offset, char* retkey){ for(uintmax_t i = 0; i < table->size; ++i){ @@ -164,8 +182,8 @@ void* hashtable_get(hashtable* table, char* key){ void hashtable_destroy(hashtable* table){ - // would be cool if this also deleted non removed entries - + // TODO fix memory leak bruh + free(table->entries);