void specifier_qualifier_list_free(struct specifier_qualifier_list *sql)
{
- switch(sql->type) {
- case SQ_LIST_TYPE_SPECIFIER_LIST:
- if(sql->data.tspec) {
- type_specifier_free(sql->data.tspec);
- }
-
- break;
-
- case SQ_LIST_TYPE_QUALIFIER_LIST:
- if(sql->data.tqual) {
- type_qualifier_free(sql->data.tqual);
- }
-
- break;
+ if(sql->tspec) {
+ type_specifier_free(sql->tspec);
+ }
- default:
- break;
+ if(sql->tqual) {
+ type_qualifier_free(sql->tqual);
}
if(sql->next) {
TYPE_SPECIFIER_TYPEDEF
};
-enum sq_list_type {
- SQ_LIST_TYPE_INVALID,
- SQ_LIST_TYPE_SPECIFIER_LIST,
- SQ_LIST_TYPE_QUALIFIER_LIST
-};
-
struct specifier_qualifier_list {
- enum sq_list_type type;
-
- union {
- struct type_specifier *tspec;
- struct type_qualifier *tqual;
- } data;
-
+ struct type_specifier *tspec;
+ struct type_qualifier *tqual;
struct specifier_qualifier_list *next;
};