61a3f72564ddd3990048ba85281e2c79ee5b6d8e
[m6w6/ext-psi] / src / types / decl_enums.h
1 #ifndef _PSI_TYPES_DECL_ENUMS_H
2 #define _PSI_TYPES_DECL_ENUMS_H
3
4 typedef struct decl_enums {
5 decl_enum **list;
6 size_t count;
7 } decl_enums;
8
9 static inline decl_enums* add_decl_enum(decl_enums *es, decl_enum *e) {
10 if (!es) {
11 es = calloc(1, sizeof(*es));
12 }
13 es->list = realloc(es->list, ++es->count * sizeof(*es->list));
14 es->list[es->count-1] = e;
15 return es;
16 }
17
18 static inline void free_decl_enums(decl_enums *es) {
19 if (es->list) {
20 size_t j;
21
22 for (j = 0; j < es->count; ++j) {
23 free_decl_enum(es->list[j]);
24 }
25 }
26 free(es->list);
27 free(es);
28 }
29
30 #endif