From 2377a2c6673f3cd55ac2dc82abc2fad1e0d39686 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Mon, 2 Sep 2019 15:05:34 +0200 Subject: [PATCH] eolian_gen: use new is_move APIs to check ownership transfers --- src/bin/eolian/headers.c | 9 ++++++--- src/bin/eolian/sources.c | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/bin/eolian/headers.c b/src/bin/eolian/headers.c index 3e433b5f29..f21ae2e8f6 100644 --- a/src/bin/eolian/headers.c +++ b/src/bin/eolian/headers.c @@ -35,7 +35,7 @@ _gen_param(Eina_Strbuf *buf, Eolian_Function_Parameter *pr, eina_strbuf_append(buf, _get_add_star(ftype, eolian_parameter_direction_get(pr))); eina_strbuf_append(buf, prn); eina_stringshare_del(prtn); - if (eolian_type_is_owned(eolian_parameter_type_get(pr))) + if (eolian_parameter_is_move(pr)) eina_strbuf_append(buf, " EFL_TRANSFER_OWNERSHIP"); *rpid = 0; return 1; @@ -82,13 +82,16 @@ _gen_func(const Eolian_State *state, const Eolian_Function *fid, Eina_Bool var_as_ret = EINA_FALSE; const Eolian_Type *rtp = eolian_function_return_type_get(fid, ftype); + Eina_Bool return_move = eolian_function_return_is_move(fid, ftype); if (ftype == EOLIAN_PROP_GET && !rtp) { void *d1, *d2; Eina_Iterator *itr = eolian_property_values_get(fid, ftype); if (eina_iterator_next(itr, &d1) && !eina_iterator_next(itr, &d2)) { - rtp = eolian_parameter_type_get((Eolian_Function_Parameter *)d1); + Eolian_Function_Parameter *pr = (Eolian_Function_Parameter *)d1; + rtp = eolian_parameter_type_get(pr); + return_move = eolian_parameter_is_move(pr); var_as_ret = EINA_TRUE; } eina_iterator_free(itr); @@ -168,7 +171,7 @@ _gen_func(const Eolian_State *state, const Eolian_Function *fid, flagbuf = eina_strbuf_new(); eina_strbuf_prepend(flagbuf, " EINA_WARN_UNUSED_RESULT"); } - if (rtp && eolian_type_is_owned(rtp)) + if (return_move) eina_strbuf_append(buf, " EFL_TRANSFER_OWNERSHIP"); if (flagbuf) { diff --git a/src/bin/eolian/sources.c b/src/bin/eolian/sources.c index 93d78ebbd7..2c45163171 100644 --- a/src/bin/eolian/sources.c +++ b/src/bin/eolian/sources.c @@ -314,7 +314,7 @@ _gen_function_param_fallback(Eina_Iterator *itr, Eina_Strbuf *fallback_free_owne inner_type = eolian_type_base_type_get(type); //check if they should be freed or just ignored - if (!eolian_type_is_owned(type) || eolian_parameter_direction_get(pr) == EOLIAN_OUT_PARAM) + if (!eolian_parameter_is_move(pr) || eolian_parameter_direction_get(pr) == EOLIAN_OUT_PARAM) { eina_strbuf_append_printf(fallback_free_ownership, " (void)%s;\n", eolian_parameter_name_get(pr)); continue; @@ -329,11 +329,11 @@ _gen_function_param_fallback(Eina_Iterator *itr, Eina_Strbuf *fallback_free_owne eina_strbuf_append(param_call, eolian_parameter_name_get(pr)); //check if we might want to free or handle the children - if (!inner_type || !eolian_type_is_owned(inner_type)) + if (!inner_type || !eolian_type_is_move(inner_type)) { _generate_normal_free(&fallback_free_ownership, type, param_call, ""); } - else if (inner_type && eolian_type_is_owned(inner_type)) + else if (inner_type && eolian_type_is_move(inner_type)) { _generate_iterative_free(&fallback_free_ownership, type, inner_type, pr, param_call); }