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); } } --