{
if (ret->type) eina_stringshare_del(ret->type);
if (ret->comment) eina_stringshare_del(ret->comment);
- if (ret->dflt_ret_val) free(ret->dflt_ret_val);
+ if (ret->dflt_ret_val) eina_stringshare_del(ret->dflt_ret_val);
free(ret);
}
eo_definitions_class_def_free(Eo_Class_Def *kls)
{
const char *s;
- Eina_List *l;
Eo_Property_Def *prop;
Eo_Method_Def *meth;
Eo_Event_Def *sgn;
if (kls->data_type)
eina_stringshare_del(kls->data_type);
- EINA_LIST_FOREACH(kls->inherits, l, s)
+ EINA_LIST_FREE(kls->inherits, s)
if (s) eina_stringshare_del(s);
EINA_LIST_FREE(kls->implements, impl)
free(kls);
}
+void
+eo_definitions_temps_free(Eo_Lexer_Temps *tmp)
+{
+ Eina_Strbuf *buf;
+ Eo_Param_Def *par;
+ const char *s;
+
+ EINA_LIST_FREE(tmp->str_bufs, buf)
+ eina_strbuf_free(buf);
+
+ EINA_LIST_FREE(tmp->params, par)
+ eo_definitions_param_free(par);
+
+ if (tmp->legacy_def)
+ eina_stringshare_del(tmp->legacy_def);
+
+ if (tmp->kls)
+ eo_definitions_class_def_free(tmp->kls);
+
+ if (tmp->ret_def)
+ eo_definitions_ret_free(tmp->ret_def);
+
+ if (tmp->type_def)
+ eo_definitions_type_def_free(tmp->type_def);
+
+ if (tmp->prop)
+ eo_definitions_property_def_free(tmp->prop);
+
+ if (tmp->meth)
+ eo_definitions_method_def_free(tmp->meth);
+
+ if (tmp->param)
+ eo_definitions_param_free(tmp->param);
+
+ if (tmp->accessor)
+ eo_definitions_accessor_free(tmp->accessor);
+
+ if (tmp->accessor_param)
+ eo_definitions_accessor_param_free(tmp->accessor_param);
+
+ EINA_LIST_FREE(tmp->str_items, s)
+ if (s) eina_stringshare_del(s);
+
+ if (tmp->event)
+ eo_definitions_event_def_free(tmp->event);
+
+ if (tmp->impl)
+ eo_definitions_impl_def_free(tmp->impl);
+}
{
const char *type;
const char *comment;
- char *dflt_ret_val;
+ const char *dflt_ret_val;
Eina_Bool warn_unused:1;
} Eo_Ret_Def;
typedef enum _eo_method_type {
METH_REGULAR,
METH_CONSTRUCTOR,
- METH_DESTRUCTOR,
METH_TYPE_LAST
} Eo_Method_Type;
/* IMPLEMENT */
-typedef struct _eo_implement_legacy_param_def
-{
- const char *eo_name;
- const char *legacy_name;
- const char *comment;
-} Eo_Implement_Legacy_Param_Def;
-
typedef struct _eo_implement_def
{
const char *meth_name;
const char *type;
} Eo_Type_Def;
+/* TEMPS */
+
+typedef struct _Eo_Lexer_Temps
+{
+ Eina_List *str_bufs;
+ Eina_List *params;
+ const char *legacy_def;
+ Eo_Class_Def *kls;
+ Eo_Ret_Def *ret_def;
+ Eo_Type_Def *type_def;
+ Eo_Property_Def *prop;
+ Eo_Method_Def *meth;
+ Eo_Param_Def *param;
+ Eo_Accessor_Def *accessor;
+ Eo_Accessor_Param *accessor_param;
+ Eina_List *str_items;
+ Eo_Event_Def *event;
+ Eo_Implement_Def *impl;
+} Eo_Lexer_Temps;
+
void eo_definitions_class_def_free(Eo_Class_Def *kls);
void eo_definitions_type_def_free(Eo_Type_Def *type);
+void eo_definitions_temps_free(Eo_Lexer_Temps *tmp);
#endif /* __EO_DEFINITIONS_H__ */
ret_val = malloc(end - s + 2); /* string + '\0' */
memcpy(ret_val, s, end - s + 1);
ret_val[end - s + 1] = '\0';
- ret->dflt_ret_val = ret_val;
+ ret->dflt_ret_val = eina_stringshare_add(ret_val);
+ free(ret_val);
memset(s, ' ', end - s + 1);
}
*p = ';';