hash/hashtable.h

43 lines
823 B
C
Raw Normal View History

2024-08-16 19:08:58 +00:00
#ifndef HASHTABLE_H
#define HASHTABLE_H
2024-08-16 19:32:35 +00:00
#include <stdlib.h>
#include <stdbool.h>
2024-06-28 22:37:51 +00:00
typedef struct {
bool exists;
size_t sizet;
} size_t_optional;
typedef struct {
2024-08-16 19:08:58 +00:00
size_t size;
2024-06-28 22:37:51 +00:00
char* name;
void* data;
2024-08-16 19:27:19 +00:00
} HashTable_item;
2024-06-28 22:37:51 +00:00
typedef struct {
size_t capacity;
size_t filled;
2024-08-16 19:27:19 +00:00
HashTable_item* items;
} HashTable;
2024-06-28 22:37:51 +00:00
2024-08-16 19:27:19 +00:00
bool hashtable_recreate(HashTable* table);
2024-07-28 20:22:58 +00:00
2024-08-16 19:27:19 +00:00
HashTable* hashtable_create(void);
2024-06-28 22:37:51 +00:00
2024-08-16 19:27:19 +00:00
void hashtable_destroy(HashTable*);
2024-06-28 22:37:51 +00:00
2024-08-16 19:27:19 +00:00
size_t_optional hashtable_key(HashTable*, char*, size_t);
2024-08-16 19:08:58 +00:00
2024-08-16 19:27:19 +00:00
size_t_optional hashtable_insert(HashTable*, char*, size_t);
2024-06-28 22:37:51 +00:00
2024-08-16 19:27:19 +00:00
void* hashtable_get(HashTable* table, char* name, size_t);
2024-06-28 22:37:51 +00:00
2024-08-16 19:27:19 +00:00
void hashtable_set(HashTable* table, char* name, size_t, void* data);
2024-06-28 22:37:51 +00:00
2024-08-16 19:27:19 +00:00
bool hashtable_delete(HashTable*, char*, size_t);
2024-07-28 19:57:08 +00:00
2024-08-16 19:27:19 +00:00
void hashtable_forall(HashTable*, void (*)(char*, size_t, void*, void*), void*);
2024-07-28 19:57:08 +00:00
2024-08-16 19:08:58 +00:00
#endif