q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9aff32445717f6e4732a3bde2bf38816a06e6385

commit 9aff32445717f6e4732a3bde2bf38816a06e6385
Author: Daniel Kolesa <d.kol...@samsung.com>
Date:   Wed Sep 10 14:24:41 2014 +0100

    eolian: remove Eo_Param_Def, reduce allocations, simplify code
---
 src/lib/eolian/database_fill.c  | 34 +++-------------------------------
 src/lib/eolian/eo_definitions.c | 26 ++++++++------------------
 src/lib/eolian/eo_definitions.h | 15 +--------------
 src/lib/eolian/eo_parser.c      | 16 ++++++++--------
 4 files changed, 20 insertions(+), 71 deletions(-)

diff --git a/src/lib/eolian/database_fill.c b/src/lib/eolian/database_fill.c
index e972fd8..02fd52e 100644
--- a/src/lib/eolian/database_fill.c
+++ b/src/lib/eolian/database_fill.c
@@ -1,33 +1,5 @@
 #include "eo_parser.h"
 
-static void
-_db_fill_param(Eina_List **plist, Eo_Param_Def *param)
-{
-   Eolian_Function_Parameter *p = database_parameter_add(param->type,
-                                                         param->value,
-                                                         param->name,
-                                                         param->comment);
-   p->param_dir = param->way;
-   *plist = eina_list_append(*plist, p);
-   p->nonull = param->nonull;
-   param->type = NULL;
-
-   p->base = param->base;
-   param->base.file = NULL;
-}
-
-static Eina_Bool
-_db_fill_params(Eina_List *oplist, Eina_List **plist)
-{
-   Eo_Param_Def *param;
-   Eina_List *l;
-
-   EINA_LIST_FOREACH(oplist, l, param)
-     _db_fill_param(plist, param);
-
-   return EINA_TRUE;
-}
-
 static Eina_Bool
 _db_fill_accessor(Eolian_Function *foo_id, Eo_Class_Def *kls,
                   Eo_Property_Def *prop, Eo_Accessor_Def *accessor)
@@ -138,8 +110,8 @@ _db_fill_property(Eolian_Class *cl, Eo_Class_Def *kls, 
Eo_Property_Def *prop)
    foo_id->scope = prop->scope;
    foo_id->is_class = prop->is_class;
 
-   if (!_db_fill_params   (prop->keys  , &(foo_id->keys  ))) goto failure;
-   if (!_db_fill_params   (prop->values, &(foo_id->params))) goto failure;
+   foo_id->keys   = prop->keys  ; prop->keys   = NULL;
+   foo_id->params = prop->values; prop->values = NULL;
    if (!_db_fill_accessors(foo_id, kls, prop)) goto failure;
 
    if (!prop->accessors)
@@ -199,7 +171,7 @@ _db_fill_method(Eolian_Class *cl, Eo_Class_Def *kls, 
Eo_Method_Def *meth)
    if (meth->only_legacy)
      foo_id->get_only_legacy = EINA_TRUE;
 
-   _db_fill_params(meth->params, &(foo_id->params));
+   foo_id->params = meth->params; meth->params = NULL;
 
    if (kls->type == EOLIAN_CLASS_INTERFACE)
      foo_id->get_virtual_pure = EINA_TRUE;
diff --git a/src/lib/eolian/eo_definitions.c b/src/lib/eolian/eo_definitions.c
index facd883..29a2b1b 100644
--- a/src/lib/eolian/eo_definitions.c
+++ b/src/lib/eolian/eo_definitions.c
@@ -13,16 +13,6 @@ eo_definitions_ret_free(Eo_Ret_Def *ret)
 }
 
 static void
