htils 1
A small set of utilities for C programming.
Loading...
Searching...
No Matches
stringmap.h
Go to the documentation of this file.
1#ifndef HTILS_STRINGMAP_H
2#define HTILS_STRINGMAP_H
3
4/***********************************/
5
6#include <htils/basictypes.h>
7
8#include <htils/arena.h>
9#include <htils/basictypes.h>
10#include <htils/string.h>
11
12/***********************************/
13
29
49
64
82
84#ifdef USE_NULLABLE_TYPES
85typedef stringmap_t stringmap_nullable_t;
86#endif
87
102stringmap_t *sm_new(arena_t *arena, const u64 capacity);
103
104//
105//
106//
107
130stringmap_result_t __sm_insert(stringmap_t *map, const string *key,
131 const void *value, u64 vsize);
132
133#define SM_VAL(val) (val), sizeof(*val)
134#define sm_insert(map, key, value) __sm_insert(map, key, SM_VAL(value))
135
136//
137//
138//
139
154stringmap_result_t sm_kill(stringmap_t *map, const string *key);
155
156//
157//
158//
159
174void *sm_get(stringmap_t *map, const string *key);
175
176#endif // !HTILS_stringmap_H
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