summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2018-02-23 15:25:32 +0100
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2018-02-23 15:25:55 +0100
commit39820fb5f58ea9528982d8ee63f37be0639f57a1 (patch)
tree768e6f55f4281428421404e4ccb8a74c4fd3fe51
parent1a7dabeb74fa6a039b431b0e8442f43ead15282e (diff)
downloadefl-39820fb5f58ea9528982d8ee63f37be0639f57a1.tar.gz
eolian: simplify adding/refcounting objects
-rw-r--r--src/lib/eolian/database_type.c9
-rw-r--r--src/lib/eolian/database_var.c6
-rw-r--r--src/lib/eolian/eo_parser.c3
-rw-r--r--src/lib/eolian/eolian_database.c3
-rw-r--r--src/lib/eolian/eolian_database.h6
5 files changed, 13 insertions, 14 deletions
diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c
index 052a2ea577..1b881be415 100644
--- a/src/lib/eolian/database_type.c
+++ b/src/lib/eolian/database_type.c
@@ -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);
diff --git a/src/lib/eolian/database_var.c b/src/lib/eolian/database_var.c
index c33df7261d..4afc703277 100644
--- a/src/lib/eolian/database_var.c
+++ b/src/lib/eolian/database_var.c
@@ -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);
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 7d9eaad525..6ed90395d3 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -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:
diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index e5b816e18f..ab58486b46 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -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));
}
diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h
index 3e87e9c933..58fd1c8d16 100644
--- a/src/lib/eolian/eolian_database.h
+++ b/src/lib/eolian/eolian_database.h
@@ -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;