From 9e509673ef53e9a2aa412c16a9752afed1f98869 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Sat, 4 Jul 2020 14:16:41 +0200 Subject: server: Use u64 for keys in hashtable --- hashtable.c | 9 ++++----- 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 #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); -- cgit v1.2.3-70-g09d2