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#include <htils/arena.h>
5#include <htils/basictypes.h>
6#include <htils/string.h>
7
8//
9//
10//
11
24
42
56
74
75//
76//
77//
78
80#ifdef USE_NULLABLE_TYPES
81typedef stringmap_t stringmap_nullable_t;
82#endif
83
84//
85//
86//
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
150stringmap_result_t sm_kill(stringmap_t *map, const string *key);
151
152//
153//
154//
155
170void *sm_get(stringmap_t *map, const string *key);
171
172#endif // !HTILS_stringmap_H
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