diff options
author | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2017-05-25 16:10:29 +0200 |
---|---|---|
committer | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2017-05-30 17:15:54 +0200 |
commit | 4125e3f34bf3c6bc3d61aebfbe73263d0eac8b17 (patch) | |
tree | 86126bf4853e4472460db87f4956526b74aa179d | |
parent | 2cfbd3a42b4c0635e715f3ee1e438dd8f8de7692 (diff) | |
download | efl-4125e3f34bf3c6bc3d61aebfbe73263d0eac8b17.tar.gz |
eolian: more expr system unit updates
-rw-r--r-- | src/lib/eolian/database_expr.c | 5 | ||||
-rw-r--r-- | src/lib/eolian/database_expr_api.c | 25 | ||||
-rw-r--r-- | src/lib/eolian/eolian_database.h | 2 |
3 files changed, 17 insertions, 15 deletions
diff --git a/src/lib/eolian/database_expr.c b/src/lib/eolian/database_expr.c index d7190e8da1..09be53e7f1 100644 --- a/src/lib/eolian/database_expr.c +++ b/src/lib/eolian/database_expr.c @@ -559,14 +559,15 @@ eval_exp(const Eolian_Unit *unit, const Eolian_Expression *expr, } Eolian_Value -database_expr_eval(const Eolian_Expression *expr, Eolian_Expression_Mask mask) +database_expr_eval(const Eolian_Unit *unit, const Eolian_Expression *expr, + Eolian_Expression_Mask mask) { Eolian_Expression out; Eolian_Value ret; ret.type = EOLIAN_EXPR_UNKNOWN; if (!mask) return ret; - if (!eval_exp(NULL, expr, mask, &out)) + if (!eval_exp(unit, expr, mask, &out)) return ret; ret.type = out.type; ret.value = out.value; diff --git a/src/lib/eolian/database_expr_api.c b/src/lib/eolian/database_expr_api.c index 6cfca9466c..acc16ed48d 100644 --- a/src/lib/eolian/database_expr_api.c +++ b/src/lib/eolian/database_expr_api.c @@ -11,11 +11,12 @@ eolian_expression_eval(const Eolian_Expression *expr, Eolian_Expression_Mask m) Eolian_Value err; err.type = EOLIAN_EXPR_UNKNOWN; EINA_SAFETY_ON_NULL_RETURN_VAL(expr, err); - return database_expr_eval(expr, m); + return database_expr_eval(NULL, expr, m); } static Eolian_Value -_eval_type(const Eolian_Expression *expr, const Eolian_Type *type) +_eval_type(const Eolian_Unit *unit, const Eolian_Expression *expr, + const Eolian_Type *type) { Eolian_Value err; err.type = EOLIAN_EXPR_UNKNOWN; @@ -25,21 +26,21 @@ _eval_type(const Eolian_Expression *expr, const Eolian_Type *type) { case EOLIAN_TYPE_CLASS: case EOLIAN_TYPE_COMPLEX: - return database_expr_eval(expr, EOLIAN_MASK_NULL); + return database_expr_eval(unit, expr, EOLIAN_MASK_NULL); case EOLIAN_TYPE_REGULAR: { int kw = eo_lexer_keyword_str_to_id(type->name); if (type->is_ptr) - return database_expr_eval(expr, EOLIAN_MASK_NULL); + return database_expr_eval(unit, expr, EOLIAN_MASK_NULL); if (!kw || kw < KW_byte || kw >= KW_void) { const Eolian_Typedecl *base = eolian_type_typedecl_get(type); if (!base) return err; if (base->type == EOLIAN_TYPEDECL_ALIAS) - return _eval_type(expr, eolian_typedecl_base_type_get(base)); + return _eval_type(unit, expr, eolian_typedecl_base_type_get(base)); else if (base->type == EOLIAN_TYPEDECL_ENUM) - return database_expr_eval(expr, EOLIAN_MASK_INT); + return database_expr_eval(unit, expr, EOLIAN_MASK_INT); return err; } switch (kw) @@ -57,7 +58,7 @@ _eval_type(const Eolian_Expression *expr, const Eolian_Type *type) case KW_ssize: case KW_intptr: case KW_ptrdiff: - return database_expr_eval(expr, EOLIAN_MASK_SINT); + return database_expr_eval(unit, expr, EOLIAN_MASK_SINT); case KW_ubyte: case KW_ushort: case KW_uint: @@ -71,14 +72,14 @@ _eval_type(const Eolian_Expression *expr, const Eolian_Type *type) case KW_size: case KW_uintptr: case KW_time: - return database_expr_eval(expr, EOLIAN_MASK_UINT); + return database_expr_eval(unit, expr, EOLIAN_MASK_UINT); case KW_float: case KW_double: - return database_expr_eval(expr, EOLIAN_MASK_FLOAT); + return database_expr_eval(unit, expr, EOLIAN_MASK_FLOAT); case KW_bool: - return database_expr_eval(expr, EOLIAN_MASK_BOOL); + return database_expr_eval(unit, expr, EOLIAN_MASK_BOOL); case KW_char: - return database_expr_eval(expr, EOLIAN_MASK_CHAR); + return database_expr_eval(unit, expr, EOLIAN_MASK_CHAR); default: return err; } @@ -95,7 +96,7 @@ eolian_expression_eval_type(const Eolian_Expression *expr, Eolian_Value err; err.type = EOLIAN_EXPR_UNKNOWN; EINA_SAFETY_ON_NULL_RETURN_VAL(expr, err); - return _eval_type(expr, type); + return _eval_type(NULL, expr, type); } static void diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index 67ccbec287..263e207b0d 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -316,7 +316,7 @@ void database_typedecl_to_str(const Eolian_Typedecl *tp, Eina_Strbuf *buf); /* expressions */ -Eolian_Value database_expr_eval(const Eolian_Expression *expr, Eolian_Expression_Mask mask); +Eolian_Value database_expr_eval(const Eolian_Unit *unit, const Eolian_Expression *expr, Eolian_Expression_Mask mask); void database_expr_del(Eolian_Expression *expr); void database_expr_print(Eolian_Expression *expr); |