#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);
}
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)
eo_definitions_method_def_free(meth);
EINA_LIST_FREE(kls->events, sgn)
- eo_definitions_event_def_free(sgn);
+ database_event_del(sgn);
free(kls);
}
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);
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
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;
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)
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",
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);
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;