q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8428eaa66358de6cb96e6177eb3a9d9489847377
commit 8428eaa66358de6cb96e6177eb3a9d9489847377 Author: Daniel Kolesa <[email protected]> Date: Wed Dec 6 14:04:58 2017 +0100 eolian: store aliases in temporary state --- src/lib/eolian/database_class_api.c | 4 ++-- src/lib/eolian/database_type.c | 7 ++++--- src/lib/eolian/database_type_api.c | 10 +++++----- src/lib/eolian/database_validate.c | 2 +- src/lib/eolian/eolian_database.c | 7 +------ src/lib/eolian/eolian_database.h | 3 +-- 6 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/lib/eolian/database_class_api.c b/src/lib/eolian/database_class_api.c index 1cc2a2a679..da43d05e5b 100644 --- a/src/lib/eolian/database_class_api.c +++ b/src/lib/eolian/database_class_api.c @@ -35,7 +35,7 @@ EAPI const Eolian_Class * eolian_class_get_by_name(const Eolian_Unit *unit EINA_UNUSED, const char *class_name) { - if (!_state->unit.classes) return NULL; + if (!_state) return NULL; Eina_Stringshare *shr = eina_stringshare_add(class_name); Eolian_Class *cl = eina_hash_find(_state->unit.classes, shr); eina_stringshare_del(shr); @@ -46,7 +46,7 @@ EAPI const Eolian_Class * eolian_class_get_by_file(const Eolian_Unit *unit EINA_UNUSED, const char *file_name) { - if (!_state->classes_f) return NULL; + if (!_state) return NULL; Eina_Stringshare *shr = eina_stringshare_add(file_name); Eolian_Class *cl = eina_hash_find(_state->classes_f, shr); eina_stringshare_del(shr); diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c index c71a45452b..0519eb5e5c 100644 --- a/src/lib/eolian/database_type.c +++ b/src/lib/eolian/database_type.c @@ -43,9 +43,10 @@ database_typedecl_del(Eolian_Typedecl *tp) void database_type_add(Eolian_Typedecl *def) { - eina_hash_set(_aliases, def->full_name, def); - eina_hash_set(_aliasesf, def->base.file, eina_list_append - ((Eina_List*)eina_hash_find(_aliasesf, def->base.file), def)); + eina_hash_set(_state->unit.aliases, def->full_name, def); + eina_hash_set(_state->aliases_f, def->base.file, eina_list_append + ((Eina_List*)eina_hash_find(_state->aliases_f, def->base.file), + def)); database_decl_add(def->full_name, EOLIAN_DECL_ALIAS, def->base.file, def); } diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c index 5c0c241f6c..97b2468e20 100644 --- a/src/lib/eolian/database_type_api.c +++ b/src/lib/eolian/database_type_api.c @@ -10,9 +10,9 @@ EAPI const Eolian_Typedecl * eolian_typedecl_alias_get_by_name(const Eolian_Unit *unit EINA_UNUSED, const char *name) { - if (!_aliases) return NULL; + if (!_state) return NULL; Eina_Stringshare *shr = eina_stringshare_add(name); - Eolian_Typedecl *tp = eina_hash_find(_aliases, shr); + Eolian_Typedecl *tp = eina_hash_find(_state->unit.aliases, shr); eina_stringshare_del(shr); if (!tp) return NULL; return tp; @@ -46,9 +46,9 @@ EAPI Eina_Iterator * eolian_typedecl_aliases_get_by_file(const Eolian_Unit *unit EINA_UNUSED, const char *fname) { - if (!_aliasesf) return NULL; + if (!_state) return NULL; Eina_Stringshare *shr = eina_stringshare_add(fname); - Eina_List *l = eina_hash_find(_aliasesf, shr); + Eina_List *l = eina_hash_find(_state->aliases_f, shr); eina_stringshare_del(shr); if (!l) return NULL; return eina_list_iterator_new(l); @@ -81,7 +81,7 @@ eolian_typedecl_enums_get_by_file(const Eolian_Unit *unit EINA_UNUSED, EAPI Eina_Iterator * eolian_typedecl_all_aliases_get(const Eolian_Unit *unit EINA_UNUSED) { - return (_aliases ? eina_hash_iterator_data_new(_aliases) : NULL); + return (_state ? eina_hash_iterator_data_new(_state->unit.aliases) : NULL); } EAPI Eina_Iterator * diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c index 0e60aeb50c..ff2d6a9415 100644 --- a/src/lib/eolian/database_validate.c +++ b/src/lib/eolian/database_validate.c @@ -528,7 +528,7 @@ database_validate(const Eolian_Unit *src) Cb_Ret rt = { src, EINA_TRUE }; - eina_hash_foreach(_aliases, (Eina_Hash_Foreach)_typedecl_map_cb, &rt); + eina_hash_foreach(_state->unit.aliases, (Eina_Hash_Foreach)_typedecl_map_cb, &rt); if (!rt.succ) return EINA_FALSE; diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index cae2de4dae..f6dae686a3 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -8,12 +8,10 @@ #include "eolian_database.h" #include "eolian_priv.h" -Eina_Hash *_aliases = NULL; Eina_Hash *_structs = NULL; Eina_Hash *_enums = NULL; Eina_Hash *_globals = NULL; Eina_Hash *_constants = NULL; -Eina_Hash *_aliasesf = NULL; Eina_Hash *_structsf = NULL; Eina_Hash *_enumsf = NULL; Eina_Hash *_globalsf = NULL; @@ -46,12 +44,10 @@ database_init() { if (_database_init_count > 0) return ++_database_init_count; eina_init(); - _aliases = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del)); _structs = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del)); _enums = eina_hash_stringshared_new(EINA_FREE_CB(database_typedecl_del)); _globals = eina_hash_stringshared_new(EINA_FREE_CB(database_var_del)); _constants = eina_hash_stringshared_new(EINA_FREE_CB(database_var_del)); - _aliasesf = eina_hash_stringshared_new(_hashlist_free); _structsf = eina_hash_stringshared_new(_hashlist_free); _enumsf = eina_hash_stringshared_new(_hashlist_free); _globalsf = eina_hash_stringshared_new(_hashlist_free); @@ -81,12 +77,10 @@ database_shutdown() if (_database_init_count == 0) { eolian_free(_state); _state = NULL; - eina_hash_free(_aliases ); _aliases = NULL; eina_hash_free(_structs ); _structs = NULL; eina_hash_free(_enums ); _enums = NULL; eina_hash_free(_globals ); _globals = NULL; eina_hash_free(_constants ); _constants = NULL; - eina_hash_free(_aliasesf ); _aliasesf = NULL; eina_hash_free(_structsf ); _structsf = NULL; eina_hash_free(_enumsf ); _enumsf = NULL; eina_hash_free(_globalsf ); _globalsf = NULL; @@ -644,6 +638,7 @@ eolian_new(void) database_unit_init(&state->unit, NULL); state->classes_f = eina_hash_stringshared_new(NULL); + state->aliases_f = eina_hash_stringshared_new(_hashlist_free); return state; } diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index e2d1ee936b..7e9c26b80e 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -31,12 +31,10 @@ extern Eina_Prefix *_eolian_prefix; #endif #define DBG(...) EINA_LOG_DOM_DBG(_eolian_log_dom, __VA_ARGS__) -extern Eina_Hash *_aliases; extern Eina_Hash *_structs; extern Eina_Hash *_enums; extern Eina_Hash *_globals; extern Eina_Hash *_constants; -extern Eina_Hash *_aliasesf; extern Eina_Hash *_structsf; extern Eina_Hash *_enumsf; extern Eina_Hash *_globalsf; @@ -77,6 +75,7 @@ struct _Eolian Eolian_Unit unit; Eina_Hash *classes_f; + Eina_Hash *aliases_f; }; typedef struct _Eolian_Object --
