q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8631212e454a26ddd51bdf9a2d6c9090fa23b36f
commit 8631212e454a26ddd51bdf9a2d6c9090fa23b36f Author: Daniel Kolesa <[email protected]> Date: Thu Sep 25 15:37:18 2014 +0100 eolian: remove the need to pass prefix to eolian_function_full_c_name_get --- src/bin/eolian/common_funcs.c | 5 +---- src/bin/eolian/eo_generator.c | 2 +- src/lib/eolian/Eolian.h | 4 ++-- src/lib/eolian/database_function_api.c | 16 +++++++++++++++- src/lib/eolian/eo_parser.c | 2 ++ src/lib/eolian/eolian_database.h | 1 + 6 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/bin/eolian/common_funcs.c b/src/bin/eolian/common_funcs.c index faa52bb..4bfd303 100644 --- a/src/bin/eolian/common_funcs.c +++ b/src/bin/eolian/common_funcs.c @@ -98,12 +98,9 @@ _class_func_env_create(const Eolian_Class *class, const char *funcname, Eolian_F p = strncpy(env->upper_func, funcname, PATH_MAX - 1); eina_str_toupper(&p); - ret = eolian_function_full_c_name_get(funcid, tmp_env.upper_eo_prefix); + ret = eolian_function_full_c_name_get(funcid); sprintf(p = env->upper_eo_func, "%s%s", ret, suffix); eina_str_toupper(&p); - eina_stringshare_del(ret); - - ret = eolian_function_full_c_name_get(funcid, tmp_env.lower_eo_prefix); sprintf(p = env->lower_eo_func, "%s%s", ret, suffix); eina_str_tolower(&p); eina_stringshare_del(ret); diff --git a/src/bin/eolian/eo_generator.c b/src/bin/eolian/eo_generator.c index 31431ab..5255c9f 100644 --- a/src/bin/eolian/eo_generator.c +++ b/src/bin/eolian/eo_generator.c @@ -807,7 +807,7 @@ eo_source_end_generate(const Eolian_Class *class, Eina_Strbuf *buf) goto end; } - rets = eolian_function_full_c_name_get(fnid, impl_env.lower_eo_prefix); + rets = eolian_function_full_c_name_get(fnid); const char *class_str = ""; if (eolian_function_is_class(fnid)) class_str = "CLASS_"; diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index 3331071..0fcecd8 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -728,7 +728,7 @@ EAPI Eolian_Object_Scope eolian_function_scope_get(const Eolian_Function *functi EAPI Eina_Stringshare *eolian_function_name_get(const Eolian_Function *function_id); /* - * @brief Returns the full C name of a function (with prefix). + * @brief Returns the full C name of a function. * * @param[in] function_id Id of the function * @return the function name @@ -740,7 +740,7 @@ EAPI Eina_Stringshare *eolian_function_name_get(const Eolian_Function *function_ * * @ingroup Eolian */ -EAPI Eina_Stringshare *eolian_function_full_c_name_get(const Eolian_Function *function_id, const char *prefix); +EAPI Eina_Stringshare *eolian_function_full_c_name_get(const Eolian_Function *function_id); /* * @brief Get a function in a class by its name and type diff --git a/src/lib/eolian/database_function_api.c b/src/lib/eolian/database_function_api.c index 2fe0ae3..95bf12c 100644 --- a/src/lib/eolian/database_function_api.c +++ b/src/lib/eolian/database_function_api.c @@ -26,9 +26,23 @@ eolian_function_name_get(const Eolian_Function *fid) return fid->name; } +static const char * +get_eo_prefix(const Eolian_Function *foo_id, char *buf) +{ + char *tmp = buf; + if (foo_id->klass->eo_prefix) + return foo_id->klass->eo_prefix; + strcpy(buf, foo_id->klass->full_name); + eina_str_tolower(&buf); + while ((tmp = strchr(tmp, '.'))) *tmp = '_'; + return buf; +} + EAPI Eina_Stringshare * -eolian_function_full_c_name_get(const Eolian_Function *foo_id, const char *prefix) +eolian_function_full_c_name_get(const Eolian_Function *foo_id) { + char tbuf[512]; + const char *prefix = get_eo_prefix(foo_id, tbuf); const char *funcn = eolian_function_name_get(foo_id); const char *last_p = strrchr(prefix, '_'); const char *func_p = strchr(funcn, '_'); diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 70f7dc1..c14efa7 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -1329,6 +1329,7 @@ parse_property(Eo_Lexer *ls) has_keys = EINA_FALSE, has_values = EINA_FALSE, has_protected = EINA_FALSE, has_class = EINA_FALSE; prop = calloc(1, sizeof(Eolian_Function)); + prop->klass = ls->tmp.kls; prop->type = EOLIAN_UNRESOLVED; prop->base.file = eina_stringshare_ref(ls->filename); prop->base.line = ls->line_number; @@ -1399,6 +1400,7 @@ parse_method(Eo_Lexer *ls, Eina_Bool ctor) has_protected = EINA_FALSE, has_class = EINA_FALSE, has_eo = EINA_FALSE; meth = calloc(1, sizeof(Eolian_Function)); + meth->klass = ls->tmp.kls; meth->type = EOLIAN_METHOD; meth->base.file = eina_stringshare_ref(ls->filename); meth->base.line = ls->line_number; diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index 393fee6..acf8e61 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -118,6 +118,7 @@ struct _Eolian_Function Eina_Bool set_only_legacy: 1; Eina_Bool is_class :1; Eina_List *ctor_of; + Eolian_Class *klass; }; struct _Eolian_Function_Parameter --
