forked from enlightenment/efl
eolian: make parsing/parsed files mapping non-global
This commit is contained in:
parent
9d09d722b9
commit
2343e6cc54
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue