q66 pushed a commit to branch master.

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

commit 7b9438e76ed4ba18126084ef5aa15dd02bf84d68
Author: Daniel Kolesa <[email protected]>
Date:   Thu Jul 10 15:10:24 2014 +0100

    eolian: refactoring: remove Eo_Type_Def
---
 src/lib/eolian/database_type.c   | 16 +++++++++++-----
 src/lib/eolian/eo_definitions.c  | 15 +--------------
 src/lib/eolian/eo_definitions.h  | 13 +++----------
 src/lib/eolian/eo_lexer.c        |  5 ++---
 src/lib/eolian/eo_lexer.h        |  2 +-
 src/lib/eolian/eo_parser.c       | 21 +++++++++++----------
 src/lib/eolian/eolian_database.c | 10 +---------
 src/lib/eolian/eolian_database.h |  3 ++-
 8 files changed, 32 insertions(+), 53 deletions(-)

diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c
index bca7ece..873d508 100644
--- a/src/lib/eolian/database_type.c
+++ b/src/lib/eolian/database_type.c
@@ -22,15 +22,21 @@ database_type_del(Eolian_Type *tp)
    free(tp);
 }
 
+void
+database_typedef_del(Eolian_Typedef *def)
+{
+   if (!def) return;
+   eina_stringshare_del(def->alias);
+   database_type_del(def->type);
+   free(def);
+}
+
 Eina_Bool
-database_type_add(const char *alias, Eolian_Type *type)
+database_type_add(Eolian_Typedef *def)
 {
    if (_types)
      {
-        Eolian_Typedef *desc = calloc(1, sizeof(*desc));
-        desc->alias = eina_stringshare_add(alias);
-        desc->type = type;
-        eina_hash_set(_types, desc->alias, desc);
+        eina_hash_set(_types, def->alias, def);
         return EINA_TRUE;
      }
    return EINA_FALSE;
diff --git a/src/lib/eolian/eo_definitions.c b/src/lib/eolian/eo_definitions.c
index 2bb2328..4bcec97 100644
--- a/src/lib/eolian/eo_definitions.c
+++ b/src/lib/eolian/eo_definitions.c
@@ -2,7 +2,6 @@
 #include <stdlib.h>
 
 #include "eo_definitions.h"
-#include "eolian_database.h"
 
 static void
 eo_definitions_ret_free(Eo_Ret_Def *ret)
@@ -113,18 +112,6 @@ eo_definitions_impl_def_free(Eo_Implement_Def *impl)
 }
 
 void
-eo_definitions_typedef_def_free(Eo_Typedef_Def *type)
-{
-   if (type->alias)
-     eina_stringshare_del(type->alias);
-
-   if (type->type)
-     database_type_del(type->type);
-
-   free(type);
-}
-
-void
 eo_definitions_class_def_free(Eo_Class_Def *kls)
 {
    const char *s;
@@ -189,7 +176,7 @@ eo_definitions_temps_free(Eo_Lexer_Temps *tmp)
      eo_definitions_ret_free(tmp->ret_def);
 
    if (tmp->typedef_def)
-     eo_definitions_typedef_def_free(tmp->typedef_def);
+    database_typedef_del(tmp->typedef_def);
 
    EINA_LIST_FREE(tmp->type_defs, tp)
      database_type_del(tp);
diff --git a/src/lib/eolian/eo_definitions.h b/src/lib/eolian/eo_definitions.h
index 35af8c0..ce6c3a8 100644
--- a/src/lib/eolian/eo_definitions.h
+++ b/src/lib/eolian/eo_definitions.h
@@ -4,6 +4,8 @@
 #include <Eina.h>
 #include <Eolian.h>
 
+#include "eolian_database.h"
+
 /* RET */
 
 typedef struct _Eo_Ret_Def
@@ -122,14 +124,6 @@ typedef struct _Eo_Class_Def
    Eina_List *methods;
 } Eo_Class_Def;
 
-/* TYPE */
-
-typedef struct _Eo_Typedef_Def
-{
-   Eina_Stringshare *alias;
-   Eolian_Type *type;
-} Eo_Typedef_Def;
-
 /* TEMPS */
 
 typedef struct _Eo_Lexer_Temps
@@ -139,7 +133,7 @@ typedef struct _Eo_Lexer_Temps
    Eina_Stringshare *legacy_def;
    Eo_Class_Def *kls;
    Eo_Ret_Def *ret_def;
-   Eo_Typedef_Def *typedef_def;
+   Eolian_Typedef *typedef_def;
    Eina_List *type_defs;
    Eo_Property_Def *prop;
    Eo_Method_Def *meth;
@@ -152,7 +146,6 @@ typedef struct _Eo_Lexer_Temps
 } Eo_Lexer_Temps;
 
 void eo_definitions_class_def_free(Eo_Class_Def *kls);
-void eo_definitions_typedef_def_free(Eo_Typedef_Def *type);
 void eo_definitions_temps_free(Eo_Lexer_Temps *tmp);
 
 #endif /* __EO_DEFINITIONS_H__ */
diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c
index 60bc2b1..28332fe 100644
--- a/src/lib/eolian/eo_lexer.c
+++ b/src/lib/eolian/eo_lexer.c
@@ -5,7 +5,6 @@
 #include <assert.h>
 
 #include "eo_lexer.h"
-#include "eolian_database.h"
 
 int _eo_lexer_log_dom = -1;
 
@@ -357,10 +356,10 @@ eo_lexer_free(Eo_Lexer *ls)
              eo_definitions_class_def_free(nd->def_class);
              break;
            case NODE_TYPEDEF:
-             eo_definitions_typedef_def_free(nd->def_typedef);
+             database_typedef_del(nd->def_typedef);
              break;
            case NODE_STRUCT:
-             if (nd->def_struct) database_type_del(nd->def_struct);
+             database_type_del(nd->def_struct);
            default:
              break;
           }
diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
index e40bd38..7ada2bf 100644
--- a/src/lib/eolian/eo_lexer.h
+++ b/src/lib/eolian/eo_lexer.h
@@ -66,7 +66,7 @@ typedef struct _Eo_Node
    union {
       void           *def;
       Eo_Class_Def   *def_class;
-      Eo_Typedef_Def *def_typedef;
+      Eolian_Typedef *def_typedef;
       Eolian_Type    *def_struct;
    };
 } Eo_Node;
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 388ab59..1590d71 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -1,5 +1,4 @@
 #include "eo_parser.h"
-#include "eolian_database.h"
 
 #define CASE_LOCK(ls, var, msg) \
    if (has_##var) \
@@ -384,7 +383,7 @@ parse_type_void(Eo_Lexer *ls)
 static void
 parse_typedef(Eo_Lexer *ls)
 {
-   ls->tmp.typedef_def = calloc(1, sizeof(Eo_Typedef_Def));
+   ls->tmp.typedef_def = calloc(1, sizeof(Eolian_Typedef));
    eo_lexer_get(ls);
    check(ls, TOK_VALUE);
    ls->tmp.typedef_def->alias = eina_stringshare_add(ls->t.value);
@@ -1150,7 +1149,7 @@ _dump_class(Eo_Class_Def *kls)
 }
 
 static void
-_dump_type(Eo_Typedef_Def *type)
+_dump_type(Eolian_Typedef *type)
 {
    printf("Typedef: %s ", type->alias);
    database_type_print(type->type);
@@ -1397,11 +1396,9 @@ _db_fill_class(Eo_Class_Def *kls, const char *filename)
 }
 
 static Eina_Bool
-_db_fill_type(Eo_Typedef_Def *type_def)
+_db_fill_type(Eolian_Typedef *type_def)
 {
-   Eina_Bool ret = database_type_add(type_def->alias, type_def->type);
-   type_def->type = NULL;
-   return ret;
+   return database_type_add(type_def);
 }
 
 static Eina_Bool
@@ -1458,9 +1455,13 @@ nodeloop:
                goto error;
              break;
            case NODE_TYPEDEF:
-             if (!_db_fill_type(nd->def_typedef))
-               goto error;
-             break;
+             {
+                Eolian_Typedef *def = nd->def_typedef;
+                nd->def_typedef = NULL;
+                if (!_db_fill_type(def))
+                  goto error;
+                break;
+             }
            case NODE_STRUCT:
              {
                 Eolian_Type *def = nd->def_struct;
diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index 7239148..eb6ec72 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -10,20 +10,12 @@ Eina_Hash *_tfilenames = NULL;
 
 static int _database_init_count = 0;
 
-static void _type_hash_free_cb(void *data)
-{
-   Eolian_Typedef *type = data;
-   eina_stringshare_del(type->alias);
-   database_type_del(type->type);
-   free(type);
-}
-
 int
 database_init()
 {
    if (_database_init_count > 0) return ++_database_init_count;
    eina_init();
-   _types = eina_hash_stringshared_new(_type_hash_free_cb);
+   _types = eina_hash_stringshared_new(EINA_FREE_CB(database_typedef_del));
    _structs = eina_hash_stringshared_new(EINA_FREE_CB(database_type_del));
    _filenames = eina_hash_string_small_new(free);
    _tfilenames = eina_hash_string_small_new(free);
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index d09c6c9..5d32434 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -151,9 +151,10 @@ int database_shutdown();
 
 /* types */
 
-Eina_Bool database_type_add(const char *alias, Eolian_Type *type);
+Eina_Bool database_type_add(Eolian_Typedef *def);
 Eina_Bool database_struct_add(Eolian_Type *type);
 void database_type_del(Eolian_Type *type);
+void database_typedef_del(Eolian_Typedef *def);
 
 void database_type_print(Eolian_Type *type);
 void database_type_to_str(const Eolian_Type *tp, Eina_Strbuf *buf, const char 
*name);

-- 


Reply via email to