eolian: refactoring: get rid of Eo_Event_Def
authorDaniel Kolesa <d.kolesa@samsung.com>
Thu, 10 Jul 2014 14:31:01 +0000 (15:31 +0100)
committerDaniel Kolesa <d.kolesa@samsung.com>
Thu, 10 Jul 2014 14:31:01 +0000 (15:31 +0100)
src/lib/eolian/database_event.c
src/lib/eolian/eo_definitions.c
src/lib/eolian/eo_definitions.h
src/lib/eolian/eo_parser.c

index 8608880..f51a408 100644 (file)
@@ -1,22 +1,12 @@
 #include <Eina.h>
 #include "eolian_database.h"
 
-Eolian_Event *
-database_event_new(const char *event_name, const char *event_type, const char *event_comment)
-{
-   if (!event_name) return NULL;
-   Eolian_Event *event_desc = calloc(1, sizeof(Eolian_Event));
-   if (!event_desc) return NULL;
-   event_desc->name = eina_stringshare_add(event_name);
-   if (event_type) event_desc->type = eina_stringshare_add(event_type);
-   event_desc->comment = eina_stringshare_add(event_comment);
-   return event_desc;
-}
-
 void
 database_event_del(Eolian_Event *event)
 {
-   eina_stringshare_del(event->name);
-   eina_stringshare_del(event->comment);
+   if (!event) return;
+   if (event->name) eina_stringshare_del(event->name);
+   if (event->type) eina_stringshare_del(event->type);
+   if (event->comment) eina_stringshare_del(event->comment);
    free(event);
 }
index a4e0b30..6ac981d 100644 (file)
@@ -89,26 +89,13 @@ eo_definitions_method_def_free(Eo_Method_Def *meth)
    free(meth);
 }
 
-static void
-eo_definitions_event_def_free(Eo_Event_Def *sgn)
-{
-   if (sgn->name)
-     eina_stringshare_del(sgn->name);
-   if (sgn->type)
-     eina_stringshare_del(sgn->type);
-   if (sgn->comment)
-     eina_stringshare_del(sgn->comment);
-
-   free(sgn);
-}
-
 void
 eo_definitions_class_def_free(Eo_Class_Def *kls)
 {
    const char *s;
    Eo_Property_Def *prop;
    Eo_Method_Def *meth;
-   Eo_Event_Def *sgn;
+   Eolian_Event *sgn;
    Eolian_Implement *impl;
 
    if (kls->name)
@@ -138,7 +125,7 @@ eo_definitions_class_def_free(Eo_Class_Def *kls)
      eo_definitions_method_def_free(meth);
 
    EINA_LIST_FREE(kls->events, sgn)
-     eo_definitions_event_def_free(sgn);
+     database_event_del(sgn);
 
    free(kls);
 }
@@ -191,7 +178,7 @@ eo_definitions_temps_free(Eo_Lexer_Temps *tmp)
      if (s) eina_stringshare_del(s);
 
    if (tmp->event)
-     eo_definitions_event_def_free(tmp->event);
+     database_event_del(tmp->event);
 
    if (tmp->impl)
      database_implement_del(tmp->impl);
index c27ae9f..7f96d3b 100644 (file)
@@ -90,15 +90,6 @@ typedef struct _Eo_Method_Def
    int scope;
 } Eo_Method_Def;
 
-/* SIGNAL */
-
-typedef struct _Eo_Event_Def
-{
-   Eina_Stringshare *name;
-   Eina_Stringshare *type;
-   Eina_Stringshare *comment;
-} Eo_Event_Def;
-
 /* CLASS */
 
 typedef struct _Eo_Class_Def
@@ -134,7 +125,7 @@ typedef struct _Eo_Lexer_Temps
    Eo_Accessor_Def *accessor;
    Eo_Accessor_Param *accessor_param;
    Eina_List *str_items;
-   Eo_Event_Def *event;
+   Eolian_Event *event;
    Eolian_Implement *impl;
 } Eo_Lexer_Temps;
 
index 61f9129..6a8a01c 100644 (file)
@@ -797,7 +797,7 @@ end:
 static void
 parse_event(Eo_Lexer *ls)
 {
-   Eo_Event_Def *ev = calloc(1, sizeof(Eo_Event_Def));
+   Eolian_Event *ev = calloc(1, sizeof(Eolian_Event));
    ls->tmp.event = ev;
    /* code path not in use yet
    if (ls->t.kw == KW_private)
@@ -1069,7 +1069,7 @@ _dump_class(Eo_Class_Def *kls)
    Eo_Method_Def *meth;
    Eo_Param_Def *param;
    Eo_Accessor_Def *accessor;
-   Eo_Event_Def *sgn;
+   Eolian_Event *sgn;
    Eolian_Implement *impl;
 
    printf("Class: %s (%s)\n",
@@ -1207,7 +1207,7 @@ _db_fill_class(Eo_Class_Def *kls, const char *filename)
    Eo_Method_Def *meth;
    Eo_Param_Def *param;
    Eo_Accessor_Def *accessor;
-   Eo_Event_Def *event;
+   Eolian_Event *event;
    Eolian_Implement *impl;
 
    Eolian_Class *class = database_class_add(kls->name, kls->type);
@@ -1388,8 +1388,8 @@ _db_fill_class(Eo_Class_Def *kls, const char *filename)
 
    EINA_LIST_FOREACH(kls->events, l, event)
      {
-        Eolian_Event *ev = database_event_new(event->name, event->type, event->comment);
-        database_class_event_add(class, ev);
+        database_class_event_add(class, event);
+        eina_list_data_set(l, NULL); /* prevent double free */
      }
 
    return EINA_TRUE;