From 239e7524dc30093466ee7a6c276ac9fe9c1e4d40 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Thu, 10 Jul 2014 15:23:06 +0100 Subject: [PATCH] eolian: refactoring: get rid of Eo_Implement_Def --- src/lib/eolian/database_implement.c | 11 +++++------ src/lib/eolian/eo_definitions.c | 15 +++------------ src/lib/eolian/eo_definitions.h | 9 +-------- src/lib/eolian/eo_parser.c | 22 +++++++++++----------- src/lib/eolian/eolian_database.h | 2 +- 5 files changed, 21 insertions(+), 38 deletions(-) diff --git a/src/lib/eolian/database_implement.c b/src/lib/eolian/database_implement.c index be6b5f5..68be154 100644 --- a/src/lib/eolian/database_implement.c +++ b/src/lib/eolian/database_implement.c @@ -1,11 +1,10 @@ #include #include "eolian_database.h" -Eolian_Implement * -database_implement_new(const char *impl_name) +void +database_implement_del(Eolian_Implement *impl) { - Eolian_Implement *impl_desc = calloc(1, sizeof(Eolian_Implement)); - EINA_SAFETY_ON_NULL_RETURN_VAL(impl_desc, NULL); - impl_desc->full_name = eina_stringshare_add(impl_name); - return impl_desc; + if (!impl) return; + if (impl->full_name) eina_stringshare_del(impl->full_name); + free(impl); } diff --git a/src/lib/eolian/eo_definitions.c b/src/lib/eolian/eo_definitions.c index 4bcec97..a4e0b30 100644 --- a/src/lib/eolian/eo_definitions.c +++ b/src/lib/eolian/eo_definitions.c @@ -102,15 +102,6 @@ eo_definitions_event_def_free(Eo_Event_Def *sgn) free(sgn); } -static void -eo_definitions_impl_def_free(Eo_Implement_Def *impl) -{ - if (impl->meth_name) - eina_stringshare_del(impl->meth_name); - - free(impl); -} - void eo_definitions_class_def_free(Eo_Class_Def *kls) { @@ -118,7 +109,7 @@ eo_definitions_class_def_free(Eo_Class_Def *kls) Eo_Property_Def *prop; Eo_Method_Def *meth; Eo_Event_Def *sgn; - Eo_Implement_Def *impl; + Eolian_Implement *impl; if (kls->name) eina_stringshare_del(kls->name); @@ -135,7 +126,7 @@ eo_definitions_class_def_free(Eo_Class_Def *kls) if (s) eina_stringshare_del(s); EINA_LIST_FREE(kls->implements, impl) - eo_definitions_impl_def_free(impl); + database_implement_del(impl); EINA_LIST_FREE(kls->constructors, meth) eo_definitions_method_def_free(meth); @@ -203,5 +194,5 @@ eo_definitions_temps_free(Eo_Lexer_Temps *tmp) eo_definitions_event_def_free(tmp->event); if (tmp->impl) - eo_definitions_impl_def_free(tmp->impl); + database_implement_del(tmp->impl); } diff --git a/src/lib/eolian/eo_definitions.h b/src/lib/eolian/eo_definitions.h index ce6c3a8..c27ae9f 100644 --- a/src/lib/eolian/eo_definitions.h +++ b/src/lib/eolian/eo_definitions.h @@ -99,13 +99,6 @@ typedef struct _Eo_Event_Def Eina_Stringshare *comment; } Eo_Event_Def; -/* IMPLEMENT */ - -typedef struct _Eo_Implement_Def -{ - Eina_Stringshare *meth_name; -} Eo_Implement_Def; - /* CLASS */ typedef struct _Eo_Class_Def @@ -142,7 +135,7 @@ typedef struct _Eo_Lexer_Temps Eo_Accessor_Param *accessor_param; Eina_List *str_items; Eo_Event_Def *event; - Eo_Implement_Def *impl; + Eolian_Implement *impl; } Eo_Lexer_Temps; void eo_definitions_class_def_free(Eo_Class_Def *kls); diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 1590d71..61f9129 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -705,9 +705,9 @@ static void parse_implement(Eo_Lexer *ls, Eina_Bool iface) { Eina_Strbuf *buf = NULL; - Eo_Implement_Def *impl = NULL; + Eolian_Implement *impl = NULL; buf = push_strbuf(ls); - impl = calloc(1, sizeof(Eo_Implement_Def)); + impl = calloc(1, sizeof(Eolian_Implement)); ls->tmp.impl = impl; if (iface) check_kw(ls, KW_class); @@ -727,7 +727,7 @@ parse_implement(Eo_Lexer *ls, Eina_Bool iface) eina_strbuf_append(buf, "constructor"); } check_next(ls, ';'); - impl->meth_name = eina_stringshare_add(eina_strbuf_string_get(buf)); + impl->full_name = eina_stringshare_add(eina_strbuf_string_get(buf)); pop_strbuf(ls); return; } @@ -755,7 +755,7 @@ parse_implement(Eo_Lexer *ls, Eina_Bool iface) } } check_next(ls, ';'); - impl->meth_name = eina_stringshare_add(eina_strbuf_string_get(buf)); + impl->full_name = eina_stringshare_add(eina_strbuf_string_get(buf)); pop_strbuf(ls); return; } @@ -790,7 +790,7 @@ parse_implement(Eo_Lexer *ls, Eina_Bool iface) } end: check_next(ls, ';'); - impl->meth_name = eina_stringshare_add(eina_strbuf_string_get(buf)); + impl->full_name = eina_stringshare_add(eina_strbuf_string_get(buf)); pop_strbuf(ls); } @@ -1070,7 +1070,7 @@ _dump_class(Eo_Class_Def *kls) Eo_Param_Def *param; Eo_Accessor_Def *accessor; Eo_Event_Def *sgn; - Eo_Implement_Def *impl; + Eolian_Implement *impl; printf("Class: %s (%s)\n", kls->name, (kls->comment ? kls->comment : "-")); @@ -1080,7 +1080,7 @@ _dump_class(Eo_Class_Def *kls) printf("\n"); printf(" implements:"); EINA_LIST_FOREACH(kls->implements, l, impl) - printf(" %s", impl->meth_name); + printf(" %s", impl->full_name); printf("\n"); printf(" events:\n"); EINA_LIST_FOREACH(kls->events, l, sgn) @@ -1208,7 +1208,7 @@ _db_fill_class(Eo_Class_Def *kls, const char *filename) Eo_Param_Def *param; Eo_Accessor_Def *accessor; Eo_Event_Def *event; - Eo_Implement_Def *impl; + Eolian_Implement *impl; Eolian_Class *class = database_class_add(kls->name, kls->type); Eina_Bool is_iface = (kls->type == EOLIAN_CLASS_INTERFACE); @@ -1345,7 +1345,7 @@ _db_fill_class(Eo_Class_Def *kls, const char *filename) EINA_LIST_FOREACH(kls->implements, l, impl) { - const char *impl_name = impl->meth_name; + const char *impl_name = impl->full_name; if (!strcmp(impl_name, "class.constructor")) { database_class_ctor_enable_set(class, EINA_TRUE); @@ -1382,8 +1382,8 @@ _db_fill_class(Eo_Class_Def *kls, const char *filename) database_function_set_as_virtual_pure(foo_id, ftype); continue; } - Eolian_Implement *impl_desc = database_implement_new(impl_name); - database_class_implement_add(class, impl_desc); + database_class_implement_add(class, impl); + eina_list_data_set(l, NULL); /* prevent double free */ } EINA_LIST_FOREACH(kls->events, l, event) diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index 5d32434..bd14647 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -211,7 +211,7 @@ void database_parameter_nonull_set(Eolian_Function_Parameter *param, Eina_Bool n /* implements */ -Eolian_Implement *database_implement_new(const char *impl_name); +void database_implement_del(Eolian_Implement *impl); /* events */ -- 2.7.4