diff options
| author | Mistivia <i@mistivia.com> | 2025-06-09 01:42:18 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-06-09 01:42:52 +0800 |
| commit | 12eeb35015aba138a4e543c28c2ecee58d532440 (patch) | |
| tree | 11a7776977c661f5f5a7c013bed290ba96fa2c23 /src/hash_table.c | |
| parent | 55f3a89f40a676fca7fb820037457c74cbdebb92 (diff) | |
pass by value in basic traits
Diffstat (limited to 'src/hash_table.c')
| -rw-r--r-- | src/hash_table.c | 6 |
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 |
