36352ab6538f385ab3009fde3544312a344cef55
[m6w6/ext-psi] / src / types / constants.h
1 #ifndef _PSI_TYPES_CONSTANTS_H
2 #define _PSI_TYPES_CONSTANTS_H
3
4 typedef struct constants {
5 size_t count;
6 constant **list;
7 } constants;
8
9 static inline constants *add_constant(constants *constants, constant *constant) {
10 if (!constants) {
11 constants = calloc(1, sizeof(*constants));
12 }
13 constants->list = realloc(constants->list, ++constants->count * sizeof(*constants->list));
14 constants->list[constants->count-1] = constant;
15 return constants;
16 }
17
18 static inline void free_constants(constants *c) {
19 size_t i;
20
21 for (i = 0; i < c->count; ++i) {
22 free_constant(c->list[i]);
23 }
24 free(c->list);
25 free(c);
26 }
27
28 #endif