diff options
author | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2016-02-11 15:32:02 +0000 |
---|---|---|
committer | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2016-03-03 18:58:11 +0000 |
commit | c0287a2752f9abd056cee668b479de607aec83ed (patch) | |
tree | a078e657bf13ff8ff3c6761ea85a766f8581f661 | |
parent | cf9dbaa7dac5a51a414784149eea3cc4d17f5b6d (diff) | |
download | efl-c0287a2752f9abd056cee668b479de607aec83ed.tar.gz |
eolian: add some missing typedecl APIs
-rw-r--r-- | src/lib/eolian/Eolian.h | 5 | ||||
-rw-r--r-- | src/lib/eolian/database_type.c | 1 | ||||
-rw-r--r-- | src/lib/eolian/database_type_api.c | 35 | ||||
-rw-r--r-- | src/lib/eolian/eolian_database.h | 1 |
4 files changed, 42 insertions, 0 deletions
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index 18e0e53e2d..46ba77019f 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -1626,6 +1626,7 @@ EAPI Eina_Bool eolian_typedecl_is_extern(const Eolian_Typedecl *tp); * @ingroup Eolian */ EAPI Eina_Stringshare *eolian_type_c_type_named_get(const Eolian_Type *tp, const char *name); +EAPI Eina_Stringshare *eolian_typedecl_c_type_named_get(const Eolian_Typedecl *tp, const char *name); /* * @brief Get the full C type name of the given type without a name. @@ -1643,6 +1644,7 @@ EAPI Eina_Stringshare *eolian_type_c_type_named_get(const Eolian_Type *tp, const * @ingroup Eolian */ EAPI Eina_Stringshare *eolian_type_c_type_get(const Eolian_Type *tp); +EAPI Eina_Stringshare *eolian_typedecl_c_type_get(const Eolian_Typedecl *tp); /* * @brief Get the name of the given type. For regular or complex types, this @@ -1657,6 +1659,7 @@ EAPI Eina_Stringshare *eolian_type_c_type_get(const Eolian_Type *tp); * @ingroup Eolian */ EAPI Eina_Stringshare *eolian_type_name_get(const Eolian_Type *tp); +EAPI Eina_Stringshare *eolian_typedecl_name_get(const Eolian_Typedecl *tp); /* * @brief Get the full (namespaced) name of a function. Only works on named @@ -1668,6 +1671,7 @@ EAPI Eina_Stringshare *eolian_type_name_get(const Eolian_Type *tp); * @ingroup Eolian */ EAPI Eina_Stringshare *eolian_type_full_name_get(const Eolian_Type *tp); +EAPI Eina_Stringshare *eolian_typedecl_full_name_get(const Eolian_Typedecl *tp); /* * @brief Get an iterator to the list of namespaces of the given type. Only @@ -1679,6 +1683,7 @@ EAPI Eina_Stringshare *eolian_type_full_name_get(const Eolian_Type *tp); * @ingroup Eolian */ EAPI Eina_Iterator *eolian_type_namespaces_get(const Eolian_Type *tp); +EAPI Eina_Iterator *eolian_typedecl_namespaces_get(const Eolian_Typedecl *tp); /* * @brief Get the name of the function used to free this type. diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c index 03bea33ce2..08b6fd58b3 100644 --- a/src/lib/eolian/database_type.c +++ b/src/lib/eolian/database_type.c @@ -84,6 +84,7 @@ _typedecl_add(Eolian_Type *type) ret->doc = type->doc; ret->legacy = eina_stringshare_ref(type->legacy); ret->is_extern = type->is_extern; + ret->parent = type; return ret; } diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c index 97fb00d683..b942f175b0 100644 --- a/src/lib/eolian/database_type_api.c +++ b/src/lib/eolian/database_type_api.c @@ -466,12 +466,25 @@ eolian_type_c_type_named_get(const Eolian_Type *tp, const char *name) } EAPI Eina_Stringshare * +eolian_typedecl_c_type_named_get(const Eolian_Typedecl *tp, const char *name) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); + return eolian_type_c_type_named_get(tp->parent, name); +} + +EAPI Eina_Stringshare * eolian_type_c_type_get(const Eolian_Type *tp) { return eolian_type_c_type_named_get(tp, NULL); } EAPI Eina_Stringshare * +eolian_typedecl_c_type_get(const Eolian_Typedecl *tp) +{ + return eolian_typedecl_c_type_named_get(tp, NULL); +} + +EAPI Eina_Stringshare * eolian_type_name_get(const Eolian_Type *tp) { EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); @@ -479,12 +492,26 @@ eolian_type_name_get(const Eolian_Type *tp) } EAPI Eina_Stringshare * +eolian_typedecl_name_get(const Eolian_Typedecl *tp) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); + return tp->name; +} + +EAPI Eina_Stringshare * eolian_type_full_name_get(const Eolian_Type *tp) { EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); return tp->full_name; } +EAPI Eina_Stringshare * +eolian_typedecl_full_name_get(const Eolian_Typedecl *tp) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); + return tp->full_name; +} + EAPI Eina_Iterator * eolian_type_namespaces_get(const Eolian_Type *tp) { @@ -493,6 +520,14 @@ eolian_type_namespaces_get(const Eolian_Type *tp) return eina_list_iterator_new(tp->namespaces); } +EAPI Eina_Iterator * +eolian_typedecl_namespaces_get(const Eolian_Typedecl *tp) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); + if (!tp->namespaces) return NULL; + return eina_list_iterator_new(tp->namespaces); +} + EAPI Eina_Stringshare * eolian_type_free_func_get(const Eolian_Type *tp) { diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index ca9f23f2e9..853b138e83 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -188,6 +188,7 @@ struct _Eolian_Typedecl { Eolian_Object base; Eolian_Typedecl_Type type; + Eolian_Type *parent; Eolian_Type *base_type; Eina_Stringshare *name; Eina_Stringshare *full_name; |