Add hash set implementation
Release / release (push) Successful in 4s

This commit is contained in:
2026-09-23 22:34:23 +01:00
parent 20e890964f
commit 68640dc5e2
12 changed files with 590 additions and 44 deletions
+11 -11
View File
@@ -69,18 +69,21 @@ typedef struct WpHashLookupResult {
b8 found;
} WpHashLookupResult;
void *hashTableKeys(WpHashTable *table);
void *hashTableValues(WpHashTable *table);
void *hashTableGetKeyFromBucket(WpHashTable *table, WpHashBucket bucket, u64 key_size);
void *hashTableGetValueFromBucket(WpHashTable *table, WpHashBucket bucket, u64 value_size);
void hashTableAlloc(const WpAllocator *allocator, WpHashTable *table,
WpHasher hasher, WpU8StreamEncoder encoder,
WpKeyEqualTest key_eq, u64 capacity, u64 key_size,
u64 value_size, b8 has_values);
u64 hashTableCalcHash(WpHashTable *table, void *key, u64 key_size);
WpHashBucketRef hashTableBucketRef(WpHashTable *table, u64 hash);
void *hashTableKeys(WpHashTable *table, u64 key_size);
void *hashTableValues(WpHashTable *table, u64 value_size);
void *hashTableGetKeyFromBucketRef(WpHashTable *table, WpHashBucketRef ref, u64 key_size);
void *hashTableGetValueFromBucketRef(WpHashTable *table, WpHashBucketRef ref, u64 value_size);
u64 hashTableCapacity(WpHashTable *table);
u64 hashTableCount(WpHashTable *table);
u64 hashTableKeySize(WpHashTable *table);
u64 hashTableValueSize(WpHashTable *table);
u64 hashTableCalcHash(WpHashTable *table, void *key, u64 key_size);
void hashTableGrow(WpHashTable *table, const WpAllocator *allocator, u64 key_size,
void hashTableGrow(const WpAllocator *allocator, WpHashTable *table, u64 key_size,
u64 value_size);
WpHashLookupResult hashTableLookup(WpHashTable *table, void *key, WpHashBucketRef ref, u64 key_size);
void hashTableUpdate(WpHashTable *table, void *value, WpHashBucketRef ref, u64 value_size);
@@ -88,11 +91,8 @@ void hashTableInsert(WpHashTable *table, void *key, void *value, W
u64 key_size, u64 value_size);
void hashTableRemove(WpHashTable *table, WpHashBucketRef ref, u64 key_size, u64 value_size);
void hashTableClear(WpHashTable *table, u64 key_size, u64 value_size);
WpHashBucketRef hashTableBucketRef(WpHashTable *table, u64 hash);
u64 hashTableGetDist(u64 dist_and_tag);
u64 hashTableNextBucket(WpHashTable *table, u64 bucket_index);
u64 hashTableDistInc(u64 dist_and_tag);
u64 hashTableDistDec(u64 dist_and_tag);
void hashTableDealloc(const WpAllocator *allocator, WpHashTable *table, u64 key_size,
u64 value_size);
#ifdef WP_PLATFORM_CPP
END_C_LINKAGE