1#ifndef HTILS_STRINGMAP_H
2#define HTILS_STRINGMAP_H
84#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))
struct arena arena_t
An atomic arena.
uint64_t u64
Definition basictypes.h:22
struct stringmap_entry stringmap_entry_t
A stringmap entry.
stringmap_result
Definition stringmap.h:42
@ UPDATED
Definition stringmap.h:44
@ KILLED
Definition stringmap.h:47
@ CREATED
The result of a stringmap operation.
Definition stringmap.h:43
@ NOT_FOUND
Definition stringmap.h:46
struct stringmap stringmap_t
A stringmap.
stringmap_t * sm_new(arena_t *arena, const u64 capacity)
Initializes a new stringmap.
Definition stringmap.c:116
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:141
enum stringmap_result stringmap_result_t
void * sm_get(stringmap_t *map, const string *key)
Get a value from the stringmap.
Definition stringmap.c:222
stringmap_result_t sm_kill(stringmap_t *map, const string *key)
Remove the entry at key from the stringmap.
Definition stringmap.c:190
enum stringmap_entry_state stringmap_entry_state_t
stringmap_entry_state
Definition stringmap.h:24
@ DEAD
Definition stringmap.h:27
@ EMPTY
The state of a stringmap entry.
Definition stringmap.h:25
@ OCCUPIED
Definition stringmap.h:26
An atomic arena.
Definition arena.h:45
A stringmap entry.
Definition stringmap.h:58
string * key
Definition stringmap.h:59
enum stringmap_entry_state state
Definition stringmap.h:62
u64 vsize
Definition stringmap.h:61
void * value
Definition stringmap.h:60
A stringmap.
Definition stringmap.h:74
u64 dead_entries
Definition stringmap.h:80
arena_t * arena
Definition stringmap.h:75
stringmap_entry_t * entries
Definition stringmap.h:76
u64 capacity
Definition stringmap.h:78
u64 count
Definition stringmap.h:79