forked from enlightenment/efl
eolian: allow new property impl syntax with auto/empty
This commit is contained in:
parent
6d9d15d35c
commit
3797a269b6
|
@ -1547,22 +1547,7 @@ parse_implement(Eo_Lexer *ls, Eina_Bool iface)
|
||||||
eo_lexer_syntax_error(ls, "name expected");
|
eo_lexer_syntax_error(ls, "name expected");
|
||||||
impl->full_name = eina_stringshare_printf(".%s", ls->t.value.s);
|
impl->full_name = eina_stringshare_printf(".%s", ls->t.value.s);
|
||||||
eo_lexer_get(ls);
|
eo_lexer_get(ls);
|
||||||
if (ls->t.token == '.')
|
goto propbeg;
|
||||||
{
|
|
||||||
eo_lexer_get(ls);
|
|
||||||
if (ls->t.kw == KW_set)
|
|
||||||
{
|
|
||||||
impl->is_prop_set = EINA_TRUE;
|
|
||||||
eo_lexer_get(ls);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
check_kw_next(ls, KW_get);
|
|
||||||
impl->is_prop_get = EINA_TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
check_next(ls, ';');
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
fullclass:
|
fullclass:
|
||||||
if ((ls->t.token != TOK_VALUE) || (ls->t.kw == KW_get || ls->t.kw == KW_set))
|
if ((ls->t.token != TOK_VALUE) || (ls->t.kw == KW_get || ls->t.kw == KW_set))
|
||||||
|
@ -1614,6 +1599,7 @@ fullclass:
|
||||||
if (ls->t.token != '.') break;
|
if (ls->t.token != '.') break;
|
||||||
eo_lexer_get(ls);
|
eo_lexer_get(ls);
|
||||||
}
|
}
|
||||||
|
propbeg:
|
||||||
if (ls->t.token == '{')
|
if (ls->t.token == '{')
|
||||||
{
|
{
|
||||||
Eina_Bool has_get = EINA_FALSE, has_set = EINA_FALSE;
|
Eina_Bool has_get = EINA_FALSE, has_set = EINA_FALSE;
|
||||||
|
@ -1641,9 +1627,12 @@ propend:
|
||||||
else
|
else
|
||||||
check_next(ls, ';');
|
check_next(ls, ';');
|
||||||
end:
|
end:
|
||||||
|
if (buf)
|
||||||
|
{
|
||||||
impl->full_name = eina_stringshare_add(eina_strbuf_string_get(buf));
|
impl->full_name = eina_stringshare_add(eina_strbuf_string_get(buf));
|
||||||
pop_strbuf(ls);
|
pop_strbuf(ls);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parse_constructor(Eo_Lexer *ls)
|
parse_constructor(Eo_Lexer *ls)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
class nmsp1.class1 (nmsp1.nmsp11.class2, nmsp2.class1, no_nmsp)
|
class nmsp1.class1 (nmsp1.nmsp11.class2, nmsp2.class1, no_nmsp)
|
||||||
{
|
{
|
||||||
implements {
|
implements {
|
||||||
nmsp1.nmsp11.class2.a.set;
|
nmsp1.nmsp11.class2.a { set; }
|
||||||
no_nmsp.foo;
|
no_nmsp.foo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,10 +44,9 @@ class Override (Base) {
|
||||||
}
|
}
|
||||||
implements {
|
implements {
|
||||||
Base.constructor;
|
Base.constructor;
|
||||||
@auto .b.set;
|
@auto .b { set; }
|
||||||
@empty .bar;
|
@empty .bar;
|
||||||
@auto .c.get;
|
@auto .c { get; }
|
||||||
@auto Base.z.get;
|
@auto Base.z { get; set; }
|
||||||
@empty Base.z.set;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,14 @@ static int __eolian_override_c_get(Eo *obj EINA_UNUSED, Override_Data *pd EINA_U
|
||||||
|
|
||||||
EOAPI EFL_FUNC_BODYV_CONST(override_c_get, int, 50, EFL_FUNC_CALL(idx), int idx);
|
EOAPI EFL_FUNC_BODYV_CONST(override_c_get, int, 50, EFL_FUNC_CALL(idx), int idx);
|
||||||
|
|
||||||
|
static void __eolian_override_base_z_set(Eo *obj EINA_UNUSED, Override_Data *pd, int a, char b, float c)
|
||||||
|
{
|
||||||
|
a = pd->a;
|
||||||
|
b = pd->b;
|
||||||
|
c = pd->c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void __eolian_override_base_z_get(Eo *obj EINA_UNUSED, Override_Data *pd, int *a, char *b, float *c)
|
static void __eolian_override_base_z_get(Eo *obj EINA_UNUSED, Override_Data *pd, int *a, char *b, float *c)
|
||||||
{
|
{
|
||||||
if (a) *a = pd->a;
|
if (a) *a = pd->a;
|
||||||
|
@ -33,11 +41,6 @@ static void __eolian_override_base_z_get(Eo *obj EINA_UNUSED, Override_Data *pd,
|
||||||
if (c) *c = pd->c;
|
if (c) *c = pd->c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void __eolian_override_base_z_set(Eo *obj EINA_UNUSED, Override_Data *pd EINA_UNUSED, int a EINA_UNUSED, char b EINA_UNUSED, float c EINA_UNUSED)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
EOAPI EFL_VOID_FUNC_BODY(override_a_set);
|
EOAPI EFL_VOID_FUNC_BODY(override_a_set);
|
||||||
|
|
||||||
void _override_a_get(Eo *obj, Override_Data *pd);
|
void _override_a_get(Eo *obj, Override_Data *pd);
|
||||||
|
@ -61,8 +64,8 @@ _override_class_initializer(Efl_Class *klass)
|
||||||
EFL_OBJECT_OP_FUNC(override_b_set, __eolian_override_b_set),
|
EFL_OBJECT_OP_FUNC(override_b_set, __eolian_override_b_set),
|
||||||
EFL_OBJECT_OP_FUNC(override_bar, __eolian_override_bar),
|
EFL_OBJECT_OP_FUNC(override_bar, __eolian_override_bar),
|
||||||
EFL_OBJECT_OP_FUNC(override_c_get, __eolian_override_c_get),
|
EFL_OBJECT_OP_FUNC(override_c_get, __eolian_override_c_get),
|
||||||
EFL_OBJECT_OP_FUNC(base_z_get, __eolian_override_base_z_get),
|
|
||||||
EFL_OBJECT_OP_FUNC(base_z_set, __eolian_override_base_z_set),
|
EFL_OBJECT_OP_FUNC(base_z_set, __eolian_override_base_z_set),
|
||||||
|
EFL_OBJECT_OP_FUNC(base_z_get, __eolian_override_base_z_get),
|
||||||
EFL_OBJECT_OP_FUNC(override_a_set, NULL),
|
EFL_OBJECT_OP_FUNC(override_a_set, NULL),
|
||||||
EFL_OBJECT_OP_FUNC(override_a_get, _override_a_get),
|
EFL_OBJECT_OP_FUNC(override_a_get, _override_a_get),
|
||||||
EFL_OBJECT_OP_FUNC(override_b_get, _override_b_get),
|
EFL_OBJECT_OP_FUNC(override_b_get, _override_b_get),
|
||||||
|
|
Loading…
Reference in New Issue