eolian: add some stuff into eo_definitions needed for the new parser and temporarily...
authorDaniel Kolesa <d.kolesa@samsung.com>
Wed, 18 Jun 2014 09:17:19 +0000 (10:17 +0100)
committerDaniel Kolesa <d.kolesa@samsung.com>
Thu, 19 Jun 2014 15:04:08 +0000 (16:04 +0100)
src/lib/eolian/eo_definitions.c
src/lib/eolian/eo_definitions.h
src/lib/eolian/eo_lexer.c
src/lib/eolian/eo_lexer.h

index a5423b1..76b728a 100644 (file)
@@ -8,7 +8,7 @@ eo_definitions_ret_free(Eo_Ret_Def *ret)
 {
    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);
 }
 
@@ -127,7 +127,6 @@ void
 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;
@@ -144,7 +143,7 @@ eo_definitions_class_def_free(Eo_Class_Def *kls)
    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)
@@ -165,3 +164,52 @@ eo_definitions_class_def_free(Eo_Class_Def *kls)
    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);
+}
index 56f7401..90c2849 100644 (file)
@@ -10,7 +10,7 @@ typedef struct _eo_ret_def
 {
    const char *type;
    const char *comment;
-   char *dflt_ret_val;
+   const char *dflt_ret_val;
    Eina_Bool warn_unused:1;
 } Eo_Ret_Def;
 
@@ -73,7 +73,6 @@ typedef struct _eo_property_def
 typedef enum _eo_method_type {
      METH_REGULAR,
      METH_CONSTRUCTOR,
-     METH_DESTRUCTOR,
      METH_TYPE_LAST
 } Eo_Method_Type;
 
@@ -100,13 +99,6 @@ typedef struct _eo_event_def
 
 /* 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;
@@ -138,7 +130,28 @@ typedef struct _eo_type_def
    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__ */
index 629ce57..d56cb41 100644 (file)
@@ -301,7 +301,8 @@ _eo_tokenizer_return_get(Eo_Lexer *toknz, char *p)
         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 = ';';
index 9ca6ab3..e015d65 100644 (file)
@@ -49,7 +49,6 @@ typedef struct _eo_tokenizer
       Eina_List *str_items;
       Eo_Event_Def *event;
       Eo_Implement_Def *impl;
-      Eo_Implement_Legacy_Param_Def *impl_leg_param;
       int fscope;
    } tmp;