From: Daniel Kolesa Date: Thu, 25 May 2017 14:10:29 +0000 (+0200) Subject: eolian: more expr system unit updates X-Git-Tag: upstream/1.20.0~860^2~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4125e3f34bf3c6bc3d61aebfbe73263d0eac8b17;p=platform%2Fupstream%2Fefl.git eolian: more expr system unit updates --- diff --git a/src/lib/eolian/database_expr.c b/src/lib/eolian/database_expr.c index d7190e8..09be53e 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 6cfca94..acc16ed 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 67ccbec..263e207 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);