eolian: add api to deal with typedecl free funcs
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Thu, 11 Feb 2016 15:34:26 +0000 (15:34 +0000)
committerDaniel Kolesa <d.kolesa@osg.samsung.com>
Thu, 3 Mar 2016 18:58:11 +0000 (18:58 +0000)
src/lib/eolian/Eolian.h
src/lib/eolian/database_type.c
src/lib/eolian/database_type_api.c
src/lib/eolian/eolian_database.h

index 46ba770..50c0f7c 100644 (file)
@@ -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.
index 08b6fd5..2166a62 100644 (file)
@@ -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;
 
index b942f17..db0e09c 100644 (file)
@@ -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;
+}
index 853b138..bf9c107 100644 (file)
@@ -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;
 };