q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6751f011c1c621c67b671baa4d63e887af374bd4
commit 6751f011c1c621c67b671baa4d63e887af374bd4 Author: Daniel Kolesa <[email protected]> Date: Wed Sep 4 18:00:58 2019 +0200 eolian: remove the expression eval_type API This is unnecessary because for all contexts where type is relevant the validator already makes sure the type and expression match correctly, so you don't ever need to re-validate it. If you are doing a generic case and are not sure, just use MASK_ALL. --- src/bin/eolian/sources.c | 2 +- src/bin/eolian/types.c | 4 ++-- src/bindings/luajit/eolian.lua | 7 ------- src/lib/eolian/Eolian.h | 14 -------------- src/lib/eolian/database_expr_api.c | 10 ---------- src/lib/eolian_cxx/grammar/klass_def.hpp | 2 +- src/tests/eolian/eolian_parsing.c | 4 ++-- 7 files changed, 6 insertions(+), 37 deletions(-) diff --git a/src/bin/eolian/sources.c b/src/bin/eolian/sources.c index 94078fd5ed..2d2db389f4 100644 --- a/src/bin/eolian/sources.c +++ b/src/bin/eolian/sources.c @@ -107,7 +107,7 @@ _append_defval(Eina_Strbuf *buf, const Eolian_Expression *exp, const Eolian_Type { if (exp) { - Eolian_Value val = eolian_expression_eval_type(exp, tp); + Eolian_Value val = eolian_expression_eval(exp, EOLIAN_MASK_ALL); Eina_Stringshare *lit = eolian_expression_value_to_literal(&val); if (lit) { diff --git a/src/bin/eolian/types.c b/src/bin/eolian/types.c index b55a89bdfd..d45d1ba81b 100644 --- a/src/bin/eolian/types.c +++ b/src/bin/eolian/types.c @@ -191,7 +191,7 @@ _var_generate(const Eolian_State *state, const Eolian_Variable *vr) eina_strbuf_prepend_printf(buf, "#ifndef %s\n", fn); eina_strbuf_append_printf(buf, "#define %s ", fn); const Eolian_Expression *vv = eolian_variable_value_get(vr); - Eolian_Value val = eolian_expression_eval_type(vv, vt); + Eolian_Value val = eolian_expression_eval(vv, EOLIAN_MASK_ALL); Eina_Stringshare *lit = eolian_expression_value_to_literal(&val); eina_strbuf_append(buf, lit); Eina_Stringshare *exp = eolian_expression_serialize(vv); @@ -397,7 +397,7 @@ _source_gen_var(Eina_Strbuf *buf, const Eolian_Variable *vr) eina_stringshare_del(ct); free(fn); - Eolian_Value val = eolian_expression_eval_type(vv, vt); + Eolian_Value val = eolian_expression_eval(vv, EOLIAN_MASK_ALL); Eina_Stringshare *lit = eolian_expression_value_to_literal(&val); eina_strbuf_append(buf, lit); eina_strbuf_append_char(buf, ';'); diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index 88b6f96eb3..a848d029c1 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -460,7 +460,6 @@ ffi.cdef [[ const Eolian_Function *eolian_typedecl_function_pointer_get(const Eolian_Typedecl *tp); Eolian_Value_t eolian_expression_eval(const Eolian_Expression *expr, Eolian_Expression_Mask m); - Eolian_Value_t eolian_expression_eval_type(const Eolian_Expression *expr, const Eolian_Type *type); const char *eolian_expression_value_to_literal(const Eolian_Value *v); const char *eolian_expression_serialize(const Eolian_Expression *expr); Eolian_Expression_Type eolian_expression_type_get(const Eolian_Expression *expr); @@ -1711,12 +1710,6 @@ M.Expression = ffi.metatype("Eolian_Expression", { return ffi.cast("Eolian_Value*", v) end, - eval_type = function(self, tp) - local v = eolian.eolian_expression_eval_type(self, tp) - if v == nil then return nil end - return ffi.cast("Eolian_Value*", v) - end, - serialize = function(self) local v = eolian.eolian_expression_serialize(self) if v == nil then return nil end diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index cee793f0d9..78be1ac97f 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -3077,20 +3077,6 @@ eolian_type_namespaces_get(const Eolian_Type *tp) */ EAPI Eolian_Value eolian_expression_eval(const Eolian_Expression *expr, Eolian_Expression_Mask m); -/* - * @brief Evaluate an Eolian expression given a type instead of a mask. - * - * @param[in] expr the expression. - * @param[in] type the type the expression is assigned to. - * @return the value, its type is set to EOLIAN_EXPR_UNKNOWN on error. - * - * The mask is automatically decided from the given type, allowing only values - * that can be assigned to that type. - * - * @ingroup Eolian - */ -EAPI Eolian_Value eolian_expression_eval_type(const Eolian_Expression *expr, const Eolian_Type *type); - /* * @brief Convert the result of expression evaluation to a literal as in how * it would appear in C (e.g. strings are quoted and escaped). diff --git a/src/lib/eolian/database_expr_api.c b/src/lib/eolian/database_expr_api.c index 92f5b915aa..6aaa1bb9be 100644 --- a/src/lib/eolian/database_expr_api.c +++ b/src/lib/eolian/database_expr_api.c @@ -15,16 +15,6 @@ eolian_expression_eval(const Eolian_Expression *expr, Eolian_Expression_Mask m) return database_expr_eval(NULL, (Eolian_Expression *)expr, m, NULL, NULL); } -EAPI Eolian_Value -eolian_expression_eval_type(const Eolian_Expression *expr, - const Eolian_Type *type) -{ - Eolian_Value err; - err.type = EOLIAN_EXPR_UNKNOWN; - EINA_SAFETY_ON_NULL_RETURN_VAL(expr, err); - return database_expr_eval_type(NULL, (Eolian_Expression *)expr, type, NULL, NULL); -} - static void _append_char_escaped(Eina_Strbuf *buf, char c) { diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp b/src/lib/eolian_cxx/grammar/klass_def.hpp index 74375159a0..b451ed2d6b 100644 --- a/src/lib/eolian_cxx/grammar/klass_def.hpp +++ b/src/lib/eolian_cxx/grammar/klass_def.hpp @@ -1015,7 +1015,7 @@ struct variable_def if (!expr) throw std::runtime_error("Could not get constant variable value expression"); - this->expression_value = ::eolian_expression_eval_type(expr, ::eolian_variable_base_type_get(variable)); + this->expression_value = ::eolian_expression_eval(expr, ::EOLIAN_MASK_ALL); } } }; diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c index c35d10b1a7..60d35150dc 100644 --- a/src/tests/eolian/eolian_parsing.c +++ b/src/tests/eolian/eolian_parsing.c @@ -800,7 +800,7 @@ EFL_START_TEST(eolian_var) fail_if(!(name = eolian_type_short_name_get(type))); fail_if(strcmp(name, "int")); fail_if(!(exp = eolian_variable_value_get(var))); - v = eolian_expression_eval_type(exp, type); + v = eolian_expression_eval(exp, EOLIAN_MASK_ALL); fail_if(v.type != EOLIAN_EXPR_INT); fail_if(v.value.i != 5); @@ -812,7 +812,7 @@ EFL_START_TEST(eolian_var) fail_if(!(name = eolian_type_short_name_get(type))); fail_if(strcmp(name, "float")); fail_if(!(exp = eolian_variable_value_get(var))); - v = eolian_expression_eval_type(exp, type); + v = eolian_expression_eval(exp, EOLIAN_MASK_ALL); fail_if(v.type != EOLIAN_EXPR_FLOAT); fail_if(((int)v.value.f) != 10); --
