q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7b4f4af8736512a29b300d9cba4ed91002619aeb

commit 7b4f4af8736512a29b300d9cba4ed91002619aeb
Author: Daniel Kolesa <[email protected]>
Date:   Wed Jul 9 13:06:46 2014 +0100

    eolian: support for structs in eolian_show
---
 src/lib/eolian/eolian_database.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index 5d823e2..56bd848 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -1422,6 +1422,19 @@ _event_print(Eolian_Event ev, int nb_spaces)
    printf("%*s <%s> <%s> <%s>\n", nb_spaces + 5, "", name, type, comment);
 }
 
+static void _type_print(Eolian_Type tp, Eina_Strbuf *buf);
+
+static Eina_Bool
+_field_print(const Eina_Hash *hash EINA_UNUSED, const void *key, void *data,
+             void *fdata)
+{
+   Eina_Strbuf *buf = (Eina_Strbuf*)fdata;
+   eina_strbuf_append_printf(buf, "%s: ", (const char*)key);
+   _type_print((Eolian_Type)data, buf);
+   eina_strbuf_append(buf, "; ");
+   return EINA_TRUE;
+}
+
 static void
 _type_print(Eolian_Type tp, Eina_Strbuf *buf)
 {
@@ -1462,6 +1475,14 @@ _type_print(Eolian_Type tp, Eina_Strbuf *buf)
           }
         eina_strbuf_append_char(buf, ')');
      }
+   else if (tpp->type == EOLIAN_TYPE_STRUCT)
+     {
+        eina_strbuf_append(buf, "struct ");
+        if (tpp->name) eina_strbuf_append_printf(buf, "%s ", tpp->name);
+        eina_strbuf_append(buf, "{ ");
+        eina_hash_foreach(tpp->fields, _field_print, buf);
+        eina_strbuf_append(buf, "}");
+     }
    if (tpp->is_own)
      eina_strbuf_append_char(buf, ')');
    if (tpp->is_const)

-- 


Reply via email to