eolian: move global vars to temporary state

This commit is contained in:
Daniel Kolesa 2017-12-06 14:15:07 +01:00
parent 7491f9353f
commit 21db23f702
5 changed files with 12 additions and 18 deletions

View File

@ -540,7 +540,7 @@ database_validate(const Eolian_Unit *src)
if (!rt.succ)
return EINA_FALSE;
eina_hash_foreach(_globals, (Eina_Hash_Foreach)_var_map_cb, &rt);
eina_hash_foreach(_state->unit.globals, (Eina_Hash_Foreach)_var_map_cb, &rt);
if (!rt.succ)
return EINA_FALSE;

View File

@ -25,9 +25,9 @@ database_var_del(Eolian_Variable *var)
static void
database_var_global_add(Eolian_Variable *var)
{
eina_hash_set(_globals, var->full_name, var);
eina_hash_set(_globalsf, var->base.file, eina_list_append
((Eina_List*)eina_hash_find(_globalsf, var->base.file), var));
eina_hash_set(_state->unit.globals, var->full_name, var);
eina_hash_set(_state->globals_f, var->base.file, eina_list_append
((Eina_List*)eina_hash_find(_state->globals_f, var->base.file), var));
database_decl_add(var->full_name, EOLIAN_DECL_VAR, var->base.file, var);
}

View File

@ -9,9 +9,9 @@ EAPI const Eolian_Variable *
eolian_variable_global_get_by_name(const Eolian_Unit *unit EINA_UNUSED,
const char *name)
{
if (!_globals) return NULL;
if (!_state) return NULL;
Eina_Stringshare *shr = eina_stringshare_add(name);
Eolian_Variable *v = eina_hash_find(_globals, shr);
Eolian_Variable *v = eina_hash_find(_state->unit.globals, shr);
eina_stringshare_del(shr);
return v;
}
@ -31,9 +31,9 @@ EAPI Eina_Iterator *
eolian_variable_globals_get_by_file(const Eolian_Unit *unit EINA_UNUSED,
const char *fname)
{
if (!_globalsf) return NULL;
if (!_state) return NULL;
Eina_Stringshare *shr = eina_stringshare_add(fname);
Eina_List *l = eina_hash_find(_globalsf, shr);
Eina_List *l = eina_hash_find(_state->globals_f, shr);
eina_stringshare_del(shr);
if (!l) return NULL;
return eina_list_iterator_new(l);
@ -60,7 +60,7 @@ eolian_variable_all_constants_get(const Eolian_Unit *unit EINA_UNUSED)
EAPI Eina_Iterator *
eolian_variable_all_globals_get(const Eolian_Unit *unit EINA_UNUSED)
{
return (_globals ? eina_hash_iterator_data_new(_globals) : NULL);
return (_state ? eina_hash_iterator_data_new(_state->unit.globals) : NULL);
}
EAPI Eolian_Variable_Type

View File

@ -8,9 +8,7 @@
#include "eolian_database.h"
#include "eolian_priv.h"
Eina_Hash *_globals = NULL;
Eina_Hash *_constants = NULL;
Eina_Hash *_globalsf = NULL;
Eina_Hash *_constantsf = NULL;
Eina_Hash *_filenames = NULL;
Eina_Hash *_tfilenames = NULL;
@ -40,9 +38,7 @@ database_init()
{
if (_database_init_count > 0) return ++_database_init_count;
eina_init();
_globals = eina_hash_stringshared_new(EINA_FREE_CB(database_var_del));
_constants = eina_hash_stringshared_new(EINA_FREE_CB(database_var_del));
_globalsf = eina_hash_stringshared_new(_hashlist_free);
_constantsf = eina_hash_stringshared_new(_hashlist_free);
_filenames = eina_hash_string_small_new(free);
_tfilenames = eina_hash_string_small_new(free);
@ -69,9 +65,7 @@ database_shutdown()
if (_database_init_count == 0)
{
eolian_free(_state); _state = NULL;
eina_hash_free(_globals ); _globals = NULL;
eina_hash_free(_constants ); _constants = NULL;
eina_hash_free(_globalsf ); _globalsf = NULL;
eina_hash_free(_constantsf); _constantsf = NULL;
eina_hash_free(_filenames ); _filenames = NULL;
eina_hash_free(_tfilenames); _tfilenames = NULL;
@ -628,7 +622,8 @@ eolian_new(void)
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);
state->enums_f = eina_hash_stringshared_new(_hashlist_free);
state->enums_f = eina_hash_stringshared_new(_hashlist_free);
state->globals_f = eina_hash_stringshared_new(_hashlist_free);
return state;
}

View File

@ -31,9 +31,7 @@ extern Eina_Prefix *_eolian_prefix;
#endif
#define DBG(...) EINA_LOG_DOM_DBG(_eolian_log_dom, __VA_ARGS__)
extern Eina_Hash *_globals;
extern Eina_Hash *_constants;
extern Eina_Hash *_globalsf;
extern Eina_Hash *_constantsf;
extern Eina_Hash *_filenames; /* Hash: filename without extension -> full path */
extern Eina_Hash *_tfilenames;
@ -74,6 +72,7 @@ struct _Eolian
Eina_Hash *aliases_f;
Eina_Hash *structs_f;
Eina_Hash *enums_f;
Eina_Hash *globals_f;
};
typedef struct _Eolian_Object