X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fdecl_vars.h;fp=src%2Ftypes%2Fdecl_vars.h;h=46c65bd44db5b7749d89d83bd1b18790342d9e19;hb=5359ad5c181e5772f350fe1cba060cbed3a05b91;hp=0000000000000000000000000000000000000000;hpb=04a60b34fc18ea3a2638893eaf24514177692eeb;p=m6w6%2Fext-psi diff --git a/src/types/decl_vars.h b/src/types/decl_vars.h new file mode 100644 index 0000000..46c65bd --- /dev/null +++ b/src/types/decl_vars.h @@ -0,0 +1,35 @@ +#ifndef _PSI_TYPES_DECL_VARS_H +#define _PSI_TYPES_DECL_VARS_H + +typedef struct decl_vars { + decl_var **vars; + size_t count; +} decl_vars; + +static inline decl_vars *init_decl_vars(decl_var *var) { + decl_vars *vars = calloc(1, sizeof(*vars)); + if (var) { + vars->count = 1; + vars->vars = calloc(1, sizeof(*vars->vars)); + vars->vars[0] = var; + } + return vars; +} + +static inline decl_vars *add_decl_var(decl_vars *vars, decl_var *var) { + vars->vars = realloc(vars->vars, ++vars->count * sizeof(*vars->vars)); + vars->vars[vars->count-1] = var; + return vars; +} + +static inline void free_decl_vars(decl_vars *vars) { + size_t i; + + for (i = 0; i < vars->count; ++i) { + free_decl_var(vars->vars[i]); + } + free(vars->vars); + free(vars); +} + +#endif