diff options
author | Tom Smeding <tom.smeding@gmail.com> | 2020-07-04 14:16:41 +0200 |
---|---|---|
committer | Tom Smeding <tom.smeding@gmail.com> | 2020-07-04 14:23:28 +0200 |
commit | 9e509673ef53e9a2aa412c16a9752afed1f98869 (patch) | |
tree | decb2d0b7d619ca726b5fc9613c767bc8181273b | |
parent | 548c540989527b45b9152f9f21ab8cf5e53893a6 (diff) |
server: Use u64 for keys in hashtable
-rw-r--r-- | hashtable.c | 9 | ||||
-rw-r--r-- | hashtable.h | 8 |
2 files changed, 9 insertions, 8 deletions
diff --git a/hashtable.c b/hashtable.c index bfda316..020d281 100644 --- a/hashtable.c +++ b/hashtable.c @@ -1,6 +1,5 @@ #include <limits.h> #include "hashtable.h" -#include "global.h" // Generated by starting with 5, then repeatedly taking the smallest prime at @@ -16,7 +15,7 @@ static const size_t doubling_primes[] = { struct keyvalue { - unsigned int key; + u64 key; void *value; }; @@ -90,7 +89,7 @@ void ht_free(struct hashtable *ht) { free(ht); } -void ht_insert(struct hashtable *ht, unsigned int key, void *value) { +void ht_insert(struct hashtable *ht, u64 key, void *value) { struct bucket *bucket = &ht->table[key % ht->modulus]; if (bucket->cap == 0) { @@ -117,7 +116,7 @@ void ht_insert(struct hashtable *ht, unsigned int key, void *value) { } } -void* ht_find(const struct hashtable *ht, unsigned int key) { +void* ht_find(const struct hashtable *ht, u64 key) { struct bucket *bucket = &ht->table[key % ht->modulus]; for (int i = 0; i < bucket->len; i++) { if (bucket->pairs[i].key == key) { @@ -127,7 +126,7 @@ void* ht_find(const struct hashtable *ht, unsigned int key) { return NULL; } -void ht_delete(struct hashtable *ht, unsigned int key) { +void ht_delete(struct hashtable *ht, u64 key) { struct bucket *bucket = &ht->table[key % ht->modulus]; for (int i = 0; i < bucket->len; i++) { if (bucket->pairs[i].key == key) { diff --git a/hashtable.h b/hashtable.h index b85c2e0..21467a8 100644 --- a/hashtable.h +++ b/hashtable.h @@ -1,15 +1,17 @@ #pragma once +#include "global.h" + struct hashtable; struct hashtable* ht_alloc(); void ht_free(struct hashtable *ht); -void ht_insert(struct hashtable *ht, unsigned int key, void *value); +void ht_insert(struct hashtable *ht, u64 key, void *value); // Returns NULL if key is not present in the table. -void* ht_find(const struct hashtable *ht, unsigned int key); +void* ht_find(const struct hashtable *ht, u64 key); // Does nothing if the key is not present in the table. -void ht_delete(struct hashtable *ht, unsigned int key); +void ht_delete(struct hashtable *ht, u64 key); |