q66 pushed a commit to branch master.

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

commit 1577c576e6141eeb80f9e6c7018310690bb1d8bc
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Fri Sep 22 18:01:15 2017 +0200

    eolian: remove static_array and terminated_array
    
    These types are of questionable value and the API was not entirely
    thought out - remove for now, and if a legitimate use is found
    later, they may be readded (with a better API), but typically it
    seems best to redesign the bad APIs around safe containers...
---
 src/bin/eolian/types.c                   | 20 +++------------
 src/bindings/luajit/eolian.lua           | 11 +--------
 src/lib/eolian/Eolian.h                  | 12 ---------
 src/lib/eolian/database_type_api.c       |  7 ------
 src/lib/eolian/database_validate.c       | 11 ---------
 src/lib/eolian/eo_lexer.c                |  2 --
 src/lib/eolian/eo_lexer.h                |  2 --
 src/lib/eolian/eo_parser.c               | 42 --------------------------------
 src/lib/eolian/eolian_database.h         |  1 -
 src/scripts/elua/apps/docgen/doctree.lua | 13 ----------
 src/tests/eolian/data/struct.eo          |  2 --
 src/tests/eolian/data/struct_ref.c       |  2 --
 src/tests/eolian/eolian_parsing.c        | 15 ------------
 13 files changed, 5 insertions(+), 135 deletions(-)

