eolian: simplify adding/refcounting objects
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Fri, 23 Feb 2018 14:25:32 +0000 (15:25 +0100)
committerWonki Kim <wonki_.kim@samsung.com>
Tue, 10 Apr 2018 11:10:37 +0000 (20:10 +0900)
src/lib/eolian/database_type.c
src/lib/eolian/database_var.c
src/lib/eolian/eo_parser.c
src/lib/eolian/eolian_database.c
src/lib/eolian/eolian_database.h

index 052a2ea..1b881be 100644 (file)
@@ -43,8 +43,7 @@ database_typedecl_del(Eolian_Typedecl *tp)
 void
 database_type_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
-   eolian_object_add(&tp->base, tp->full_name, unit->state->unit.aliases);
-   eolian_object_add(&tp->base, tp->full_name, unit->aliases);
+   EOLIAN_OBJECT_ADD(unit, tp->full_name, tp, 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));
@@ -54,8 +53,7 @@ database_type_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 void
 database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
-   eolian_object_add(&tp->base, tp->full_name, unit->state->unit.structs);
-   eolian_object_add(&tp->base, tp->full_name, unit->structs);
+   EOLIAN_OBJECT_ADD(unit, tp->full_name, tp, 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, tp->full_name, EOLIAN_DECL_STRUCT, tp->base.file, tp);
@@ -64,8 +62,7 @@ database_struct_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 void
 database_enum_add(Eolian_Unit *unit, Eolian_Typedecl *tp)
 {
-   eolian_object_add(&tp->base, tp->full_name, unit->state->unit.enums);
-   eolian_object_add(&tp->base, tp->full_name, unit->enums);
+   EOLIAN_OBJECT_ADD(unit, tp->full_name, tp, 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, tp->full_name, EOLIAN_DECL_ENUM, tp->base.file, tp);
index c33df72..4afc703 100644 (file)
@@ -25,8 +25,7 @@ database_var_del(Eolian_Variable *var)
 static void
 database_var_global_add(Eolian_Unit *unit, Eolian_Variable *var)
 {
-   eolian_object_add(&var->base, var->full_name, unit->state->unit.globals);
-   eolian_object_add(&var->base, var->full_name, unit->globals);
+   EOLIAN_OBJECT_ADD(unit, var->full_name, var, globals);
    eina_hash_set(unit->state->globals_f, var->base.file, eina_list_append
                  ((Eina_List*)eina_hash_find(unit->state->globals_f, var->base.file), var));
    database_decl_add(unit, var->full_name, EOLIAN_DECL_VAR, var->base.file, var);
@@ -35,8 +34,7 @@ database_var_global_add(Eolian_Unit *unit, Eolian_Variable *var)
 static void
 database_var_constant_add(Eolian_Unit *unit, Eolian_Variable *var)
 {
-   eolian_object_add(&var->base, var->full_name, unit->state->unit.constants);
-   eolian_object_add(&var->base, var->full_name, unit->constants);
+    EOLIAN_OBJECT_ADD(unit, var->full_name, var, constants);
    eina_hash_set(unit->state->constants_f, var->base.file, eina_list_append
                  ((Eina_List*)eina_hash_find(unit->state->constants_f, var->base.file), var));
    database_decl_add(unit, var->full_name, EOLIAN_DECL_VAR, var->base.file, var);
index 7d9eaad..6ed9039 100644 (file)
@@ -2285,8 +2285,7 @@ eo_parser_database_fill(Eolian_Unit *parent, const char *filename, Eina_Bool eot
      }
    ls->tmp.kls = NULL;
 
-   eolian_object_add(&cl->base, cl->full_name, ls->unit->classes);
-   eolian_object_add(&cl->base, cl->full_name, ls->state->unit.classes);
+   EOLIAN_OBJECT_ADD(ls->unit, cl->full_name, cl, classes);
    eina_hash_set(ls->state->classes_f, cl->base.file, cl);
 
 done:
index e5b816e..ab58486 100644 (file)
@@ -20,8 +20,7 @@ database_decl_add(Eolian_Unit *unit, Eina_Stringshare *name,
    decl->type = type;
    decl->name = name;
    decl->data = ptr;
-   eolian_object_add(&decl->base, name, unit->state->unit.decls);
-   eolian_object_add(&decl->base, name, unit->decls);
+   EOLIAN_OBJECT_ADD(unit, name, decl, decls);
    eina_hash_set(unit->state->decls_f, file, eina_list_append
                  ((Eina_List*)eina_hash_find(unit->state->decls_f, file), decl));
 }
index 3e87e9c..58fd1c8 100644 (file)
@@ -91,6 +91,12 @@ eolian_object_add(Eolian_Object *obj, Eina_Stringshare *name, Eina_Hash *hash)
    eolian_object_ref(obj);
 }
 
+#define EOLIAN_OBJECT_ADD(tunit, name, obj, memb) \
+{ \
+   eolian_object_add(&obj->base, name, tunit->state->unit.memb); \
+   eolian_object_add(&obj->base, name, tunit->memb); \
+}
+
 struct _Eolian_Documentation
 {
    Eolian_Object base;