From: Daniel Kolesa Date: Fri, 22 Sep 2017 16:01:15 +0000 (+0200) Subject: eolian: remove static_array and terminated_array X-Git-Tag: submit/sandbox/upgrade/efl120/20180319.053334~2535 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1577c576e6141eeb80f9e6c7018310690bb1d8bc;p=platform%2Fupstream%2Fefl.git 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... --- diff --git a/src/bin/eolian/types.c b/src/bin/eolian/types.c index ec06c81..ae4cd72 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 7deca59..1f3c009 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 5ec4abb..458a734 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 8d83a8f..f1db367 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 980ec62..0a29622 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 9318186..188af3c 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 88e68a4..849cc98 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 3095864..a3bdc8c 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 d0118d0..1a165a4 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 f387682..146479f 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 cb664f3..55e6c50 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; - tarr: terminated_array; } struct Another { diff --git a/src/tests/eolian/data/struct_ref.c b/src/tests/eolian/data/struct_ref.c index cb64af6..42f34a9 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 79fdb64..9e2c0d9 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")));