-eo_definitions_param_free(Eo_Param_Def *param)
-{
-   if (param->base.file) eina_stringshare_del(param->base.file);
-   if (param->type) database_type_del(param->type);
-   if (param->name) eina_stringshare_del(param->name);
-   if (param->comment) eina_stringshare_del(param->comment);
-   free(param);
-}
-
-static void
 eo_definitions_accessor_param_free(Eo_Accessor_Param *param)
 {
    if (param->name) eina_stringshare_del(param->name);
@@ -54,7 +44,7 @@ eo_definitions_accessor_free(Eo_Accessor_Def *accessor)
 static void
 eo_definitions_property_def_free(Eo_Property_Def *prop)
 {
-   Eo_Param_Def *param;
+   Eolian_Function_Parameter *param;
    Eo_Accessor_Def *accessor;
 
    if (prop->base.file)
@@ -64,10 +54,10 @@ eo_definitions_property_def_free(Eo_Property_Def *prop)
      eina_stringshare_del(prop->name);
 
    EINA_LIST_FREE(prop->keys, param)
-     eo_definitions_param_free(param);
+     database_parameter_del(param);
 
    EINA_LIST_FREE(prop->values, param)
-     eo_definitions_param_free(param);
+     database_parameter_del(param);
 
    EINA_LIST_FREE(prop->accessors, accessor)
      eo_definitions_accessor_free(accessor);
@@ -78,7 +68,7 @@ eo_definitions_property_def_free(Eo_Property_Def *prop)
 static void
 eo_definitions_method_def_free(Eo_Method_Def *meth)
 {
-   Eo_Param_Def *param;
+   Eolian_Function_Parameter *param;
 
    if (meth->base.file)
      eina_stringshare_del(meth->base.file);
@@ -94,7 +84,7 @@ eo_definitions_method_def_free(Eo_Method_Def *meth)
      eina_stringshare_del(meth->legacy);
 
    EINA_LIST_FREE(meth->params, param)
-     eo_definitions_param_free(param);
+     database_parameter_del(param);
 
    free(meth);
 }
@@ -148,7 +138,7 @@ void
 eo_definitions_temps_free(Eo_Lexer_Temps *tmp)
 {
    Eina_Strbuf *buf;
-   Eo_Param_Def *par;
+   Eolian_Function_Parameter *par;
    Eolian_Type *tp;
    Eolian_Variable *var;
    const char *s;
@@ -157,7 +147,7 @@ eo_definitions_temps_free(Eo_Lexer_Temps *tmp)
      eina_strbuf_free(buf);
 
    EINA_LIST_FREE(tmp->params, par)
-     eo_definitions_param_free(par);
+     database_parameter_del(par);
 
    if (tmp->legacy_def)
      eina_stringshare_del(tmp->legacy_def);
@@ -181,7 +171,7 @@ eo_definitions_temps_free(Eo_Lexer_Temps *tmp)
      eo_definitions_method_def_free(tmp->meth);
 
    if (tmp->param)
-     eo_definitions_param_free(tmp->param);
+     database_parameter_del(tmp->param);
 
    if (tmp->accessor)
      eo_definitions_accessor_free(tmp->accessor);
diff --git a/src/lib/eolian/eo_definitions.h b/src/lib/eolian/eo_definitions.h
index 67d45ce..6c3ce3e 100644
--- a/src/lib/eolian/eo_definitions.h
+++ b/src/lib/eolian/eo_definitions.h
@@ -16,19 +16,6 @@ typedef struct _Eo_Ret_Def
    Eina_Bool warn_unused:1;
 } Eo_Ret_Def;
 
-/* PARAM */
-
-typedef struct _Eo_Param_Def
-{
-   Eolian_Object base;
-   Eolian_Parameter_Dir way;
-   Eolian_Type *type;
-   Eolian_Expression *value;
-   Eina_Stringshare *name;
-   Eina_Stringshare *comment;
-   Eina_Bool nonull:1;
-} Eo_Param_Def;
-
 /* ACCESSOR */
 
 typedef enum _Eo_Accessor_Type
@@ -116,7 +103,7 @@ typedef struct _Eo_Lexer_Temps
    Eina_List *var_defs;
    Eo_Property_Def *prop;
    Eo_Method_Def *meth;
-   Eo_Param_Def *param;
+   Eolian_Function_Parameter *param;
    Eo_Accessor_Def *accessor;
    Eo_Accessor_Param *accessor_param;
    Eina_List *str_items;
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 92391cb..db4a53e 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -1134,7 +1134,7 @@ parse_return(Eo_Lexer *ls, Eina_Bool allow_void)
 static void
 parse_param(Eo_Lexer *ls, Eina_Bool allow_inout, Eina_Bool is_vals)
 {
-   Eo_Param_Def *par = calloc(1, sizeof(Eo_Param_Def));
+   Eolian_Function_Parameter *par = calloc(1, 
sizeof(Eolian_Function_Parameter));
    par->base.file = eina_stringshare_ref(ls->filename);
    par->base.line = ls->line_number;
    par->base.column = ls->column;
@@ -1143,23 +1143,23 @@ parse_param(Eo_Lexer *ls, Eina_Bool allow_inout, 
Eina_Bool is_vals)
      {
         if (ls->t.kw == KW_at_in)
           {
-             par->way = EOLIAN_IN_PARAM;
+             par->param_dir = EOLIAN_IN_PARAM;
              eo_lexer_get(ls);
           }
         else if (ls->t.kw == KW_at_out)
           {
-             par->way = EOLIAN_OUT_PARAM;
+             par->param_dir = EOLIAN_OUT_PARAM;
              eo_lexer_get(ls);
           }
         else if (ls->t.kw == KW_at_inout)
           {
-             par->way = EOLIAN_INOUT_PARAM;
+             par->param_dir = EOLIAN_INOUT_PARAM;
              eo_lexer_get(ls);
           }
         else
-           par->way = EOLIAN_IN_PARAM;
+           par->param_dir = EOLIAN_IN_PARAM;
      }
-   if (par->way == EOLIAN_OUT_PARAM || par->way == EOLIAN_INOUT_PARAM)
+   if (par->param_dir == EOLIAN_OUT_PARAM || par->param_dir == 
EOLIAN_INOUT_PARAM)
      par->type = parse_type_void(ls);
    else
      par->type = parse_type(ls);
@@ -1167,7 +1167,7 @@ parse_param(Eo_Lexer *ls, Eina_Bool allow_inout, 
Eina_Bool is_vals)
    check(ls, TOK_VALUE);
    par->name = eina_stringshare_ref(ls->t.value.s);
    eo_lexer_get(ls);
-   if ((is_vals || (par->way == EOLIAN_OUT_PARAM)) && (ls->t.token == '('))
+   if ((is_vals || (par->param_dir == EOLIAN_OUT_PARAM)) && (ls->t.token == 
'('))
      {
         int line = ls->line_number, col = ls->column;
         ls->expr_mode = EINA_TRUE;
@@ -1185,7 +1185,7 @@ parse_param(Eo_Lexer *ls, Eina_Bool allow_inout, 
Eina_Bool is_vals)
    check_next(ls, ';');
    if (ls->t.token == TOK_COMMENT)
      {
-        par->comment = eina_stringshare_ref(ls->t.value.s);
+        par->description = eina_stringshare_ref(ls->t.value.s);
         eo_lexer_get(ls);
      }
 }

-- 


Reply via email to