aboutsummaryrefslogtreecommitdiff
path: root/src/hash_table.c
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-06-09 01:42:18 +0800
committerMistivia <i@mistivia.com>2025-06-09 01:42:52 +0800
commit12eeb35015aba138a4e543c28c2ecee58d532440 (patch)
tree11a7776977c661f5f5a7c013bed290ba96fa2c23 /src/hash_table.c
parent55f3a89f40a676fca7fb820037457c74cbdebb92 (diff)
pass by value in basic traits
Diffstat (limited to 'src/hash_table.c')
-rw-r--r--src/hash_table.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/hash_table.c b/src/hash_table.c
index 0e7bd41..c768df8 100644
--- a/src/hash_table.c
+++ b/src/hash_table.c
@@ -19,7 +19,7 @@ HASH_TABLE_IMPL(VoidPtr, Int);
HASH_TABLE_IMPL(VoidPtr, String);
-static void rebuild(HashTable *ht, VoidHashFn hash, VoidEqFn eq) {
+static void rebuild(HashTable *ht, uint64_t (*hash)(void*), bool (*eq)(void*, void*)) {
HashTable newht;
init_hash_table(&newht, ht->elemsz, ht->size * 6);
void *iter = hash_table_begin(ht);
@@ -44,7 +44,7 @@ void init_hash_table(HashTable *ht, int64_t elemsz, int64_t cap) {
ht->elemsz = elemsz;
}
-bool hash_table_insert(HashTable *ht, void *elem, VoidHashFn hash, VoidEqFn eq) {
+bool hash_table_insert(HashTable *ht, void *elem, uint64_t (*hash)(void*), bool (*eq)(void*, void*)) {
if (ht->taken + 1 > ht->cap / 2) {
rebuild(ht, hash, eq);
}
@@ -76,7 +76,7 @@ void *hash_table_ref(HashTable *ht, int64_t pos) {
return ht->buf + pos * ht->elemsz;
}
-void *hash_table_find(HashTable *ht, void *elem, VoidHashFn hash, VoidEqFn eq) {
+void *hash_table_find(HashTable *ht, void *elem, uint64_t (*hash)(void*), bool (*eq)(void*, void*)) {
int64_t pos = hash(elem) % ht->cap;
while (ht->flagbuf[pos] != HTFL_NUL) {
if (ht->flagbuf[pos] == HTFL_VAL