validation and marshaling of structs/unions
[m6w6/ext-psi] / src / types / decl_typedefs.h
1 #ifndef _PSI_TYPES_DECL_TYPEDEFS_H
2 #define _PSI_TYPES_DECL_TYPEDEFS_H
3
4 typedef struct decl_typedefs {
5 size_t count;
6 decl_arg **list;
7 } decl_typedefs;
8
9 static inline decl_typedefs *add_decl_typedef(decl_typedefs *defs, decl_arg *def) {
10 if (!defs) {
11 defs = calloc(1, sizeof(*defs));
12 }
13 defs->list = realloc(defs->list, ++defs->count * sizeof(*defs->list));
14 defs->list[defs->count-1] = def;
15 return defs;
16 }
17
18 static inline void free_decl_typedefs(decl_typedefs *defs) {
19 size_t i;
20
21 for (i = 0; i < defs->count; ++i) {
22 free_decl_arg(defs->list[i]);
23 }
24 free(defs->list);
25 free(defs);
26 }
27
28 #endif