q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=665b88204cae45a9aae7c1bdcdd4fbf1e2ac6fcb

commit 665b88204cae45a9aae7c1bdcdd4fbf1e2ac6fcb
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Wed Feb 21 17:59:39 2018 +0100

    eolian: store types/typedecls in units
---
 src/lib/eolian/database_type.c   | 35 +++++++++++++++++++----------------
 src/lib/eolian/eo_parser.c       | 12 +++++-------
 src/lib/eolian/eolian_database.h |  6 +++---
 3 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c
index 29da94cc86..d8954ec5ae 100644
--- a/src/lib/eolian/database_type.c
+++ b/src/lib/eolian/database_type.c
@@ -41,31 +41,34 @@ database_typedecl_del(Eolian_Typedecl *tp)
 }
 
 void
-database_type_add(Eolian *state, Eolian_Typedecl *def)
+database_type_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
-   eina_hash_set(state->unit.aliases, def->full_name, def);
-   eina_hash_set(state->aliases_f, def->base.file, eina_list_append
-                ((Eina_List*)eina_hash_find(state->aliases_f, def->base.file),
-                def));
-   database_decl_add(state, def->full_name, EOLIAN_DECL_ALIAS, def->base.file, 
def);
+   eolian_object_add(&tp->base, tp->full_name, unit->state->unit.aliases);
+   eolian_object_add(&tp->base, tp->full_name, unit->aliases);
+   eina_hash_set(unit->state->aliases_f, tp->base.file, eina_list_append
+                ((Eina_List*)eina_hash_find(unit->state->aliases_f, 
tp->base.file),
+                tp));
+   database_decl_add(unit->state, tp->full_name, EOLIAN_DECL_ALIAS, 
tp->base.file, tp);
 }
 
 void
-database_struct_add(Eolian *state, Eolian_Typedecl *tp)
+database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
-   eina_hash_set(state->unit.structs, tp->full_name, tp);
-   eina_hash_set(state->structs_f, tp->base.file, eina_list_append
-                ((Eina_List*)eina_hash_find(state->structs_f, tp->base.file), 
tp));
-   database_decl_add(state, tp->full_name, EOLIAN_DECL_STRUCT, tp->base.file, 
tp);
+   eolian_object_add(&tp->base, tp->full_name, unit->state->unit.structs);
+   eolian_object_add(&tp->base, tp->full_name, unit->structs);
+   eina_hash_set(unit->state->structs_f, tp->base.file, eina_list_append
+                ((Eina_List*)eina_hash_find(unit->state->structs_f, 
tp->base.file), tp));
+   database_decl_add(unit->state, tp->full_name, EOLIAN_DECL_STRUCT, 
tp->base.file, tp);
 }
 
 void
-database_enum_add(Eolian *state, Eolian_Typedecl *tp)
+database_enum_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
-   eina_hash_set(state->unit.enums, tp->full_name, tp);
-   eina_hash_set(state->enums_f, tp->base.file, eina_list_append
-                ((Eina_List*)eina_hash_find(state->enums_f, tp->base.file), 
tp));
-   database_decl_add(state, tp->full_name, EOLIAN_DECL_ENUM, tp->base.file, 
tp);
+   eolian_object_add(&tp->base, tp->full_name, unit->state->unit.enums);
+   eolian_object_add(&tp->base, tp->full_name, unit->enums);
+   eina_hash_set(unit->state->enums_f, tp->base.file, eina_list_append
+                ((Eina_List*)eina_hash_find(unit->state->enums_f, 
tp->base.file), tp));
+   database_decl_add(unit->state, tp->full_name, EOLIAN_DECL_ENUM, 
tp->base.file, tp);
 }
 
 Eina_Bool
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 3f888c5dc7..4a4757a949 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -131,14 +131,12 @@ push_typedecl(Eo_Lexer *ls)
 static void
 pop_type(Eo_Lexer *ls)
 {
-   eolian_object_ref((Eolian_Object *)eina_list_data_get(ls->tmp.type_defs));
    ls->tmp.type_defs = eina_list_remove_list(ls->tmp.type_defs, 
ls->tmp.type_defs);
 }
 
 static void
 pop_typedecl(Eo_Lexer *ls)
 {
-   eolian_object_ref((Eolian_Object *)eina_list_data_get(ls->tmp.type_decls));
    ls->tmp.type_decls = eina_list_remove_list(ls->tmp.type_decls, 
ls->tmp.type_decls);
 }
 
@@ -528,7 +526,7 @@ parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool 
is_extern,
      }
    check_match(ls, '}', '{', bline, bcolumn);
    FILL_BASE(def->base, ls, line, column);
-   if (name) database_struct_add(ls->state, def);
+   if (name) database_struct_add(ls->unit, def);
    return def;
 }
 
@@ -640,7 +638,7 @@ parse_enum(Eo_Lexer *ls, const char *name, Eina_Bool 
is_extern,
      }
    check_match(ls, '}', '{', bline, bcolumn);
    FILL_BASE(def->base, ls, line, column);
-   if (name) database_enum_add(ls->state, def);
+   if (name) database_enum_add(ls->unit, def);
    return def;
 }
 
@@ -2154,13 +2152,13 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot)
         }
       case KW_type:
         {
-           database_type_add(ls->state, parse_typedef(ls));
+           database_type_add(ls->unit, parse_typedef(ls));
            pop_typedecl(ls);
            break;
         }
       case KW_function:
         {
-           database_type_add(ls->state, parse_function_pointer(ls));
+           database_type_add(ls->unit, parse_function_pointer(ls));
            pop_typedecl(ls);
            break;
         }
@@ -2210,7 +2208,7 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot)
                 eo_lexer_get(ls);
                 FILL_DOC(ls, def, doc);
                 FILL_BASE(def->base, ls, line, col);
-                database_struct_add(ls->state, def);
+                database_struct_add(ls->unit, def);
                 pop_typedecl(ls);
                 break;
              }
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index e7ae5f1bb3..c8cc6dd0fb 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -344,9 +344,9 @@ void database_unit_del(Eolian_Unit *unit);
 
 /* types */
 
-void database_type_add(Eolian *state, Eolian_Typedecl *def);
-void database_struct_add(Eolian *state, Eolian_Typedecl *tp);
-void database_enum_add(Eolian *state, Eolian_Typedecl *tp);
+void database_type_add(Eolian_Unit *unit, Eolian_Typedecl *tp);
+void database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp);
+void database_enum_add(Eolian_Unit *unit, Eolian_Typedecl *tp);
 void database_type_del(Eolian_Type *tp);
 void database_typedecl_del(Eolian_Typedecl *tp);
 

-- 


Reply via email to