From 6fccac3372170153b59e829d11c6c0b0a5c2bc77 Mon Sep 17 00:00:00 2001 From: omniscient <17525998+omnisci3nce@users.noreply.github.com> Date: Wed, 19 Jun 2024 15:15:39 +1000 Subject: start fleshing out API for hashmap / hashset --- src/std/containers/hashset.h | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/std/containers/hashset.h') diff --git a/src/std/containers/hashset.h b/src/std/containers/hashset.h index d153fd2..978ec00 100644 --- a/src/std/containers/hashset.h +++ b/src/std/containers/hashset.h @@ -7,4 +7,23 @@ * * @copyright Copyright (c) 2024 * - */ \ No newline at end of file + */ + +#include "defines.h" + +typedef struct hashset hashset; + +/** @brief Describes a function that will take a pointer to a datatype (e.g. a u64 or a struct) + and return a hashed key. */ +typedef uint64_t (*hash_item)(void* item); + +void hashset_init(hashset* set, hash_item hash_func, size_t initial_capacity); +// TODO: void hashset_from_iterator(); +bool hashset_insert(hashset* set, void* item, uint64_t* out_key); +void hashset_batch_insert(hashset* set, void* items, u64 item_count); +bool hashset_contains(hashset* set, void* item); +bool hashset_remove_item(hashset* set, void* item); +bool hashset_remove_key(hashset* set, uint64_t key); +void hashset_merge(hashset* set_a, hashset* set_b); +hashset* hashset_merge_cloned(hashset* set_a, hashset* set_b); +void hashset_free(hashset* set); \ No newline at end of file -- cgit v1.2.3-70-g09d2