q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0f0009cb4f250ecec59debc5b0626d32ed9ee063

commit 0f0009cb4f250ecec59debc5b0626d32ed9ee063
Author: Daniel Kolesa <[email protected]>
Date:   Mon Mar 12 13:55:01 2018 +0100

    eolian: expose short_name/namespaces via object
---
 src/lib/eolian/Eolian.h             | 30 ++++++++++++
 src/lib/eolian/database_class_api.c |  6 +--
 src/lib/eolian/database_type.c      |  4 +-
 src/lib/eolian/database_type_api.c  |  8 ++--
 src/lib/eolian/database_var_api.c   |  4 +-
 src/lib/eolian/eo_parser.c          |  2 +-
 src/lib/eolian/eolian_database.c    | 94 ++++++++++++++++++-------------------
 src/lib/eolian/eolian_database.h    |  3 --
 8 files changed, 89 insertions(+), 62 deletions(-)

diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index bde88caa05..0faa901cf6 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -569,12 +569,42 @@ EAPI int eolian_object_column_get(const Eolian_Object 
*obj);
  * @see eolian_object_file_get
  * @see eolian_object_line_get
  * @see eolian_object_column_get
+ * @see eolian_object_short_name_get
+ * @see eolian_object_namespaces_get
  *
  * @ingroup Eolian
  */
 EAPI const char *eolian_object_name_get(const Eolian_Object *obj);
 
 /*
+ * @brief Get the short name of an object.
+ *
+ * This means a name without namespaces. If the object's name is not
+ * namespaced in the first place, this is equivalent to getting the full name.
+ * So for `Foo.Bar.baz` this is `baz`, for `foo` it's again just `foo`.
+ *
+ * @see eolian_object_name_get
+ * @see eolian_object_namespaces_get
+ *
+ * @ingroup Eolian
+ */
+EAPI const char *eolian_object_short_name_get(const Eolian_Object *obj);
+
+/*
+ * @brief Get a list of namespaces for the object.
+ *
+ * Each item of the iterator is the next more inner namespace. So for
+ * example if the full name is `Foo.Bar.baz`, the iterator will first
+ * give you `Foo` and then `Bar`.
+ *
+ * @see eolian_object_name_get
+ * @see eolian_object_short_name_get
+ *
+ * @ingroup Eolian
+ */
+EAPI Eina_Iterator *eolian_object_namespaces_get(const Eolian_Object *obj);
+
+/*
  * @brief Scan the given directory for .eo and .eot files.
  *
  * You need to add every directory you plan to use .eo/.eot files from.
diff --git a/src/lib/eolian/database_class_api.c 
b/src/lib/eolian/database_class_api.c
index 4c2ca987e7..dd01dc4e72 100644
--- a/src/lib/eolian/database_class_api.c
+++ b/src/lib/eolian/database_class_api.c
@@ -15,13 +15,13 @@ eolian_class_full_name_get(const Eolian_Class *cl)
 EAPI Eina_Stringshare *
 eolian_class_name_get(const Eolian_Class *cl)
 {
-   return database_object_short_name_get((const Eolian_Object *)cl);
+   return eolian_object_short_name_get((const Eolian_Object *)cl);
 }
 
 EAPI Eina_Iterator *
 eolian_class_namespaces_get(const Eolian_Class *cl)
 {
-   return database_object_namespaces_get((const Eolian_Object *)cl);
+   return eolian_object_namespaces_get((const Eolian_Object *)cl);
 }
 
 EAPI Eolian_Class_Type
@@ -114,7 +114,7 @@ eolian_class_function_get_by_name(const Eolian_Class *cl, 
const char *func_name,
      }
 
    _eolian_log("function '%s' not found in class '%s'", func_name,
-               database_object_short_name_get(&cl->base));
+               eolian_object_short_name_get(&cl->base));
    return NULL;
 }
 
diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c
index b29dc87ee6..597015944f 100644
--- a/src/lib/eolian/database_type.c
+++ b/src/lib/eolian/database_type.c
@@ -97,14 +97,14 @@ _buf_add_suffix(Eina_Strbuf *buf, const char *suffix)
 static void
 _append_name(const Eolian_Object *obj, Eina_Strbuf *buf)
 {
-   Eina_Iterator *itr = database_object_namespaces_get(obj);
+   Eina_Iterator *itr = eolian_object_namespaces_get(obj);
    const char *sp;
    EINA_ITERATOR_FOREACH(itr, sp)
      {
         eina_strbuf_append(buf, sp);
         eina_strbuf_append_char(buf, '_');
      }
-   eina_strbuf_append(buf, database_object_short_name_get(obj));
+   eina_strbuf_append(buf, eolian_object_short_name_get(obj));
 }
 
 void
diff --git a/src/lib/eolian/database_type_api.c 
b/src/lib/eolian/database_type_api.c
index e0df501dda..4a01707831 100644
--- a/src/lib/eolian/database_type_api.c
+++ b/src/lib/eolian/database_type_api.c
@@ -268,13 +268,13 @@ eolian_typedecl_c_type_get(const Eolian_Typedecl *tp)
 EAPI Eina_Stringshare *
 eolian_type_name_get(const Eolian_Type *tp)
 {
-   return database_object_short_name_get((const Eolian_Object *)tp);
+   return eolian_object_short_name_get((const Eolian_Object *)tp);
 }
 
 EAPI Eina_Stringshare *
 eolian_typedecl_name_get(const Eolian_Typedecl *tp)
 {
-   return database_object_short_name_get((const Eolian_Object *)tp);
+   return eolian_object_short_name_get((const Eolian_Object *)tp);
 }
 
 EAPI Eina_Stringshare *
@@ -294,13 +294,13 @@ eolian_typedecl_full_name_get(const Eolian_Typedecl *tp)
 EAPI Eina_Iterator *
 eolian_type_namespaces_get(const Eolian_Type *tp)
 {
-   return database_object_namespaces_get((const Eolian_Object *)tp);
+   return eolian_object_namespaces_get((const Eolian_Object *)tp);
 }
 
 EAPI Eina_Iterator *
 eolian_typedecl_namespaces_get(const Eolian_Typedecl *tp)
 {
-   return database_object_namespaces_get((const Eolian_Object *)tp);
+   return eolian_object_namespaces_get((const Eolian_Object *)tp);
 }
 
 EAPI Eina_Stringshare *
diff --git a/src/lib/eolian/database_var_api.c 
b/src/lib/eolian/database_var_api.c
index 7228a8e939..944d8acc98 100644
--- a/src/lib/eolian/database_var_api.c
+++ b/src/lib/eolian/database_var_api.c
@@ -36,7 +36,7 @@ eolian_variable_value_get(const Eolian_Variable *var)
 EAPI Eina_Stringshare *
 eolian_variable_name_get(const Eolian_Variable *var)
 {
-   return database_object_short_name_get((const Eolian_Object *)var);
+   return eolian_object_short_name_get((const Eolian_Object *)var);
 }
 
 EAPI Eina_Stringshare *
@@ -49,7 +49,7 @@ eolian_variable_full_name_get(const Eolian_Variable *var)
 EAPI Eina_Iterator *
 eolian_variable_namespaces_get(const Eolian_Variable *var)
 {
-   return database_object_namespaces_get((const Eolian_Object *)var);
+   return eolian_object_namespaces_get((const Eolian_Object *)var);
 }
 
 EAPI Eina_Bool
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index c14863016a..00a7d69643 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -1353,7 +1353,7 @@ parse_function_pointer(Eo_Lexer *ls)
    meth->klass = NULL;
    meth->type = EOLIAN_FUNCTION_POINTER;
    meth->get_scope = meth->set_scope = EOLIAN_SCOPE_PUBLIC;
-   meth->base.name = 
eina_stringshare_add(database_object_short_name_get(&def->base));
+   meth->base.name = 
eina_stringshare_add(eolian_object_short_name_get(&def->base));
 
    def->function_pointer = meth;
    eolian_object_ref(&meth->base);
diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index d99c8490cf..e5cd1c0b7f 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -18,6 +18,41 @@ database_object_add(Eolian_Unit *unit, const Eolian_Object 
*obj)
                  ((Eina_List *)eina_hash_find(unit->state->objects_f, 
obj->file), obj));
 }
 
+EAPI Eolian_Object_Type
+eolian_object_type_get(const Eolian_Object *obj)
+{
+   if (!obj) return EOLIAN_OBJECT_UNKNOWN;
+   return obj->type;
+}
+
+EAPI const char *
+eolian_object_file_get(const Eolian_Object *obj)
+{
+   if (!obj) return NULL;
+   return obj->file;
+}
+
+EAPI int
+eolian_object_line_get(const Eolian_Object *obj)
+{
+   if (!obj) return 0;
+   return obj->line;
+}
+
+EAPI int
+eolian_object_column_get(const Eolian_Object *obj)
+{
+   if (!obj) return 0;
+   return obj->column;
+}
+
+EAPI const char *
+eolian_object_name_get(const Eolian_Object *obj)
+{
+   if (!obj) return NULL;
+   return obj->name;
+}
+
 typedef struct _Eolian_Namespace_List
 {
    Eina_Iterator itr;
@@ -46,8 +81,18 @@ _nmsp_container_get(Eina_Iterator *it EINA_UNUSED)
    return NULL;
 }
 
-Eina_Iterator *
-database_object_namespaces_get(const Eolian_Object *obj)
+EAPI const char *
+eolian_object_short_name_get(const Eolian_Object *obj)
+{
+   if (!obj || !obj->name) return NULL;
+   const char *ldot = strrchr(obj->name, '.');
+   if (ldot)
+     return ldot + 1;
+   return obj->name;
+}
+
+EAPI Eina_Iterator *
+eolian_object_namespaces_get(const Eolian_Object *obj)
 {
    if (!obj || !obj->name || !strchr(obj->name, '.')) return NULL;
 
@@ -67,16 +112,6 @@ database_object_namespaces_get(const Eolian_Object *obj)
    return &it->itr;
 }
 
-const char *
-database_object_short_name_get(const Eolian_Object *obj)
-{
-   if (!obj || !obj->name) return NULL;
-   const char *ldot = strrchr(obj->name, '.');
-   if (ldot)
-     return ldot + 1;
-   return obj->name;
-}
-
 void database_doc_del(Eolian_Documentation *doc)
 {
    if (!doc) return;
@@ -572,41 +607,6 @@ eolian_state_free(Eolian_State *state)
    free(state);
 }
 
-EAPI Eolian_Object_Type
-eolian_object_type_get(const Eolian_Object *obj)
-{
-   if (!obj) return EOLIAN_OBJECT_UNKNOWN;
-   return obj->type;
-}
-
-EAPI const char *
-eolian_object_file_get(const Eolian_Object *obj)
-{
-   if (!obj) return NULL;
-   return obj->file;
-}
-
-EAPI int
-eolian_object_line_get(const Eolian_Object *obj)
-{
-   if (!obj) return 0;
-   return obj->line;
-}
-
-EAPI int
-eolian_object_column_get(const Eolian_Object *obj)
-{
-   if (!obj) return 0;
-   return obj->column;
-}
-
-EAPI const char *
-eolian_object_name_get(const Eolian_Object *obj)
-{
-   if (!obj) return NULL;
-   return obj->name;
-}
-
 #define EO_SUFFIX ".eo"
 #define EOT_SUFFIX ".eot"
 
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index bed0c20825..259caee054 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -317,9 +317,6 @@ Eina_Bool database_validate(Eolian_State *state, const 
Eolian_Unit *src);
 
 void database_object_add(Eolian_Unit *unit, const Eolian_Object *obj);
 
-Eina_Iterator *database_object_namespaces_get(const Eolian_Object *obj);
-const char *database_object_short_name_get(const Eolian_Object *obj);
-
 void database_doc_del(Eolian_Documentation *doc);
 
 void database_unit_init(Eolian_State *state, Eolian_Unit *unit, const char 
*file);

-- 


Reply via email to