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 --