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,
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)
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 (;;)
{
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: