summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2017-05-25 14:56:44 +0200
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2017-05-30 17:15:54 +0200
commit52a0255e38fa483440e9a31e020adff6590ad1f8 (patch)
tree1e0944aa73f2c8f916215030dfeb261b31b3e34c
parent6d0ee5d2df1b0a479465c82c41a87a9bfc2007e6 (diff)
downloadefl-52a0255e38fa483440e9a31e020adff6590ad1f8.tar.gz
eolian: pass unit to alias get by name
-rw-r--r--src/bindings/luajit/eolian.lua6
-rw-r--r--src/lib/eolian/Eolian.h3
-rw-r--r--src/lib/eolian/database_expr.c3
-rw-r--r--src/lib/eolian/database_type_api.c3
-rw-r--r--src/tests/eolian/eolian_parsing.c22
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."));