q66 pushed a commit to branch master.

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

commit c813e94606929449b93c780af0f9764e333b8218
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Wed Dec 14 17:28:50 2016 +0100

    eolian: unary expr eval for floats and add a signed number mask
    
    This adds a new mask for all signed numbers (sint + float) and
    fixes unary expr evaluation for floats, as well as fixes eval
    error messages.
---
 src/bindings/luajit/eolian.lua   |  2 ++
 src/lib/ecore/efl_loop_timer.eo  |  2 +-
 src/lib/eolian/Eolian.h          |  1 +
 src/lib/eolian/database_expr.c   | 26 ++++++++++++++------------
 src/lib/evas/canvas/evas_text.eo |  2 +-
 5 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index 66727fa..2b2df9f 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -109,6 +109,7 @@ ffi.cdef [[
         EOLIAN_MASK_STRING = 1 << 4,
         EOLIAN_MASK_CHAR   = 1 << 5,
         EOLIAN_MASK_NULL   = 1 << 6,
+        EOLIAN_MASK_SIGNED = EOLIAN_MASK_SINT   | EOLIAN_MASK_FLOAT,
         EOLIAN_MASK_NUMBER = EOLIAN_MASK_INT    | EOLIAN_MASK_FLOAT,
         EOLIAN_MASK_ALL    = EOLIAN_MASK_NUMBER | EOLIAN_MASK_BOOL
                            | EOLIAN_MASK_STRING | EOLIAN_MASK_CHAR
@@ -1222,6 +1223,7 @@ M.expression_mask = {
 local emask = M.expression_mask
 
 emask.INT    = bit.bor(emask.SINT  , emask.UINT )
+emask.SIGNED = bit.bor(emask.SINT  , emask.FLOAT)
 emask.NUMBER = bit.bor(emask.INT   , emask.FLOAT)
 emask.ALL    = bit.bor(emask.NUMBER, emask.BOOL,
                        emask.STRING, emask.CHAR, emask.NULL)
diff --git a/src/lib/ecore/efl_loop_timer.eo b/src/lib/ecore/efl_loop_timer.eo
index baf661a..1271511 100644
--- a/src/lib/ecore/efl_loop_timer.eo
+++ b/src/lib/ecore/efl_loop_timer.eo
@@ -19,7 +19,7 @@ class Efl.Loop.Timer (Efl.Loop_User)
          get {
          }
          values {
-            in: double(-1); [[The new interval in seconds]]
+            in: double(-1.0); [[The new interval in seconds]]
          }
       }
       @property pending {
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index 3613482..0c853dd 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -254,6 +254,7 @@ typedef enum
    EOLIAN_MASK_STRING = 1 << 4,
    EOLIAN_MASK_CHAR   = 1 << 5,
    EOLIAN_MASK_NULL   = 1 << 6,
+   EOLIAN_MASK_SIGNED = EOLIAN_MASK_SINT   | EOLIAN_MASK_FLOAT,
    EOLIAN_MASK_NUMBER = EOLIAN_MASK_INT    | EOLIAN_MASK_FLOAT,
    EOLIAN_MASK_ALL    = EOLIAN_MASK_NUMBER | EOLIAN_MASK_BOOL
                       | EOLIAN_MASK_STRING | EOLIAN_MASK_CHAR
diff --git a/src/lib/eolian/database_expr.c b/src/lib/eolian/database_expr.c
index 862c30b..21dfe65 100644
--- a/src/lib/eolian/database_expr.c
+++ b/src/lib/eolian/database_expr.c
@@ -50,7 +50,7 @@ mask_to_str(int mask, char *buf)
 }
 
 static Eina_Bool
-expr_type_error(const Eolian_Expression *expr, int type, int mask)
+expr_type_error(const Eolian_Expression *expr, int mask, int type)
 {
    char buf[512];
    char ebuf[256];
@@ -153,9 +153,9 @@ promote(Eolian_Expression *a, Eolian_Expression *b)
    assert(a->type && b->type);
    /* not a number */
    if (a->type >= EOLIAN_EXPR_STRING)
-     return expr_type_error(a, expr_type_to_mask(a), EOLIAN_MASK_NUMBER);
+     return expr_type_error(a, EOLIAN_MASK_NUMBER, expr_type_to_mask(a));
    if (b->type >= EOLIAN_EXPR_STRING)
-     return expr_type_error(b, expr_type_to_mask(b), EOLIAN_MASK_NUMBER);
+     return expr_type_error(b, EOLIAN_MASK_NUMBER, expr_type_to_mask(b));
    /* no need for promotion */
    if (a->type == b->type) return EINA_TRUE;
    /* if either operand is floating point, everything has to be */
@@ -191,26 +191,28 @@ eval_unary(const Eolian_Expression *expr, 
Eolian_Expression_Mask mask,
       case EOLIAN_UNOP_UNP:
         {
            /* no-op, but still typecheck */
-           if (!(mask & EOLIAN_MASK_SINT))
-             return expr_type_error(expr, EOLIAN_MASK_SINT, mask);
+           if (!(mask & EOLIAN_MASK_SIGNED))
+             return expr_type_error(expr, EOLIAN_MASK_SIGNED, mask);
 
-           return eval_exp(expr->expr, EOLIAN_MASK_SINT, out);
+           return eval_exp(expr->expr, EOLIAN_MASK_SIGNED, out);
         }
       case EOLIAN_UNOP_UNM:
         {
            Eolian_Expression exp;
 
-           if (!(mask & EOLIAN_MASK_SINT))
-             return expr_type_error(expr, EOLIAN_MASK_SINT, mask);
+           if (!(mask & EOLIAN_MASK_SIGNED))
+             return expr_type_error(expr, EOLIAN_MASK_SIGNED, mask);
 
-           if (!eval_exp(expr->expr, EOLIAN_MASK_SINT, &exp))
+           if (!eval_exp(expr->expr, EOLIAN_MASK_SIGNED, &exp))
              return EINA_FALSE;
 
            switch (exp.type)
              {
-              case EOLIAN_EXPR_LLONG: exp.value.ll  = -(exp.value.ll); break;
-              case EOLIAN_EXPR_LONG : exp.value.l   = -(exp.value.l ); break;
-              case EOLIAN_EXPR_INT  : exp.value.i   = -(exp.value.i ); break;
+              case EOLIAN_EXPR_LLONG : exp.value.ll = -(exp.value.ll); break;
+              case EOLIAN_EXPR_LONG  : exp.value.l  = -(exp.value.l ); break;
+              case EOLIAN_EXPR_INT   : exp.value.i  = -(exp.value.i ); break;
+              case EOLIAN_EXPR_FLOAT : exp.value.f  = -(exp.value.f ); break;
+              case EOLIAN_EXPR_DOUBLE: exp.value.d  = -(exp.value.d ); break;
               default: return EINA_FALSE;
              }
 
diff --git a/src/lib/evas/canvas/evas_text.eo b/src/lib/evas/canvas/evas_text.eo
index 039f3c0..6cc477d 100644
--- a/src/lib/evas/canvas/evas_text.eo
+++ b/src/lib/evas/canvas/evas_text.eo
@@ -51,7 +51,7 @@ class Evas.Text (Efl.Canvas.Object, Efl.Text, 
Efl.Text.Properties, Efl.Canvas.Fi
          get {
          }
          values {
-            ellipsis: double(-1); [[The ellipsis. Allowed values: -1.0 or 
0.0-1.0]]
+            ellipsis: double(-1.0); [[The ellipsis. Allowed values: -1.0 or 
0.0-1.0]]
          }
       }
       @property bidi_delimiters {

-- 


Reply via email to