From: Daniel Kolesa Date: Thu, 11 Feb 2016 15:34:26 +0000 (+0000) Subject: eolian: add api to deal with typedecl free funcs X-Git-Tag: upstream/1.20.0~7315^2~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8514c1846f5706b051f72beb09113f84f8e17b69;p=platform%2Fupstream%2Fefl.git eolian: add api to deal with typedecl free funcs --- diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index 46ba770..50c0f7c 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -1698,6 +1698,7 @@ EAPI Eina_Iterator *eolian_typedecl_namespaces_get(const Eolian_Typedecl *tp); * @ingroup Eolian */ EAPI Eina_Stringshare *eolian_type_free_func_get(const Eolian_Type *tp); +EAPI Eina_Stringshare *eolian_typedecl_free_func_get(const Eolian_Typedecl *tp); /* * @brief Evaluate an Eolian expression. diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c index 08b6fd5..2166a62 100644 --- a/src/lib/eolian/database_type.c +++ b/src/lib/eolian/database_type.c @@ -43,6 +43,7 @@ database_typedecl_del(Eolian_Typedecl *tp) if (tp->namespaces) EINA_LIST_FREE(tp->namespaces, sp) eina_stringshare_del(sp); if (tp->legacy) eina_stringshare_del(tp->legacy); + if (tp->freefunc) eina_stringshare_del(tp->freefunc); /*database_doc_del(tp->doc);*/ free(tp); } @@ -83,6 +84,7 @@ _typedecl_add(Eolian_Type *type) ret->field_list = type->field_list; ret->doc = type->doc; ret->legacy = eina_stringshare_ref(type->legacy); + ret->freefunc = eina_stringshare_ref(type->freefunc); ret->is_extern = type->is_extern; ret->parent = type; diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c index b942f17..db0e09c 100644 --- a/src/lib/eolian/database_type_api.c +++ b/src/lib/eolian/database_type_api.c @@ -534,3 +534,10 @@ eolian_type_free_func_get(const Eolian_Type *tp) EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); return tp->freefunc; } + +EAPI Eina_Stringshare * +eolian_typedecl_free_func_get(const Eolian_Typedecl *tp) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); + return tp->freefunc; +} diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index 853b138..bf9c107 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -197,6 +197,7 @@ struct _Eolian_Typedecl Eina_List *field_list; Eolian_Documentation *doc; Eina_Stringshare *legacy; + Eina_Stringshare *freefunc; Eina_Bool is_extern :1; };