From 5d1cd61c92b54291c59cba5c3f6a43fbe3a751ec Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Mon, 21 Jul 2014 11:42:05 +0100 Subject: [PATCH] eolian: put structs and typedefs right in the respective hashmaps without going through nodes --- src/lib/eolian/database_fill.c | 14 ++------------ src/lib/eolian/eo_lexer.c | 5 ----- src/lib/eolian/eo_lexer.h | 4 +--- src/lib/eolian/eo_parser.c | 4 ++-- 4 files changed, 5 insertions(+), 22 deletions(-) diff --git a/src/lib/eolian/database_fill.c b/src/lib/eolian/database_fill.c index f4c4493cbe..7c5129dc33 100644 --- a/src/lib/eolian/database_fill.c +++ b/src/lib/eolian/database_fill.c @@ -433,7 +433,7 @@ eo_parser_database_fill(const char *filename, Eina_Bool eot) return EINA_FALSE; } - if (eot) goto nodeloop; + if (eot) goto done; EINA_LIST_FOREACH(ls->nodes, k, nd) if (nd->type == NODE_CLASS) { @@ -448,7 +448,6 @@ eo_parser_database_fill(const char *filename, Eina_Bool eot) return EINA_FALSE; } -nodeloop: EINA_LIST_FOREACH(ls->nodes, k, nd) { switch (nd->type) @@ -457,21 +456,12 @@ nodeloop: if (!_db_fill_class(nd->def_class, filename)) goto error; break; - case NODE_TYPEDEF: - if (!database_type_add(nd->def_typedef)) - goto error; - nd->def_typedef = NULL; - break; - case NODE_STRUCT: - if (!database_struct_add(nd->def_struct)) - goto error; - nd->def_struct = NULL; - break; default: break; } } +done: eo_lexer_free(ls); return EINA_TRUE; diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c index 46a2078464..341d2c02aa 100644 --- a/src/lib/eolian/eo_lexer.c +++ b/src/lib/eolian/eo_lexer.c @@ -607,11 +607,6 @@ eo_lexer_free(Eo_Lexer *ls) case NODE_CLASS: eo_definitions_class_def_free(nd->def_class); break; - case NODE_TYPEDEF: - database_typedef_del(nd->def_typedef); - break; - case NODE_STRUCT: - database_type_del(nd->def_struct); default: break; } diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h index 260d5a29ab..c5ba47f52c 100644 --- a/src/lib/eolian/eo_lexer.h +++ b/src/lib/eolian/eo_lexer.h @@ -95,9 +95,7 @@ typedef struct _Eo_Token enum Nodes { - NODE_CLASS = 0, - NODE_TYPEDEF, - NODE_STRUCT + NODE_CLASS = 0 }; /* represents a node, aka a result of parsing - currently class, typedef diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 8c4a4f32a7..a5ba28dac1 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -268,7 +268,7 @@ parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool is_extern) } } check_match(ls, '}', '{', line, column); - if (name) append_node(ls, NODE_STRUCT, def); + if (name) database_struct_add(def); return def; } @@ -1060,7 +1060,7 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot) case KW_type: { parse_typedef(ls); - append_node(ls, NODE_TYPEDEF, ls->tmp.typedef_def); + database_type_add(ls->tmp.typedef_def); ls->tmp.typedef_def = NULL; break; }