q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=42446e1461ac34ee397e0fcc9ab0bba2669ae8c1
commit 42446e1461ac34ee397e0fcc9ab0bba2669ae8c1 Author: Daniel Kolesa <[email protected]> Date: Fri Aug 29 15:06:48 2014 +0100 eolian: remove the silly appending of .get/.set in implements --- src/lib/eolian/database_implement_api.c | 17 ++++++----------- src/lib/eolian/eo_parser.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/lib/eolian/database_implement_api.c b/src/lib/eolian/database_implement_api.c index 052df7e..c366f2e 100644 --- a/src/lib/eolian/database_implement_api.c +++ b/src/lib/eolian/database_implement_api.c @@ -76,16 +76,14 @@ eolian_implement_function_get(const Eolian_Implement *impl, if (!klass) return NULL; - char *func_name = strdup(impl->full_name + strlen(klass->full_name) + 1); - char *dot = strchr(func_name, '.'); + const char *func_name = impl->full_name + strlen(klass->full_name) + 1; Eolian_Function_Type tp = EOLIAN_UNRESOLVED; - if (dot) - { - *dot = '\0'; - if (!strcmp(dot + 1, "set")) tp = EOLIAN_PROP_SET; - else if (!strcmp(dot + 1, "get")) tp = EOLIAN_PROP_GET; - } + + if (impl->is_prop_get) + tp = EOLIAN_PROP_GET; + else if (impl->is_prop_set) + tp = EOLIAN_PROP_SET; const Eolian_Function *fid = eolian_class_function_get_by_name(klass, func_name, @@ -97,12 +95,9 @@ eolian_implement_function_get(const Eolian_Implement *impl, eina_log_print(_eolian_log_dom, EINA_LOG_LEVEL_ERR, impl->base.file, "", impl->base.line, "both get and set required " "for property '%s' at column %d", func_name, impl->base.column); - free(func_name); return NULL; } - free(func_name); - if (func_type) { if (tp == EOLIAN_UNRESOLVED) diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 6f0c2cc..350c360 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -1562,7 +1562,6 @@ fullclass: eina_strbuf_append(buf, ls->t.value.s); eo_lexer_get(ls); check_next(ls, '.'); - eina_strbuf_append_char(buf, '.'); if ((ls->t.token != TOK_VALUE) || (ls->t.kw == KW_get || ls->t.kw == KW_set)) eo_lexer_syntax_error(ls, "name or constructor/destructor expected"); for (;;) @@ -1571,19 +1570,26 @@ fullclass: { case KW_constructor: case KW_destructor: + eina_strbuf_append_char(buf, '.'); + eina_strbuf_append(buf, eo_lexer_keyword_str_get(ls->t.kw)); + eo_lexer_get(ls); + goto end; case KW_get: + impl->is_prop_get = EINA_TRUE; + eo_lexer_get(ls); + goto end; case KW_set: - eina_strbuf_append(buf, eo_lexer_keyword_str_get(ls->t.kw)); + impl->is_prop_set = EINA_TRUE; eo_lexer_get(ls); goto end; default: break; } + eina_strbuf_append_char(buf, '.'); check(ls, TOK_VALUE); eina_strbuf_append(buf, ls->t.value.s); eo_lexer_get(ls); if (ls->t.token != '.') break; - eina_strbuf_append(buf, "."); eo_lexer_get(ls); } end: --
