q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=67bc32d9aced9f486d703db2ed883f5958a1a8fb
commit 67bc32d9aced9f486d703db2ed883f5958a1a8fb Author: Daniel Kolesa <d.kol...@osg.samsung.com> Date: Thu May 25 15:15:04 2017 +0200 eolian: pass unit to enum get by name --- src/bin/eolian/docs.c | 2 +- src/bindings/luajit/eolian.lua | 6 +++--- src/lib/eolian/Eolian.h | 3 ++- src/lib/eolian/database_expr.c | 3 ++- src/lib/eolian/database_type_api.c | 3 ++- src/lib/eolian/eolian_database.c | 3 ++- src/tests/eolian/eolian_parsing.c | 10 +++++----- 7 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/bin/eolian/docs.c b/src/bin/eolian/docs.c index d200c7f458..2a293697c0 100644 --- a/src/bin/eolian/docs.c +++ b/src/bin/eolian/docs.c @@ -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); diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index c1a0fe601d..f20deecbce 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -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 diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index 2e29dd9bc4..d5fb437a65 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -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. diff --git a/src/lib/eolian/database_expr.c b/src/lib/eolian/database_expr.c index 1cb252660f..f0510ddc00 100644 --- a/src/lib/eolian/database_expr.c +++ b/src/lib/eolian/database_expr.c @@ -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); diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c index b589cb40aa..2261fa7b90 100644 --- a/src/lib/eolian/database_type_api.c +++ b/src/lib/eolian/database_type_api.c @@ -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); diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index 5cc260ac86..8b1c1f0bbb 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -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); diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c index 3d1de47a7a..5f474016c7 100644 --- a/src/tests/eolian/eolian_parsing.c +++ b/src/tests/eolian/eolian_parsing.c @@ -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.")); --