46c65bd44db5b7749d89d83bd1b18790342d9e19
[m6w6/ext-psi] / src / types / decl_vars.h
1 #ifndef _PSI_TYPES_DECL_VARS_H
2 #define _PSI_TYPES_DECL_VARS_H
3
4 typedef struct decl_vars {
5 decl_var **vars;
6 size_t count;
7 } decl_vars;
8
9 static inline decl_vars *init_decl_vars(decl_var *var) {
10 decl_vars *vars = calloc(1, sizeof(*vars));
11 if (var) {
12 vars->count = 1;
13 vars->vars = calloc(1, sizeof(*vars->vars));
14 vars->vars[0] = var;
15 }
16 return vars;
17 }
18
19 static inline decl_vars *add_decl_var(decl_vars *vars, decl_var *var) {
20 vars->vars = realloc(vars->vars, ++vars->count * sizeof(*vars->vars));
21 vars->vars[vars->count-1] = var;
22 return vars;
23 }
24
25 static inline void free_decl_vars(decl_vars *vars) {
26 size_t i;
27
28 for (i = 0; i < vars->count; ++i) {
29 free_decl_var(vars->vars[i]);
30 }
31 free(vars->vars);
32 free(vars);
33 }
34
35 #endif