eolian: simplify expr serialize and fix null/bool case

This commit is contained in:
Daniel Kolesa 2014-09-02 13:06:59 +01:00
parent e5ed4b7f04
commit 9ffe700aac
1 changed files with 8 additions and 6 deletions

View File

@ -229,19 +229,21 @@ _expr_serialize(const Eolian_Expression *expr, Eina_Strbuf *buf, Eina_Bool outer
case EOLIAN_EXPR_DOUBLE: case EOLIAN_EXPR_DOUBLE:
case EOLIAN_EXPR_STRING: case EOLIAN_EXPR_STRING:
case EOLIAN_EXPR_CHAR: case EOLIAN_EXPR_CHAR:
case EOLIAN_EXPR_NULL:
case EOLIAN_EXPR_BOOL:
{ {
Eolian_Value v = eolian_expression_eval(expr, EOLIAN_MASK_ALL); Eolian_Value *v = (Eolian_Value*)&expr->type;
if (!v.type) const char *x = eolian_expression_value_to_literal(v);
return EINA_FALSE;
const char *x = eolian_expression_value_to_literal(&v);
if (!x) if (!x)
return EINA_FALSE; return EINA_FALSE;
eina_strbuf_append(buf, x); eina_strbuf_append(buf, x);
eina_stringshare_del(x); eina_stringshare_del(x);
break; break;
} }
case EOLIAN_EXPR_NULL:
eina_strbuf_append(buf, "null");
break;
case EOLIAN_EXPR_BOOL:
eina_strbuf_append(buf, expr->value.b ? "true" : "false");
break;
case EOLIAN_EXPR_NAME: case EOLIAN_EXPR_NAME:
case EOLIAN_EXPR_ENUM: case EOLIAN_EXPR_ENUM:
{ {