q66 pushed a commit to branch master.

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

commit 792855a1fac723e13efb11acd9287053e18a2ec9
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Fri Sep 15 16:24:46 2017 +0200

    eolian: parsing of new @owned syntax for complex types
---
 src/lib/eolian/eo_parser.c       | 7 +++++--
 src/lib/eolian/eolian_database.h | 1 +
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index ee0289b89f..791fcce947 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -517,8 +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);
-        fdef->owned = (ls->t.kw == KW_at_owned);
-        if (fdef->owned)
+        if ((fdef->owned = (ls->t.kw == KW_at_owned)))
           eo_lexer_get(ls);
         check_next(ls, ';');
         FILL_DOC(ls, fdef, doc);
@@ -827,11 +826,15 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, 
Eina_Bool allow_sarray)
                   else
                     def->base_type = parse_type(ls, EINA_FALSE, EINA_FALSE);
                   pop_type(ls);
+                  if ((def->base_type->owned = (ls->t.kw == KW_at_owned)))
+                    eo_lexer_get(ls);
                   if (tpid == KW_hash)
                     {
                        check_next(ls, ',');
                        def->base_type->next_type = parse_type(ls, EINA_FALSE, 
EINA_FALSE);
                        pop_type(ls);
+                       if ((def->base_type->next_type->owned = (ls->t.kw == 
KW_at_owned)))
+                         eo_lexer_get(ls);
                     }
                   else if((tpid == KW_future) && test_next(ls, ','))
                     {
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index 16a2a97981..313779ce4c 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -169,6 +169,7 @@ struct _Eolian_Type
    Eina_Bool is_const  :1;
    Eina_Bool is_own    :1;
    Eina_Bool is_ptr    :1;
+   Eina_Bool owned     :1;
 };
 
 struct _Eolian_Typedecl

-- 


Reply via email to