eolian: pass unit to enum get by name

This commit is contained in:
Daniel Kolesa 2017-05-25 15:15:04 +02:00
parent 9c2dae3531
commit 67bc32d9ac
7 changed files with 17 additions and 13 deletions

View File

@ -53,7 +53,7 @@ _generate_ref(const Eolian_Unit *src, const char *refn, Eina_Strbuf *wbuf,
return;
}
tp = eolian_typedecl_enum_get_by_name(bname);
tp = eolian_typedecl_enum_get_by_name(src, bname);
if (tp)
{
const Eolian_Enum_Type_Field *efl = eolian_typedecl_enum_field_get(tp, sfx + 1);

View File

@ -299,7 +299,7 @@ ffi.cdef [[
const char *eolian_class_c_get_function_name_get(const Eolian_Class *klass);
const Eolian_Typedecl *eolian_typedecl_alias_get_by_name(const Eolian_Unit *unit, const char *name);
const Eolian_Typedecl *eolian_typedecl_struct_get_by_name(const Eolian_Unit *unit, const char *name);
const Eolian_Typedecl *eolian_typedecl_enum_get_by_name(const char *name);
const Eolian_Typedecl *eolian_typedecl_enum_get_by_name(const Eolian_Unit *unit, const char *name);
Eina_Iterator *eolian_typedecl_aliases_get_by_file(const char *fname);
Eina_Iterator *eolian_typedecl_structs_get_by_file(const char *fname);
Eina_Iterator *eolian_typedecl_enums_get_by_file(const char *fname);
@ -1154,8 +1154,8 @@ M.typedecl_struct_get_by_name = function(unit, name)
return v
end
M.typedecl_enum_get_by_name = function(name)
local v = eolian.eolian_typedecl_enum_get_by_name(name)
M.typedecl_enum_get_by_name = function(unit, name)
local v = eolian.eolian_typedecl_enum_get_by_name(unit, name)
if v == nil then return nil end
return v
end

View File

@ -1392,12 +1392,13 @@ EAPI const Eolian_Typedecl *eolian_typedecl_struct_get_by_name(const Eolian_Unit
/*
* @brief Get an enum declaration by name. Supports namespaces.
*
* @param[in] unit the unit to look in
* @param[in] name the name of the struct
* @return the struct or NULL
*
* @ingroup Eolian
*/
EAPI const Eolian_Typedecl *eolian_typedecl_enum_get_by_name(const char *name);
EAPI const Eolian_Typedecl *eolian_typedecl_enum_get_by_name(const Eolian_Unit *unit, const char *name);
/*
* @brief Get an iterator to all aliases contained in a file.

View File

@ -523,7 +523,8 @@ eval_exp(const Eolian_Expression *expr, Eolian_Expression_Mask mask,
etpd = eolian_type_typedecl_get(etp);
}
if (!etpd) etpd = eolian_typedecl_enum_get_by_name(fulln);
/* FIXME: pass unit properly */
if (!etpd) etpd = eolian_typedecl_enum_get_by_name(NULL, fulln);
if (!etpd || etpd->type != EOLIAN_TYPEDECL_ENUM)
{
free(fulln);

View File

@ -31,7 +31,8 @@ eolian_typedecl_struct_get_by_name(const Eolian_Unit *unit EINA_UNUSED,
}
EAPI const Eolian_Typedecl *
eolian_typedecl_enum_get_by_name(const char *name)
eolian_typedecl_enum_get_by_name(const Eolian_Unit *unit EINA_UNUSED,
const char *name)
{
if (!_enums) return NULL;
Eina_Stringshare *shr = eina_stringshare_add(name);

View File

@ -553,7 +553,8 @@ eolian_doc_token_ref_get(const Eolian_Doc_Token *tok, const void **data,
}
/* try an enum field */
tpd = eolian_typedecl_enum_get_by_name(name);
/* FIXME: pass unit properly */
tpd = eolian_typedecl_enum_get_by_name(NULL, name);
if (tpd)
{
const Eolian_Enum_Type_Field *fld = eolian_typedecl_enum_field_get(tpd, suffix);

View File

@ -848,7 +848,7 @@ START_TEST(eolian_enum)
fail_if(!(class = eolian_class_get_by_name(unit, "Enum")));
fail_if(!eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD));
fail_if(!(tdl = eolian_typedecl_enum_get_by_name("Foo")));
fail_if(!(tdl = eolian_typedecl_enum_get_by_name(unit, "Foo")));
fail_if(!(field = eolian_typedecl_enum_field_get(tdl, "first")));
fail_if(!(exp = eolian_typedecl_enum_field_value_get(field, EINA_FALSE)));
@ -865,7 +865,7 @@ START_TEST(eolian_enum)
fail_if(v.type != EOLIAN_EXPR_INT);
fail_if(v.value.i != 15);
fail_if(!(tdl = eolian_typedecl_enum_get_by_name("Bar")));
fail_if(!(tdl = eolian_typedecl_enum_get_by_name(unit, "Bar")));
fail_if(strcmp(eolian_typedecl_enum_legacy_prefix_get(tdl), "test"));
fail_if(!(field = eolian_typedecl_enum_field_get(tdl, "foo")));
@ -878,7 +878,7 @@ START_TEST(eolian_enum)
fail_if(strcmp(cname, "TEST_FOO"));
eina_stringshare_del(cname);
fail_if(!(tdl = eolian_typedecl_enum_get_by_name("Baz")));
fail_if(!(tdl = eolian_typedecl_enum_get_by_name(unit, "Baz")));
fail_if(!(field = eolian_typedecl_enum_field_get(tdl, "flag1")));
fail_if(!(exp = eolian_typedecl_enum_field_value_get(field, EINA_FALSE)));
@ -898,7 +898,7 @@ START_TEST(eolian_enum)
fail_if(v.type != EOLIAN_EXPR_INT);
fail_if(v.value.i != (1 << 2));
fail_if(!(tdl = eolian_typedecl_enum_get_by_name("Name.Spaced")));
fail_if(!(tdl = eolian_typedecl_enum_get_by_name(unit, "Name.Spaced")));
fail_if(!(field = eolian_typedecl_enum_field_get(tdl, "pants")));
cname = eolian_typedecl_enum_field_c_name_get(field);
@ -1265,7 +1265,7 @@ START_TEST(eolian_docs)
"Another field documentation."));
fail_if(eolian_documentation_description_get(doc));
fail_if(!(tdl = eolian_typedecl_enum_get_by_name("Bar")));
fail_if(!(tdl = eolian_typedecl_enum_get_by_name(unit, "Bar")));
fail_if(!(doc = eolian_typedecl_documentation_get(tdl)));
fail_if(strcmp(eolian_documentation_summary_get(doc),
"Docs for enum Bar."));