eolian: remove the silly appending of .get/.set in implements

This commit is contained in:
Daniel Kolesa 2014-08-29 15:06:48 +01:00
parent 2761b71c68
commit 42446e1461
2 changed files with 16 additions and 15 deletions

View File

@ -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)

View File

@ -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:
case KW_get:
case KW_set:
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:
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: