forked from enlightenment/efl
eolian: add API to get file name of a unit
This commit is contained in:
parent
7d001fd93f
commit
436f2d3363
|
@ -570,6 +570,18 @@ EAPI Eina_Iterator *eolian_state_units_get(const Eolian_State *state);
|
|||
*/
|
||||
EAPI Eina_Iterator *eolian_unit_children_get(const Eolian_Unit *unit);
|
||||
|
||||
/*
|
||||
* @brief Get the file name a unit is associated with.
|
||||
*
|
||||
* This will be `NULL` if not associated with a file (like the master unit
|
||||
* within `Eolian_State`).
|
||||
*
|
||||
* @param[in] unit The unit.
|
||||
*
|
||||
* @ingroup Eolian
|
||||
*/
|
||||
EAPI const char *eolian_unit_file_get(const Eolian_Unit *unit);
|
||||
|
||||
/*
|
||||
* @brief Parse the given .eo or .eot file and fill the database.
|
||||
*
|
||||
|
|
|
@ -1038,7 +1038,7 @@ eo_lexer_set_input(Eo_Lexer *ls, Eolian_State *state, const char *source)
|
|||
|
||||
Eolian_Unit *ncunit = calloc(1, sizeof(Eolian_Unit));
|
||||
ls->unit = ncunit;
|
||||
database_unit_init(state, ncunit);
|
||||
database_unit_init(state, ncunit, ls->filename);
|
||||
eina_hash_add(state->units, ls->filename, ncunit);
|
||||
|
||||
if (ls->current != 0xEF)
|
||||
|
|
|
@ -514,8 +514,9 @@ eolian_doc_token_ref_get(const Eolian_Unit *unit, const Eolian_Doc_Token *tok,
|
|||
}
|
||||
|
||||
void
|
||||
database_unit_init(Eolian_State *state, Eolian_Unit *unit)
|
||||
database_unit_init(Eolian_State *state, Eolian_Unit *unit, const char *file)
|
||||
{
|
||||
unit->file = eina_stringshare_ref(file);
|
||||
unit->state = state;
|
||||
|
||||
unit->children = eina_hash_stringshared_new(NULL);
|
||||
|
@ -534,6 +535,7 @@ database_unit_del(Eolian_Unit *unit)
|
|||
if (!unit)
|
||||
return;
|
||||
|
||||
eina_stringshare_del(unit->file);
|
||||
eina_hash_free(unit->classes);
|
||||
eina_hash_free(unit->globals);
|
||||
eina_hash_free(unit->constants);
|
||||
|
@ -556,7 +558,7 @@ eolian_state_new(void)
|
|||
if (!state)
|
||||
return NULL;
|
||||
|
||||
database_unit_init(state, &state->unit);
|
||||
database_unit_init(state, &state->unit, NULL);
|
||||
|
||||
state->filenames_eo = eina_hash_string_small_new(free);
|
||||
state->filenames_eot = eina_hash_string_small_new(free);
|
||||
|
@ -684,6 +686,13 @@ eolian_unit_children_get(const Eolian_Unit *unit)
|
|||
return eina_hash_iterator_data_new(unit->children);
|
||||
}
|
||||
|
||||
EAPI const char *
|
||||
eolian_unit_file_get(const Eolian_Unit *unit)
|
||||
{
|
||||
if (!unit) return NULL;
|
||||
return unit->file;
|
||||
}
|
||||
|
||||
char *
|
||||
database_class_to_filename(const char *cname)
|
||||
{
|
||||
|
|
|
@ -33,6 +33,7 @@ extern Eina_Prefix *_eolian_prefix;
|
|||
|
||||
struct _Eolian_Unit
|
||||
{
|
||||
const char *file;
|
||||
Eolian_State *state;
|
||||
Eina_Hash *children;
|
||||
Eina_Hash *classes;
|
||||
|
@ -346,7 +347,7 @@ void database_decl_add(Eolian_Unit *unit, Eina_Stringshare *name,
|
|||
|
||||
void database_doc_del(Eolian_Documentation *doc);
|
||||
|
||||
void database_unit_init(Eolian_State *state, Eolian_Unit *unit);
|
||||
void database_unit_init(Eolian_State *state, Eolian_Unit *unit, const char *file);
|
||||
void database_unit_del(Eolian_Unit *unit);
|
||||
|
||||
/* types */
|
||||
|
|
Loading…
Reference in New Issue