X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftypes%2Fdecl_enums.h;fp=src%2Ftypes%2Fdecl_enums.h;h=61a3f72564ddd3990048ba85281e2c79ee5b6d8e;hb=5359ad5c181e5772f350fe1cba060cbed3a05b91;hp=0000000000000000000000000000000000000000;hpb=04a60b34fc18ea3a2638893eaf24514177692eeb;p=m6w6%2Fext-psi diff --git a/src/types/decl_enums.h b/src/types/decl_enums.h new file mode 100644 index 0000000..61a3f72 --- /dev/null +++ b/src/types/decl_enums.h @@ -0,0 +1,30 @@ +#ifndef _PSI_TYPES_DECL_ENUMS_H +#define _PSI_TYPES_DECL_ENUMS_H + +typedef struct decl_enums { + decl_enum **list; + size_t count; +} decl_enums; + +static inline decl_enums* add_decl_enum(decl_enums *es, decl_enum *e) { + if (!es) { + es = calloc(1, sizeof(*es)); + } + es->list = realloc(es->list, ++es->count * sizeof(*es->list)); + es->list[es->count-1] = e; + return es; +} + +static inline void free_decl_enums(decl_enums *es) { + if (es->list) { + size_t j; + + for (j = 0; j < es->count; ++j) { + free_decl_enum(es->list[j]); + } + } + free(es->list); + free(es); +} + +#endif