X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fdecl_unions.h;fp=src%2Ftypes%2Fdecl_unions.h;h=49c6b7391cde7291111684572d4377132e8682bd;hb=5359ad5c181e5772f350fe1cba060cbed3a05b91;hp=0000000000000000000000000000000000000000;hpb=04a60b34fc18ea3a2638893eaf24514177692eeb;p=m6w6%2Fext-psi diff --git a/src/types/decl_unions.h b/src/types/decl_unions.h new file mode 100644 index 0000000..49c6b73 --- /dev/null +++ b/src/types/decl_unions.h @@ -0,0 +1,28 @@ +#ifndef _PSI_TYPES_DECL_UNOINS_H +#define _PSI_TYPES_DECL_UNOINS_H + +typedef struct decl_unions { + decl_union **list; + size_t count; +} decl_unions; + +static inline decl_unions *add_decl_union(decl_unions *uu, decl_union *u) { + if (!uu) { + uu = calloc(1, sizeof(*uu)); + } + uu->list = realloc(uu->list, ++uu->count * sizeof(*uu->list)); + uu->list[uu->count-1] = u; + return uu; +} + +static inline void free_decl_unions(decl_unions *uu) { + size_t i; + + for (i = 0; i < uu->count; ++i) { + free_decl_union(uu->list[i]); + } + free(uu->list); + free(uu); +} + +#endif