X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fimpls.h;fp=src%2Ftypes%2Fimpls.h;h=8bf17fbad2fd9a2c425acc2e31925e3380f5065e;hb=5359ad5c181e5772f350fe1cba060cbed3a05b91;hp=0000000000000000000000000000000000000000;hpb=04a60b34fc18ea3a2638893eaf24514177692eeb;p=m6w6%2Fext-psi diff --git a/src/types/impls.h b/src/types/impls.h new file mode 100644 index 0000000..8bf17fb --- /dev/null +++ b/src/types/impls.h @@ -0,0 +1,28 @@ +#ifndef _PSI_TYPES_IMPLS_H +#define _PSI_TYPES_IMPLS_H + +typedef struct impls { + size_t count; + impl **list; +} impls; + +static inline impls *add_impl(impls *impls, impl *impl) { + if (!impls) { + impls = calloc(1, sizeof(*impls)); + } + impls->list = realloc(impls->list, ++impls->count * sizeof(*impls->list)); + impls->list[impls->count-1] = impl; + return impls; +} + +static inline void free_impls(impls *impls) { + size_t i; + + for (i = 0; i < impls->count; ++i) { + free_impl(impls->list[i]); + } + free(impls->list); + free(impls); +} + +#endif