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