summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2016-02-11 15:32:02 +0000
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2016-03-03 18:58:11 +0000
commitc0287a2752f9abd056cee668b479de607aec83ed (patch)
treea078e657bf13ff8ff3c6761ea85a766f8581f661
parentcf9dbaa7dac5a51a414784149eea3cc4d17f5b6d (diff)
downloadefl-c0287a2752f9abd056cee668b479de607aec83ed.tar.gz
eolian: add some missing typedecl APIs
-rw-r--r--src/lib/eolian/Eolian.h5
-rw-r--r--src/lib/eolian/database_type.c1
-rw-r--r--src/lib/eolian/database_type_api.c35
-rw-r--r--src/lib/eolian/eolian_database.h1
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;