diff --git a/src/bin/eolian/types.c b/src/bin/eolian/types.c
index ec06c81869..ae4cd72d63 100644
--- a/src/bin/eolian/types.c
+++ b/src/bin/eolian/types.c
@@ -41,22 +41,10 @@ _type_generate(const Eolian_Unit *src, const 
Eolian_Typedecl *tp,
              {
                 const Eolian_Type *mtp = 
eolian_typedecl_struct_field_type_get(memb);
                 Eina_Stringshare *ct = NULL;
-                if (eolian_type_type_get(mtp) == EOLIAN_TYPE_STATIC_ARRAY)
-                  {
-                     ct = 
eolian_type_c_type_get(eolian_type_base_type_get(mtp),
-                                                 EOLIAN_C_TYPE_DEFAULT);
-                     eina_strbuf_append_printf(buf, "  %s%s%s[%zu];",
-                        ct, strchr(ct, '*') ? "" : " ",
-                        eolian_typedecl_struct_field_name_get(memb),
-                        eolian_type_array_size_get(mtp));
-                  }
-                else
-                  {
-                     ct = eolian_type_c_type_get(mtp, EOLIAN_C_TYPE_DEFAULT);
-                     eina_strbuf_append_printf(buf, "  %s%s%s;",
-                        ct, strchr(ct, '*') ? "" : " ",
-                        eolian_typedecl_struct_field_name_get(memb));
-                  }
+                ct = eolian_type_c_type_get(mtp, EOLIAN_C_TYPE_DEFAULT);
+                eina_strbuf_append_printf(buf, "  %s%s%s;",
+                   ct, strchr(ct, '*') ? "" : " ",
+                   eolian_typedecl_struct_field_name_get(memb));
                 eina_stringshare_del(ct);
                 const Eolian_Documentation *fdoc
                    = eolian_typedecl_struct_field_documentation_get(memb);
diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index 7deca59372..1f3c009682 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -80,8 +80,6 @@ ffi.cdef [[
         EOLIAN_TYPE_VOID,
         EOLIAN_TYPE_REGULAR,
         EOLIAN_TYPE_CLASS,
-        EOLIAN_TYPE_STATIC_ARRAY,
-        EOLIAN_TYPE_TERMINATED_ARRAY,
         EOLIAN_TYPE_UNDEFINED
     } Eolian_Type_Type;
 
@@ -342,7 +340,6 @@ ffi.cdef [[
     const Eolian_Type *eolian_typedecl_aliased_base_get(const Eolian_Typedecl 
*tp);
 
     const Eolian_Class *eolian_type_class_get(const Eolian_Unit *unit, const 
Eolian_Type *tp);
-    size_t eolian_type_array_size_get(const Eolian_Type *tp);
     Eina_Bool eolian_type_is_owned(const Eolian_Type *tp);
     Eina_Bool eolian_type_is_const(const Eolian_Type *tp);
     Eina_Bool eolian_type_is_ptr(const Eolian_Type *tp);
@@ -504,9 +501,7 @@ M.type_type = {
     VOID             = 1,
     REGULAR          = 2,
     CLASS            = 3,
-    STATIC_ARRAY     = 4,
-    TERMINATED_ARRAY = 5,
-    UNDEFINED        = 6
+    UNDEFINED        = 4
 }
 
 M.typedecl_type = {
@@ -715,10 +710,6 @@ M.Type = ffi.metatype("Eolian_Type", {
             return v
         end,
 
-        array_size_get = function(self)
-            return tonumber(eolian.eolian_type_array_size_get(self))
-        end,
-
         is_owned = function(self)
             return eolian.eolian_type_is_owned(self) ~= 0
         end,
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index 5ec4abba42..458a7343e6 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -228,8 +228,6 @@ typedef enum
    EOLIAN_TYPE_VOID,
    EOLIAN_TYPE_REGULAR,
    EOLIAN_TYPE_CLASS,
-   EOLIAN_TYPE_STATIC_ARRAY,
-   EOLIAN_TYPE_TERMINATED_ARRAY,
    EOLIAN_TYPE_UNDEFINED
 } Eolian_Type_Type;
 
@@ -1825,16 +1823,6 @@ EAPI const Eolian_Type 
*eolian_type_aliased_base_get(const Eolian_Type *tp);
 EAPI const Eolian_Class *eolian_type_class_get(const Eolian_Unit *unit, const 
Eolian_Type *tp);
 
 /*
- * @brief Get the size of an EOLIAN_TYPE_STATIC_ARRAY.
- *
- * @param[in] tp the type.
- * @return the size or 0.
- *
- * @ingroup Eolian
- */
-EAPI size_t eolian_type_array_size_get(const Eolian_Type *tp);
-
-/*
  * @brief Get whether the given type is owned.
  *
  * This is true when a parameter, return or whatever is marked as @owned.
diff --git a/src/lib/eolian/database_type_api.c 
b/src/lib/eolian/database_type_api.c
index 8d83a8f273..f1db367ec4 100644
--- a/src/lib/eolian/database_type_api.c
+++ b/src/lib/eolian/database_type_api.c
@@ -319,13 +319,6 @@ eolian_type_class_get(const Eolian_Unit *unit, const 
Eolian_Type *tp)
    return eolian_class_get_by_name(unit, tp->full_name);
 }
 
-EAPI size_t
-eolian_type_array_size_get(const Eolian_Type *tp)
-{
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tp, 0);
-   return tp->static_size;
-}
-
 EAPI Eina_Bool
 eolian_type_is_owned(const Eolian_Type *tp)
 {
diff --git a/src/lib/eolian/database_validate.c 
b/src/lib/eolian/database_validate.c
index 980ec628bb..0a296224da 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -208,17 +208,6 @@ _validate_type(Eolian_Type *tp)
              tp->freefunc = eina_stringshare_ref(tpp->freefunc);
            return EINA_TRUE;
         }
-      case EOLIAN_TYPE_TERMINATED_ARRAY:
-        if (!database_type_is_ownable(tp->base_type, EINA_TRUE))
-          {
-             snprintf(buf, sizeof(buf),
-                      "invalid base type '%s' for terminated array",
-                      tp->base_type->full_name);
-             return _type_error(tp, buf);
-          }
-        return _validate_type(tp->base_type);
-      case EOLIAN_TYPE_STATIC_ARRAY:
-        return _validate_type(tp->base_type);
       case EOLIAN_TYPE_CLASS:
         {
            /* FIXME: pass unit properly */
diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c
index 9318186b82..188af3c20e 100644
--- a/src/lib/eolian/eo_lexer.c
+++ b/src/lib/eolian/eo_lexer.c
@@ -71,8 +71,6 @@ static const char * const ctypes[] =
 
    "void",
 
-   NULL, NULL, /* array types */
-
    "Eina_Accessor *", "Eina_Array *", "Eina_Iterator *", "Eina_Hash *",
    "Eina_List *",
    "Efl_Future *",
diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
index 88e68a4690..849cc98efb 100644
--- a/src/lib/eolian/eo_lexer.h
+++ b/src/lib/eolian/eo_lexer.h
@@ -50,8 +50,6 @@ enum Tokens
     \
     KW(void), \
     \
-    KW(static_array), KW(terminated_array), \
-    \
     KW(accessor), KW(array), KW(iterator), KW(hash), KW(list), \
     KW(future),                                   \
     KW(generic_value), \
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 3095864c6f..a3bdc8c41c 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -751,48 +751,6 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, 
Eina_Bool allow_sarray)
         def->type = EOLIAN_TYPE_UNDEFINED;
         eo_lexer_get(ls);
      }
-   else if (ls->t.kw == KW_static_array)
-     {
-        if (!allow_sarray)
-          eo_lexer_syntax_error(ls, "static arrays not allowed in this 
context");
-        def->type = EOLIAN_TYPE_STATIC_ARRAY;
-        eo_lexer_get(ls);
-        check_next(ls, '<');
-        def->base_type = parse_type(ls, EINA_FALSE, EINA_FALSE);
-        pop_type(ls);
-        check_next(ls, ',');
-        check(ls, TOK_NUMBER);
-        eo_lexer_context_push(ls);
-        if (ls->t.kw == NUM_FLOAT || ls->t.kw == NUM_DOUBLE)
-          {
-             eo_lexer_context_restore(ls);
-             eo_lexer_syntax_error(ls, "integer expected");
-          }
-        eo_lexer_context_pop(ls);
-        switch (ls->t.kw)
-          {
-           case NUM_INT   : def->static_size = ls->t.value.i;   break;
-           case NUM_UINT  : def->static_size = ls->t.value.u;   break;
-           case NUM_LONG  : def->static_size = ls->t.value.l;   break;
-           case NUM_ULONG : def->static_size = ls->t.value.ul;  break;
-           case NUM_LLONG : def->static_size = ls->t.value.ll;  break;
-           case NUM_ULLONG: def->static_size = ls->t.value.ull; break;
-           default:
-             eo_lexer_syntax_error(ls, "wrong type, internal error");
-             break;
-          }
-        eo_lexer_get(ls);
-        check_next(ls, '>');
-     }
-   else if (ls->t.kw == KW_terminated_array)
-     {
-        def->type = EOLIAN_TYPE_TERMINATED_ARRAY;
-        eo_lexer_get(ls);
-        check_next(ls, '<');
-        def->base_type = parse_type(ls, EINA_FALSE, EINA_FALSE);
-        pop_type(ls);
-        check_next(ls, '>');
-     }
    else
      {
         int tpid = ls->t.kw;
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index d0118d0653..1a165a42e8 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -162,7 +162,6 @@ struct _Eolian_Type
    Eina_Stringshare *full_name;
    Eina_List        *namespaces;
    Eina_Stringshare *freefunc;
-   size_t static_size;
    Eina_Bool is_const  :1;
    Eina_Bool is_ptr    :1;
    Eina_Bool owned     :1;
diff --git a/src/scripts/elua/apps/docgen/doctree.lua 
b/src/scripts/elua/apps/docgen/doctree.lua
index f3876829aa..146479fa00 100644
--- a/src/scripts/elua/apps/docgen/doctree.lua
+++ b/src/scripts/elua/apps/docgen/doctree.lua
@@ -667,8 +667,6 @@ M.Type = Node:clone {
     VOID = eolian.type_type.VOID,
     REGULAR = eolian.type_type.REGULAR,
     CLASS = eolian.type_type.CLASS,
-    STATIC_ARRAY = eolian.type_type.STATIC_ARRAY,
-    TERMINATED_ARRAY = eolian.type_type.TERMINATED_ARRAY,
     UNDEFINED = eolian.type_type.UNDEFINED,
 
     __ctor = function(self, tp)
@@ -721,10 +719,6 @@ M.Type = Node:clone {
         return self.type:class_get(nil)
     end,
 
-    array_size_get = function(self)
-        return self.type_array_size_get()
-    end,
-
     is_owned = function(self)
         return self.type:is_owned()
     end,
@@ -779,13 +773,6 @@ M.Type = Node:clone {
                     .. table.concat(stypes, ", ") .. ">")
             end
             return wrap_type_attrs(self, self:full_name_get())
-        elseif tpt == self.STATIC_ARRAY then
-            return wrap_type_attrs(self, "static_array<"
-                .. self:base_type_get():serialize() .. ", "
-                .. self:array_size_get() .. ">")
-        elseif tpt == self.TERMINATED_ARRAY then
-            return wrap_type_attrs(self, "terminated_array<"
-                .. self:base_type_get():serialize() .. ">")
         end
         error("unhandled type type: " .. tpt)
     end
diff --git a/src/tests/eolian/data/struct.eo b/src/tests/eolian/data/struct.eo
index cb664f366c..55e6c50f4c 100644
--- a/src/tests/eolian/data/struct.eo
+++ b/src/tests/eolian/data/struct.eo
@@ -1,8 +1,6 @@
 struct Named {
     field: ptr(int);
     something: string;
-    arr: static_array<int, 16>;
-    tarr: terminated_array<string>;
 }
 
 struct Another {
diff --git a/src/tests/eolian/data/struct_ref.c 
b/src/tests/eolian/data/struct_ref.c
index cb64af6cb3..42f34a9be2 100644
--- a/src/tests/eolian/data/struct_ref.c
+++ b/src/tests/eolian/data/struct_ref.c
@@ -15,8 +15,6 @@ typedef struct _Named
 {
   int *field;
   const char *something;
-  int arr[16];
-  const char **tarr;
 } Named;
 
 typedef struct _Another
diff --git a/src/tests/eolian/eolian_parsing.c 
b/src/tests/eolian/eolian_parsing.c
index 79fdb64bb4..9e2c0d9bfc 100644
--- a/src/tests/eolian/eolian_parsing.c
+++ b/src/tests/eolian/eolian_parsing.c
@@ -677,21 +677,6 @@ START_TEST(eolian_struct)
    fail_if(!(type_name = eolian_type_c_type_get(ftype, 
EOLIAN_C_TYPE_DEFAULT)));
    fail_if(strcmp(type_name, "const char *"));
    eina_stringshare_del(type_name);
-   fail_if(!(field = eolian_typedecl_struct_field_get(tdl, "arr")));
-   fail_if(!(ftype = eolian_typedecl_struct_field_type_get(field)));
-   fail_if(eolian_type_is_ptr(ftype));
-   fail_if(eolian_type_array_size_get(ftype) != 16);
-   fail_if(eolian_type_type_get(ftype) != EOLIAN_TYPE_STATIC_ARRAY);
-   fail_if(!(type_name = eolian_type_c_type_get(ftype, 
EOLIAN_C_TYPE_DEFAULT)));
-   fail_if(strcmp(type_name, "int *"));
-   eina_stringshare_del(type_name);
-   fail_if(!(field = eolian_typedecl_struct_field_get(tdl, "tarr")));
-   fail_if(!(ftype = eolian_typedecl_struct_field_type_get(field)));
-   fail_if(eolian_type_is_ptr(ftype));
-   fail_if(!(type_name = eolian_type_c_type_get(ftype, 
EOLIAN_C_TYPE_DEFAULT)));
-   fail_if(eolian_type_type_get(ftype) != EOLIAN_TYPE_TERMINATED_ARRAY);
-   fail_if(strcmp(type_name, "const char **"));
-   eina_stringshare_del(type_name);
 
    /* referencing */
    fail_if(!(tdl = eolian_typedecl_struct_get_by_name(unit, "Another")));

-- 


Reply via email to