From 87559458f20289426ace90cb734f33a8798848ce Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Fri, 12 Sep 2014 15:01:10 +0100 Subject: [PATCH] eolian: get rid of a list --- src/lib/eolian/eo_lexer.c | 13 ++++++------- src/lib/eolian/eo_lexer.h | 2 +- src/lib/eolian/eo_parser.c | 19 +++---------------- 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c index 6f41535..4601ee4 100644 --- a/src/lib/eolian/eo_lexer.c +++ b/src/lib/eolian/eo_lexer.c @@ -705,22 +705,21 @@ _temps_free(Eo_Lexer_Temps *tmp) { Eina_Strbuf *buf; Eolian_Type *tp; - Eolian_Variable *var; Eolian_Class *cl; const char *s; - EINA_LIST_FREE(tmp->str_bufs, buf) - eina_strbuf_free(buf); - if (tmp->kls) database_class_del(tmp->kls); + if (tmp->var) + database_var_del(tmp->var); + + EINA_LIST_FREE(tmp->str_bufs, buf) + eina_strbuf_free(buf); + EINA_LIST_FREE(tmp->type_defs, tp) database_type_del(tp); - EINA_LIST_FREE(tmp->var_defs, var) - database_var_del(var); - EINA_LIST_FREE(tmp->str_items, s) if (s) eina_stringshare_del(s); diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h index b5c49e4..5a6e630 100644 --- a/src/lib/eolian/eo_lexer.h +++ b/src/lib/eolian/eo_lexer.h @@ -96,10 +96,10 @@ typedef struct _Lexer_Ctx typedef struct _Eo_Lexer_Temps { Eolian_Class *kls; + Eolian_Variable *var; Eina_List *classes; Eina_List *str_bufs; Eina_List *type_defs; - Eina_List *var_defs; Eina_List *str_items; Eina_List *expr_defs; Eina_List *strs; diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 9eeca8c..dc64db7 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -114,20 +114,6 @@ pop_type(Eo_Lexer *ls) ls->tmp.type_defs = eina_list_remove_list(ls->tmp.type_defs, ls->tmp.type_defs); } -static Eolian_Variable * -push_var(Eo_Lexer *ls) -{ - Eolian_Variable *def = calloc(1, sizeof(Eolian_Variable)); - ls->tmp.var_defs = eina_list_prepend(ls->tmp.var_defs, def); - return def; -} - -static void -pop_var(Eo_Lexer *ls) -{ - ls->tmp.var_defs = eina_list_remove_list(ls->tmp.var_defs, ls->tmp.var_defs); -} - static Eina_Stringshare * push_str(Eo_Lexer *ls, const char *val) { @@ -1053,9 +1039,10 @@ parse_typedef(Eo_Lexer *ls) static Eolian_Variable * parse_variable(Eo_Lexer *ls, Eina_Bool global) { - Eolian_Variable *def = push_var(ls); + Eolian_Variable *def = calloc(1, sizeof(Eolian_Variable)); Eina_Bool has_extern = EINA_FALSE; Eina_Strbuf *buf; + ls->tmp.var = def; eo_lexer_get(ls); if (ls->t.kw == KW_at_extern) { @@ -1910,7 +1897,7 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot) case KW_var: { database_var_add(parse_variable(ls, ls->t.kw == KW_var)); - pop_var(ls); + ls->tmp.var = NULL; break; } case KW_struct: -- 2.7.4