q66 pushed a commit to branch master.

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

commit 010650663b4abe5954b0deea3708d905cb87a615
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Fri Sep 15 16:30:52 2017 +0200

    eolian: store ownership info in types
    
    Even though ownership info belongs to params/returns/etc at syntax
    level, we can still store it in the type and turn several API funcs
    into one this way.
---
 src/lib/eolian/eo_parser.c       | 13 ++++++-------
 src/lib/eolian/eolian_database.h |  5 -----
 2 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 791fcce947..4126323b70 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -517,7 +517,7 @@ parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool 
is_extern,
         fdef->type = tp;
         fdef->name = eina_stringshare_ref(fname);
         pop_type(ls);
-        if ((fdef->owned = (ls->t.kw == KW_at_owned)))
+        if ((fdef->type->owned = (ls->t.kw == KW_at_owned)))
           eo_lexer_get(ls);
         check_next(ls, ';');
         FILL_DOC(ls, fdef, doc);
@@ -1085,7 +1085,7 @@ parse_param(Eo_Lexer *ls, Eina_List **params, Eina_Bool 
allow_inout,
         break;
       case KW_at_owned:
         CASE_LOCK(ls, owned, "owned qualifier");
-        par->owned = EINA_TRUE;
+        par->type->owned = EINA_TRUE;
         eo_lexer_get(ls);
         break;
       default:
@@ -1201,7 +1201,7 @@ parse_accessor:
              prop->get_return_doc = ret.doc;
              prop->get_ret_val = ret.default_ret_val;
              prop->get_return_warn_unused = ret.warn_unused;
-             prop->get_return_owned = ret.owned;
+             prop->get_ret_type->owned = ret.owned;
           }
         else
           {
@@ -1209,7 +1209,7 @@ parse_accessor:
              prop->set_return_doc = ret.doc;
              prop->set_ret_val = ret.default_ret_val;
              prop->set_return_warn_unused = ret.warn_unused;
-             prop->set_return_owned = ret.owned;
+             prop->set_ret_type->owned = ret.owned;
           }
         break;
       case KW_legacy:
@@ -1413,7 +1413,6 @@ parse_function_pointer(Eo_Lexer *ls)
         meth->get_return_doc = ret.doc;
         meth->get_ret_val = NULL;
         meth->get_return_warn_unused = EINA_FALSE;
-        meth->get_return_owned = EINA_FALSE;
         break;
       case KW_params:
         CASE_LOCK(ls, params, "params definition");
@@ -1508,7 +1507,7 @@ body:
         meth->get_return_doc = ret.doc;
         meth->get_ret_val = ret.default_ret_val;
         meth->get_return_warn_unused = ret.warn_unused;
-        meth->get_return_owned = ret.owned;
+        meth->get_ret_type->owned = ret.owned;
         break;
       case KW_legacy:
         CASE_LOCK(ls, legacy, "legacy name")
@@ -1800,7 +1799,6 @@ parse_event(Eo_Lexer *ls)
         break;
       case KW_at_owned:
         CASE_LOCK(ls, owned, "owned qualifier");
-        ev->owned = EINA_TRUE;
         eo_lexer_get(ls);
         break;
       default:
@@ -1811,6 +1809,7 @@ end:
      {
         eo_lexer_get(ls);
         ev->type = parse_type(ls, EINA_TRUE, EINA_FALSE);
+        ev->type->owned = has_owned;
         pop_type(ls);
      }
    check(ls, ';');
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index 313779ce4c..47367f48f3 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -131,8 +131,6 @@ struct _Eolian_Function
    Eina_Bool obj_is_const :1; /* True if the object has to be const. Useful 
for a few methods. */
    Eina_Bool get_return_warn_unused :1; /* also used for methods */
    Eina_Bool set_return_warn_unused :1;
-   Eina_Bool get_return_owned :1;
-   Eina_Bool set_return_owned :1;
    Eina_Bool get_only_legacy: 1;
    Eina_Bool set_only_legacy: 1;
    Eina_Bool is_class :1;
@@ -152,7 +150,6 @@ struct _Eolian_Function_Parameter
    Eina_Bool nonull :1; /* True if this argument cannot be NULL - deprecated */
    Eina_Bool nullable :1; /* True if this argument is nullable */
    Eina_Bool optional :1; /* True if this argument is optional */
-   Eina_Bool owned :1;
 };
 
 struct _Eolian_Type
@@ -227,7 +224,6 @@ struct _Eolian_Event
    Eina_Bool is_beta :1;
    Eina_Bool is_hot  :1;
    Eina_Bool is_restart :1;
-   Eina_Bool owned :1;
 };
 
 struct _Eolian_Struct_Type_Field
@@ -236,7 +232,6 @@ struct _Eolian_Struct_Type_Field
    Eolian_Object     base;
    Eolian_Type      *type;
    Eolian_Documentation *doc;
-   Eina_Bool owned :1;
 };
 
 struct _Eolian_Enum_Type_Field

-- 


Reply via email to