4223
|
1 #ifndef VARIABLE_H_
|
|
2 #define VARIABLE_H_
|
|
3
|
|
4 #include "config.h"
|
|
5 #include "strhash.h"
|
|
6
|
|
7 #include <stddef.h>
|
|
8
|
|
9 typedef size_t t_vr_cookie;
|
|
10 #define VR_NO_COOKIE ((size_t)-1)
|
|
11
|
|
12 typedef struct {
|
|
13 void **data;
|
|
14 size_t size, length;
|
|
15 t_strhash *hash;
|
|
16 void (*del)(void *);
|
|
17 } t_vr_container;
|
|
18
|
|
19 t_vr_container *vr_new(void (*)(void *));
|
|
20 void vr_delete(t_vr_container *);
|
|
21
|
|
22 t_vr_cookie vr_exists(const t_vr_container *, const char *, size_t);
|
|
23 t_vr_cookie vr_register(t_vr_container *, const char *, size_t, void *);
|
|
24
|
|
25 void vr_freeze(t_vr_container *);
|
|
26
|
|
27 ATTR_PURE
|
|
28 void *vr_data(const t_vr_container *, t_vr_cookie);
|
|
29
|
|
30 #if !DEBUG_P
|
|
31 #define vr_data(vc, c) ((vc)->data[c])
|
|
32 #endif
|
|
33
|
|
34 #endif /* VARIABLE_H_ */
|