eolian: commit all changes into staging area first
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Thu, 22 Mar 2018 17:01:31 +0000 (18:01 +0100)
committerWonki Kim <wonki_.kim@samsung.com>
Tue, 10 Apr 2018 11:22:02 +0000 (20:22 +0900)
src/lib/eolian/database_type.c
src/lib/eolian/database_var.c
src/lib/eolian/eo_lexer.c
src/lib/eolian/eo_parser.c
src/lib/eolian/eolian_database.c

index ffdf5eb..eec9621 100644 (file)
@@ -36,8 +36,8 @@ void
 database_type_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
    EOLIAN_OBJECT_ADD(unit, tp->base.name, tp, aliases);
-   eina_hash_set(unit->state->main.aliases_f, tp->base.file, eina_list_append
-                ((Eina_List*)eina_hash_find(unit->state->main.aliases_f, tp->base.file),
+   eina_hash_set(unit->state->staging.aliases_f, tp->base.file, eina_list_append
+                ((Eina_List*)eina_hash_find(unit->state->staging.aliases_f, tp->base.file),
                 tp));
    database_object_add(unit, &tp->base);
 }
@@ -46,8 +46,8 @@ void
 database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
    EOLIAN_OBJECT_ADD(unit, tp->base.name, tp, structs);
-   eina_hash_set(unit->state->main.structs_f, tp->base.file, eina_list_append
-                ((Eina_List*)eina_hash_find(unit->state->main.structs_f, tp->base.file), tp));
+   eina_hash_set(unit->state->staging.structs_f, tp->base.file, eina_list_append
+                ((Eina_List*)eina_hash_find(unit->state->staging.structs_f, tp->base.file), tp));
    database_object_add(unit, &tp->base);
 }
 
@@ -55,8 +55,8 @@ void
 database_enum_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
    EOLIAN_OBJECT_ADD(unit, tp->base.name, tp, enums);
-   eina_hash_set(unit->state->main.enums_f, tp->base.file, eina_list_append
-                ((Eina_List*)eina_hash_find(unit->state->main.enums_f, tp->base.file), tp));
+   eina_hash_set(unit->state->staging.enums_f, tp->base.file, eina_list_append
+                ((Eina_List*)eina_hash_find(unit->state->staging.enums_f, tp->base.file), tp));
    database_object_add(unit, &tp->base);
 }
 
index c14859b..a6eea20 100644 (file)
@@ -22,16 +22,16 @@ static void
 database_var_global_add(Eolian_Unit *unit, Eolian_Variable *var)
 {
    EOLIAN_OBJECT_ADD(unit, var->base.name, var, globals);
-   eina_hash_set(unit->state->main.globals_f, var->base.file, eina_list_append
-                 ((Eina_List*)eina_hash_find(unit->state->main.globals_f, var->base.file), var));
+   eina_hash_set(unit->state->staging.globals_f, var->base.file, eina_list_append
+                 ((Eina_List*)eina_hash_find(unit->state->staging.globals_f, var->base.file), var));
 }
 
 static void
 database_var_constant_add(Eolian_Unit *unit, Eolian_Variable *var)
 {
    EOLIAN_OBJECT_ADD(unit, var->base.name, var, constants);
-   eina_hash_set(unit->state->main.constants_f, var->base.file, eina_list_append
-                 ((Eina_List*)eina_hash_find(unit->state->main.constants_f, var->base.file), var));
+   eina_hash_set(unit->state->staging.constants_f, var->base.file, eina_list_append
+                 ((Eina_List*)eina_hash_find(unit->state->staging.constants_f, var->base.file), var));
 }
 
 void
index d4e6815..507d18a 100644 (file)
@@ -1089,7 +1089,7 @@ eo_lexer_set_input(Eo_Lexer *ls, Eolian_State *state, const char *source)
      }
    ls->unit = ncunit;
    database_unit_init(state, ncunit, ls->filename);
-   eina_hash_add(state->main.units, ls->filename, ncunit);
+   eina_hash_add(state->staging.units, ls->filename, ncunit);
 
    if (ls->current != 0xEF)
      return;
index 0c92288..626acaf 100644 (file)
@@ -2207,6 +2207,8 @@ eo_parser_database_fill(Eolian_Unit *parent, const char *filename, Eina_Bool eot
      fname = eina_stringshare_add(filename);
 
    Eolian_Unit *ret = eina_hash_find(parent->state->main.units, fname);
+   if (!ret)
+     ret = eina_hash_find(parent->state->staging.units, fname);
 
    if (ret)
      {
@@ -2241,7 +2243,7 @@ eo_parser_database_fill(Eolian_Unit *parent, const char *filename, Eina_Bool eot
      }
    ls->klass = NULL;
    EOLIAN_OBJECT_ADD(ls->unit, cl->base.name, cl, classes);
-   eina_hash_set(ls->state->main.classes_f, cl->base.file, cl);
+   eina_hash_set(ls->state->staging.classes_f, cl->base.file, cl);
    eo_lexer_node_release(ls, &cl->base);
 
 done:
index 19e6ef7..5ae0cc8 100644 (file)
@@ -14,8 +14,8 @@ database_object_add(Eolian_Unit *unit, const Eolian_Object *obj)
    /* object storage */
    eina_hash_add(unit->objects, obj->name, obj);
    eina_hash_add(unit->state->staging.unit.objects, obj->name, obj);
-   eina_hash_set(unit->state->main.objects_f, obj->file, eina_list_append
-                 ((Eina_List *)eina_hash_find(unit->state->main.objects_f, obj->file), obj));
+   eina_hash_set(unit->state->staging.objects_f, obj->file, eina_list_append
+                 ((Eina_List *)eina_hash_find(unit->state->staging.objects_f, obj->file), obj));
 }
 
 EAPI Eolian_Object_Type