1#ifndef HTILS_STRINGMAP_H
2#define HTILS_STRINGMAP_H
80#ifdef USE_NULLABLE_TYPES
131 const void *value,
u64 vsize);
133#define SM_VAL(val) (val), sizeof(*val)
134#define sm_insert(map, key, value) __sm_insert(map, key, SM_VAL(value))
uint64_t u64
Definition basictypes.h:17
struct stringmap_entry stringmap_entry_t
A stringmap entry.
stringmap_result
The result of a stringmap operation.
Definition stringmap.h:35
@ UPDATED
Definition stringmap.h:37
@ KILLED
Definition stringmap.h:40
@ CREATED
Definition stringmap.h:36
@ NOT_FOUND
Definition stringmap.h:39
struct stringmap stringmap_t
A stringmap.
stringmap_t * sm_new(arena_t *arena, const u64 capacity)
Initializes a new stringmap.
Definition stringmap.c:19
stringmap_result_t __sm_insert(stringmap_t *map, const string *key, const void *value, u64 vsize)
Insert key and value into the stringmap.
Definition stringmap.c:101
enum stringmap_result stringmap_result_t
The result of a stringmap operation.
void * sm_get(stringmap_t *map, const string *key)
Get a V from the stringmap.
Definition stringmap.c:182
stringmap_result_t sm_kill(stringmap_t *map, const string *key)
Remove / Kill entry at key from the stringmap.
Definition stringmap.c:145
enum stringmap_entry_state stringmap_entry_state_t
The state of a stringmap entry.
stringmap_entry_state
The state of a stringmap entry.
Definition stringmap.h:19
@ DEAD
Definition stringmap.h:22
@ EMPTY
Definition stringmap.h:20
@ OCCUPIED
Definition stringmap.h:21
An arena.
Definition arena.h:26
A stringmap entry.
Definition stringmap.h:50
string * key
Definition stringmap.h:51
enum stringmap_entry_state state
Definition stringmap.h:54
u64 vsize
Definition stringmap.h:53
void * value
Definition stringmap.h:52
A stringmap.
Definition stringmap.h:66
u64 dead_entries
Definition stringmap.h:72
arena_t * arena
Definition stringmap.h:67
stringmap_entry_t * entries
Definition stringmap.h:68
u64 capacity
Definition stringmap.h:70
u64 count
Definition stringmap.h:71