api refactoring
[m6w6/ext-psi] / src / types / decl_enum_item.h
1 #ifndef _PSI_TYPES_DECL_ENUM_ITEM_H
2 #define _PSI_TYPES_DECL_ENUM_ITEM_H
3
4 typedef struct decl_enum_item {
5 struct psi_token *token;
6 char *name;
7 num_exp *num;
8 num_exp inc;
9 struct decl_enum_item *prev;
10 } decl_enum_item;
11
12 static inline decl_enum_item *init_decl_enum_item(const char *name, num_exp *num) {
13 decl_enum_item *i = calloc(1, sizeof(*i));
14
15 i->name = strdup(name);
16 i->num = num;
17 return i;
18 }
19
20 static inline void free_decl_enum_item(decl_enum_item *i) {
21 if (i->token) {
22 free(i->token);
23 }
24 if (i->num && i->num != &i->inc) {
25 free_num_exp(i->num);
26 }
27 free(i->name);
28 free(i);
29 }
30
31 #endif