q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2343e6cc54e76f84bd327c3283d4bb4abf5c9af4
commit 2343e6cc54e76f84bd327c3283d4bb4abf5c9af4 Author: Daniel Kolesa <[email protected]> Date: Thu Dec 7 18:54:00 2017 +0100 eolian: make parsing/parsed files mapping non-global --- src/lib/eolian/eo_parser.c | 12 ++++++------ src/lib/eolian/eolian_database.c | 10 +++------- src/lib/eolian/eolian_database.h | 7 +++---- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 887bfd3fdf..a077245ab6 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -680,7 +680,7 @@ parse_struct_attrs(Eo_Lexer *ls, Eina_Bool is_enum, Eina_Bool *is_extern, static Eolian_Class * _parse_dep(Eo_Lexer *ls, const char *fname, const char *name) { - if (eina_hash_find(_parsingeos, fname)) + if (eina_hash_find(ls->state->parsing, fname)) return NULL; Eolian_Class *cl = NULL; if (!eo_parser_database_fill(ls->state, fname, EINA_FALSE, &cl) || !cl) @@ -2499,14 +2499,14 @@ end: Eina_Bool eo_parser_database_fill(Eolian *state, const char *filename, Eina_Bool eot, Eolian_Class **fcl) { - Eolian_Class *cl = eina_hash_find(_parsedeos, filename); + Eolian_Class *cl = eina_hash_find(state->parsed, filename); if (cl) { if (!eot && fcl) *fcl = cl; return EINA_TRUE; } - eina_hash_set(_parsingeos, filename, (void *)EINA_TRUE); + eina_hash_set(state->parsing, filename, (void *)EINA_TRUE); Eo_Lexer *ls = eo_lexer_new(state, filename); if (!ls) @@ -2544,14 +2544,14 @@ eo_parser_database_fill(Eolian *state, const char *filename, Eina_Bool eot, Eoli if (fcl) *fcl = cl; done: - eina_hash_set(_parsedeos, filename, eot ? (void *)EINA_TRUE : cl); - eina_hash_set(_parsingeos, filename, (void *)EINA_FALSE); + eina_hash_set(state->parsed, filename, eot ? (void *)EINA_TRUE : cl); + eina_hash_set(state->parsing, filename, (void *)EINA_FALSE); eo_lexer_free(ls); return EINA_TRUE; error: - eina_hash_set(_parsingeos, filename, (void *)EINA_FALSE); + eina_hash_set(state->parsing, filename, (void *)EINA_FALSE); eo_lexer_free(ls); return EINA_FALSE; } diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index 7f7c5a2788..8ebb974ae0 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -12,9 +12,6 @@ Eina_Hash *_decls = NULL; Eina_Hash *_declsf = NULL; Eina_Hash *_units = NULL; -Eina_Hash *_parsedeos = NULL; -Eina_Hash *_parsingeos = NULL; - Eina_Hash *_defereos = NULL; static Eolian_Unit *_cunit = NULL; @@ -34,8 +31,6 @@ database_init() eina_init(); _decls = eina_hash_stringshared_new(free); _declsf = eina_hash_stringshared_new(_hashlist_free); - _parsedeos = eina_hash_string_small_new(NULL); - _parsingeos = eina_hash_string_small_new(NULL); _defereos = eina_hash_string_small_new(NULL); _units = eina_hash_stringshared_new(EINA_FREE_CB(database_unit_del)); return ++_database_init_count; @@ -55,8 +50,6 @@ database_shutdown() { eina_hash_free(_decls ); _decls = NULL; eina_hash_free(_declsf ); _declsf = NULL; - eina_hash_free(_parsedeos ); _parsedeos = NULL; - eina_hash_free(_parsingeos); _parsingeos = NULL; eina_hash_free(_defereos ); _defereos = NULL; eina_hash_free(_units ); _units = NULL; eina_shutdown(); @@ -608,6 +601,9 @@ eolian_new(void) state->filenames_eo = eina_hash_string_small_new(free); state->filenames_eot = eina_hash_string_small_new(free); + state->parsed = eina_hash_string_small_new(NULL); + state->parsing = eina_hash_string_small_new(NULL); + state->classes_f = eina_hash_stringshared_new(NULL); state->aliases_f = eina_hash_stringshared_new(_hashlist_free); state->structs_f = eina_hash_stringshared_new(_hashlist_free); diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index c59e6e69bd..eaf55f801a 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -37,10 +37,6 @@ extern Eina_Hash *_declsf; extern Eina_Hash *_units; -/* holds parsed/currently parsing eot files to keep track */ -extern Eina_Hash *_parsedeos; -extern Eina_Hash *_parsingeos; - /* for deferred dependency parsing */ extern Eina_Hash *_defereos; @@ -64,6 +60,9 @@ struct _Eolian Eina_Hash *filenames_eo; /* filename to full path mapping */ Eina_Hash *filenames_eot; + Eina_Hash *parsing; + Eina_Hash *parsed; + Eina_Hash *classes_f; Eina_Hash *aliases_f; Eina_Hash *structs_f; --
