q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=653cf6bac37f6d74bd18d1088a7fb2ce6d661bc2

commit 653cf6bac37f6d74bd18d1088a7fb2ce6d661bc2
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Thu May 18 16:31:03 2017 +0200

    eolian: make by-name variable lookups take unit
---
 src/bindings/luajit/eolian.lua    | 12 ++++++------
 src/lib/eolian/Eolian.h           |  6 ++++--
 src/lib/eolian/database_expr.c    |  3 ++-
 src/lib/eolian/database_var_api.c |  6 ++++--
 src/tests/eolian/eolian_parsing.c | 23 +++++++++++++----------
 5 files changed, 29 insertions(+), 21 deletions(-)

diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index d98e047c19..8177aa5f78 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -367,8 +367,8 @@ ffi.cdef [[
     Eolian_Unary_Operator eolian_expression_unary_operator_get(const 
Eolian_Expression *expr);
     const Eolian_Expression *eolian_expression_unary_expression_get(const 
Eolian_Expression *expr);
     Eolian_Value_t eolian_expression_value_get(const Eolian_Expression *expr);
-    const Eolian_Variable *eolian_variable_global_get_by_name(const char 
*name);
-    const Eolian_Variable *eolian_variable_constant_get_by_name(const char 
*name);
+    const Eolian_Variable *eolian_variable_global_get_by_name(const 
Eolian_Unit *unit, const char *name);
+    const Eolian_Variable *eolian_variable_constant_get_by_name(const 
Eolian_Unit *unit, const char *name);
     Eina_Iterator *eolian_variable_globals_get_by_file(const char *fname);
     Eina_Iterator *eolian_variable_constants_get_by_file(const char *fname);
     Eina_Iterator *eolian_variable_all_constants_get(void);
@@ -1362,14 +1362,14 @@ M.Expression = ffi.metatype("Eolian_Expression", {
     }
 })
 
-M.variable_global_get_by_name = function(name)
-    local v = eolian.eolian_variable_global_get_by_name(name)
+M.variable_global_get_by_name = function(unit, name)
+    local v = eolian.eolian_variable_global_get_by_name(unit, name)
     if v == nil then return nil end
     return v
 end
 
-M.variable_constant_get_by_name = function(name)
-    local v = eolian.eolian_variable_constant_get_by_name(name)
+M.variable_constant_get_by_name = function(unit, name)
+    local v = eolian.eolian_variable_constant_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 630b0b487f..08592a8b39 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -2055,22 +2055,24 @@ EAPI Eolian_Value eolian_expression_value_get(const 
Eolian_Expression *expr);
 /*
  * @brief Get a global variable by name. Supports namespaces.
  *
+ * @param[in] unit the unit to look in
  * @param[in] name the name of the variable
  * @return the variable handle or NULL
  *
  * @ingroup Eolian
  */
-EAPI const Eolian_Variable *eolian_variable_global_get_by_name(const char 
*name);
+EAPI const Eolian_Variable *eolian_variable_global_get_by_name(const 
Eolian_Unit *unit, const char *name);
 
 /*
  * @brief Get a constant variable by name. Supports namespaces.
  *
+ * @param[in] unit the unit to look in
  * @param[in] name the name of the variable
  * @return the variable handle or NULL
  *
  * @ingroup Eolian
  */
-EAPI const Eolian_Variable *eolian_variable_constant_get_by_name(const char 
*name);
+EAPI const Eolian_Variable *eolian_variable_constant_get_by_name(const 
Eolian_Unit *unit, const char *name);
 
 /*
  * @brief Get an iterator to all global variables contained in a file.
diff --git a/src/lib/eolian/database_expr.c b/src/lib/eolian/database_expr.c
index 45f89a9530..5717f8bffd 100644
--- a/src/lib/eolian/database_expr.c
+++ b/src/lib/eolian/database_expr.c
@@ -493,8 +493,9 @@ eval_exp(const Eolian_Expression *expr, 
Eolian_Expression_Mask mask,
         }
       case EOLIAN_EXPR_NAME:
         {
+           /* FIXME: pass unit properly */
            const Eolian_Variable *var = eolian_variable_constant_get_by_name
-             (expr->value.s);
+             (NULL, expr->value.s);
            const Eolian_Expression *exp = NULL;
 
            if (!var)
diff --git a/src/lib/eolian/database_var_api.c 
b/src/lib/eolian/database_var_api.c
index 0e1af2dbe1..4842ec5959 100644
--- a/src/lib/eolian/database_var_api.c
+++ b/src/lib/eolian/database_var_api.c
@@ -6,7 +6,8 @@
 #include "eolian_database.h"
 
 EAPI const Eolian_Variable *
-eolian_variable_global_get_by_name(const char *name)
+eolian_variable_global_get_by_name(const Eolian_Unit *unit EINA_UNUSED,
+                                   const char *name)
 {
    if (!_globals) return NULL;
    Eina_Stringshare *shr = eina_stringshare_add(name);
@@ -16,7 +17,8 @@ eolian_variable_global_get_by_name(const char *name)
 }
 
 EAPI const Eolian_Variable *
-eolian_variable_constant_get_by_name(const char *name)
+eolian_variable_constant_get_by_name(const Eolian_Unit *unit EINA_UNUSED,
+                                     const char *name)
 {
    if (!_constants) 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 9c9ac54ab7..4d80a0ba4e 100644
--- a/src/tests/eolian/eolian_parsing.c
+++ b/src/tests/eolian/eolian_parsing.c
@@ -756,20 +756,21 @@ START_TEST(eolian_var)
    const Eolian_Expression *exp = NULL;
    const Eolian_Type *type = NULL;
    const Eolian_Class *class;
+   const Eolian_Unit *unit;
    Eolian_Value v;
    const char *name;
 
    eolian_init();
 
    /* Parsing */
-   fail_if(!eolian_file_parse(PACKAGE_DATA_DIR"/data/var.eo"));
+   fail_if(!(unit = eolian_file_parse(PACKAGE_DATA_DIR"/data/var.eo")));
 
    /* Check that the class Dummy is still readable */
    fail_if(!(class = eolian_class_get_by_name("Var")));
    fail_if(!eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD));
 
    /* regular constant */
-   fail_if(!(var = eolian_variable_constant_get_by_name("Foo")));
+   fail_if(!(var = eolian_variable_constant_get_by_name(unit, "Foo")));
    fail_if(eolian_variable_type_get(var) != EOLIAN_VAR_CONSTANT);
    fail_if(eolian_variable_is_extern(var));
    fail_if(!(type = eolian_variable_base_type_get(var)));
@@ -781,7 +782,7 @@ START_TEST(eolian_var)
    fail_if(v.value.i != 5);
 
    /* regular global */
-   fail_if(!(var = eolian_variable_global_get_by_name("Bar")));
+   fail_if(!(var = eolian_variable_global_get_by_name(unit, "Bar")));
    fail_if(eolian_variable_type_get(var) != EOLIAN_VAR_GLOBAL);
    fail_if(eolian_variable_is_extern(var));
    fail_if(!(type = eolian_variable_base_type_get(var)));
@@ -793,7 +794,7 @@ START_TEST(eolian_var)
    fail_if(((int)v.value.f) != 10);
 
    /* no-value global */
-   fail_if(!(var = eolian_variable_global_get_by_name("Baz")));
+   fail_if(!(var = eolian_variable_global_get_by_name(unit, "Baz")));
    fail_if(eolian_variable_type_get(var) != EOLIAN_VAR_GLOBAL);
    fail_if(eolian_variable_is_extern(var));
    fail_if(!(type = eolian_variable_base_type_get(var)));
@@ -802,7 +803,7 @@ START_TEST(eolian_var)
    fail_if(eolian_variable_value_get(var));
 
    /* extern global  */
-   fail_if(!(var = eolian_variable_global_get_by_name("Bah")));
+   fail_if(!(var = eolian_variable_global_get_by_name(unit, "Bah")));
    fail_if(eolian_variable_type_get(var) != EOLIAN_VAR_GLOBAL);
    fail_if(!eolian_variable_is_extern(var));
    fail_if(!(type = eolian_variable_base_type_get(var)));
@@ -822,6 +823,7 @@ START_TEST(eolian_enum)
    const Eolian_Type *type = NULL;
    const Eolian_Class *class;
    const Eolian_Expression *exp;
+   const Eolian_Unit *unit;
    Eina_Stringshare *cname;
    const char *name;
    Eolian_Value v;
@@ -829,7 +831,7 @@ START_TEST(eolian_enum)
    eolian_init();
 
    /* Parsing */
-   fail_if(!eolian_file_parse(PACKAGE_DATA_DIR"/data/enum.eo"));
+   fail_if(!(unit = eolian_file_parse(PACKAGE_DATA_DIR"/data/enum.eo")));
 
    /* Check that the class Dummy is still readable */
    fail_if(!(class = eolian_class_get_by_name("Enum")));
@@ -892,7 +894,7 @@ START_TEST(eolian_enum)
    fail_if(strcmp(cname, "NAME_SPACED_PANTS"));
    eina_stringshare_del(cname);
 
-   fail_if(!(var = eolian_variable_constant_get_by_name("Bah")));
+   fail_if(!(var = eolian_variable_constant_get_by_name(unit, "Bah")));
    fail_if(eolian_variable_type_get(var) != EOLIAN_VAR_CONSTANT);
    fail_if(eolian_variable_is_extern(var));
    fail_if(!(type = eolian_variable_base_type_get(var)));
@@ -903,7 +905,7 @@ START_TEST(eolian_enum)
    fail_if(v.type != EOLIAN_EXPR_INT);
    fail_if(v.value.i != (1 << 0));
 
-   fail_if(!(var = eolian_variable_constant_get_by_name("Pants")));
+   fail_if(!(var = eolian_variable_constant_get_by_name(unit, "Pants")));
    fail_if(eolian_variable_type_get(var) != EOLIAN_VAR_CONSTANT);
    fail_if(!(exp = eolian_variable_value_get(var)));
    v = eolian_expression_eval(exp, EOLIAN_MASK_ALL);
@@ -1136,13 +1138,14 @@ START_TEST(eolian_docs)
    const Eolian_Function_Parameter *par;
    const Eolian_Struct_Type_Field *sfl;
    const Eolian_Enum_Type_Field *efl;
+   const Eolian_Unit *unit;
    Eina_Iterator *itr;
 
    eolian_init();
 
    fail_if(!eolian_directory_scan(PACKAGE_DATA_DIR"/data"));
 
-   fail_if(!eolian_file_parse(PACKAGE_DATA_DIR"/data/docs.eo"));
+   fail_if(!(unit = eolian_file_parse(PACKAGE_DATA_DIR"/data/docs.eo")));
 
    fail_if(!(tdl = eolian_typedecl_struct_get_by_name("Foo")));
    fail_if(!(doc = eolian_typedecl_documentation_get(tdl)));
@@ -1277,7 +1280,7 @@ START_TEST(eolian_docs)
    fail_if(strcmp(eolian_documentation_since_get(doc),
                   "2.0"));
 
-   fail_if(!(var = eolian_variable_global_get_by_name("pants")));
+   fail_if(!(var = eolian_variable_global_get_by_name(unit, "pants")));
    fail_if(!(doc = eolian_variable_documentation_get(var)));
    fail_if(strcmp(eolian_documentation_summary_get(doc),
                   "Docs for var."));

-- 


Reply via email to