diff options
Diffstat (limited to 'htable.h')
| -rw-r--r-- | htable.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/htable.h b/htable.h new file mode 100644 index 0000000..c373baa --- /dev/null +++ b/htable.h @@ -0,0 +1,31 @@ +// Copyright (C) 2023 Dzshy <dzshy@outlook.com>. All Rights Reserved. +// Licensed under Non-Profit Open Software License ("Non-Profit OSL") 3.0. + +#ifndef HTABLE_H_ +#define HTABLE_H_ + +#include <stdbool.h> +#include <stdint.h> + +typedef struct { + void *buf; + int size; + int cap; + int taken; + void *begin; + int elemsz; + uint32_t (*hash)(void *); + bool (*eq)(void *, void *); +} HTable; + +void htable_init(HTable *ht, int elemsz, int cap, uint32_t (*hash)(void *), + bool (*eq)(void *, void *)); +bool htable_insert(HTable *ht, void *elem); +void htable_del(HTable *ht, void *iter); + +// return a iterator +void *htable_find(HTable *ht, void *elem); +void *htable_begin(HTable *ht); +void *htable_next(HTable *ht, void *iter); + +#endif |
