From 52a0255e38fa483440e9a31e020adff6590ad1f8 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Thu, 25 May 2017 14:56:44 +0200 Subject: [PATCH] eolian: pass unit to alias get by name --- 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/tests/eolian/eolian_parsing.c | 22 +++++++++++----------- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index ea4b8ab6d1..d63210bef4 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -297,7 +297,7 @@ ffi.cdef [[ Eina_Bool eolian_class_ctor_enable_get(const Eolian_Class *klass); Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass); const char *eolian_class_c_get_function_name_get(const Eolian_Class *klass); - const Eolian_Typedecl *eolian_typedecl_alias_get_by_name(const char *name); + 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 char *name); const Eolian_Typedecl *eolian_typedecl_enum_get_by_name(const char *name); Eina_Iterator *eolian_typedecl_aliases_get_by_file(const char *fname); @@ -1142,8 +1142,8 @@ M.Class = ffi.metatype("Eolian_Class", { } }) -M.typedecl_alias_get_by_name = function(name) - local v = eolian.eolian_typedecl_alias_get_by_name(name) +M.typedecl_alias_get_by_name = function(unit, name) + local v = eolian.eolian_typedecl_alias_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 266abed438..7be3182de3 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -1370,12 +1370,13 @@ EAPI Eina_Stringshare *eolian_class_c_data_type_get(const Eolian_Class *klass); /* * @brief Get an alias type declaration by name. Supports namespaces. * + * @param[in] unit the unit to look in * @param[in] name the name of the alias * @return the alias type or NULL * * @ingroup Eolian */ -EAPI const Eolian_Typedecl *eolian_typedecl_alias_get_by_name(const char *name); +EAPI const Eolian_Typedecl *eolian_typedecl_alias_get_by_name(const Eolian_Unit *unit, const char *name); /* * @brief Get a struct declaration by name. Supports namespaces. diff --git a/src/lib/eolian/database_expr.c b/src/lib/eolian/database_expr.c index 5717f8bffd..1cb252660f 100644 --- a/src/lib/eolian/database_expr.c +++ b/src/lib/eolian/database_expr.c @@ -513,7 +513,8 @@ eval_exp(const Eolian_Expression *expr, Eolian_Expression_Mask mask, if (!(mask & EOLIAN_MASK_INT)) return expr_type_error(expr, EOLIAN_MASK_INT, mask); - etpd = eolian_typedecl_alias_get_by_name(fulln); + /* FIXME: pass unit properly */ + etpd = eolian_typedecl_alias_get_by_name(NULL, fulln); while (etpd && etpd->type == EOLIAN_TYPEDECL_ALIAS) { const Eolian_Type *etp = eolian_typedecl_base_type_get(etpd); diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c index 14a50b04c2..8d9a5d3612 100644 --- a/src/lib/eolian/database_type_api.c +++ b/src/lib/eolian/database_type_api.c @@ -7,7 +7,8 @@ #include "eo_lexer.h" EAPI const Eolian_Typedecl * -eolian_typedecl_alias_get_by_name(const char *name) +eolian_typedecl_alias_get_by_name(const Eolian_Unit *unit EINA_UNUSED, + const char *name) { if (!_aliases) return NULL; Eina_Stringshare *shr = eina_stringshare_add(name); diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c index d81da22fcb..64a89c2615 100644 --- a/src/tests/eolian/eolian_parsing.c +++ b/src/tests/eolian/eolian_parsing.c @@ -329,7 +329,7 @@ START_TEST(eolian_typedef) fail_if(!eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD)); /* Basic type */ - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Evas.Coord"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Evas.Coord"))); fail_if(eolian_typedecl_type_get(tdl) != EOLIAN_TYPEDECL_ALIAS); fail_if(!(type_name = eolian_typedecl_name_get(tdl))); fail_if(strcmp(type_name, "Coord")); @@ -348,12 +348,12 @@ START_TEST(eolian_typedef) fail_if(strcmp(file, "typedef.eo")); /* Lowest alias base */ - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Evas.Coord3"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Evas.Coord3"))); fail_if(!(type = eolian_typedecl_aliased_base_get(tdl))); fail_if(strcmp(eolian_type_name_get(type), "int")); /* Complex type */ - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("List_Objects"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "List_Objects"))); fail_if(!(type_name = eolian_typedecl_name_get(tdl))); fail_if(strcmp(type_name, "List_Objects")); fail_if(!(type = eolian_typedecl_base_type_get(tdl))); @@ -742,11 +742,11 @@ START_TEST(eolian_extern) fail_if(!eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD)); /* regular type */ - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Foo"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Foo"))); fail_if(eolian_typedecl_is_extern(tdl)); /* extern type */ - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Evas.Coord"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Evas.Coord"))); fail_if(!eolian_typedecl_is_extern(tdl)); /* regular struct */ @@ -986,9 +986,9 @@ START_TEST(eolian_free_func) fail_if(strcmp(eolian_typedecl_free_func_get(tdl), "test_free")); /* typedef */ - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Typedef1"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Typedef1"))); fail_if(eolian_typedecl_free_func_get(tdl)); - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Typedef2"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Typedef2"))); fail_if(strcmp(eolian_typedecl_free_func_get(tdl), "def_free")); /* opaque struct */ @@ -998,10 +998,10 @@ START_TEST(eolian_free_func) fail_if(strcmp(eolian_typedecl_free_func_get(tdl), "opaque_free")); /* pointer */ - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Pointer1"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Pointer1"))); fail_if(!(type = eolian_typedecl_base_type_get(tdl))); fail_if(eolian_type_free_func_get(type)); - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Pointer2"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Pointer2"))); fail_if(!(type = eolian_typedecl_base_type_get(tdl))); fail_if(strcmp(eolian_type_free_func_get(type), "ptr_free")); @@ -1071,7 +1071,7 @@ START_TEST(eolian_import) fail_if(!(unit = eolian_file_parse(PACKAGE_DATA_DIR"/data/import.eo"))); fail_if(!(class = eolian_class_get_by_name(unit, "Import"))); - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Imported"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Imported"))); fail_if(strcmp(eolian_typedecl_file_get(tdl), "import_types.eot")); fail_if(!(tdl = eolian_typedecl_struct_get_by_name("Imported_Struct"))); @@ -1287,7 +1287,7 @@ START_TEST(eolian_docs) "Docs for bar.")); fail_if(eolian_documentation_description_get(doc)); - fail_if(!(tdl = eolian_typedecl_alias_get_by_name("Alias"))); + fail_if(!(tdl = eolian_typedecl_alias_get_by_name(unit, "Alias"))); fail_if(!(doc = eolian_typedecl_documentation_get(tdl))); fail_if(strcmp(eolian_documentation_summary_get(doc), "Docs for typedef."));