forked from enlightenment/efl
eolian: we can only have 2 accessors
This commit is contained in:
parent
f86c2d4e5a
commit
faa24705c8
|
@ -68,11 +68,10 @@ static Eina_Bool
|
||||||
_db_fill_accessors(Eolian_Function *foo_id, Eo_Class_Def *kls,
|
_db_fill_accessors(Eolian_Function *foo_id, Eo_Class_Def *kls,
|
||||||
Eo_Property_Def *prop)
|
Eo_Property_Def *prop)
|
||||||
{
|
{
|
||||||
Eo_Accessor_Def *accessor;
|
if (prop->get_accessor && !_db_fill_accessor(foo_id, kls, prop->get_accessor))
|
||||||
Eina_List *l;
|
return EINA_FALSE;
|
||||||
|
if (prop->set_accessor && !_db_fill_accessor(foo_id, kls, prop->set_accessor))
|
||||||
EINA_LIST_FOREACH(prop->accessors, l, accessor)
|
return EINA_FALSE;
|
||||||
if (!_db_fill_accessor(foo_id, kls, accessor)) return EINA_FALSE;
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
@ -91,7 +90,7 @@ _db_fill_property(Eolian_Class *cl, Eo_Class_Def *kls, Eo_Property_Def *prop)
|
||||||
foo_id->params = prop->values; prop->values = NULL;
|
foo_id->params = prop->values; prop->values = NULL;
|
||||||
if (!_db_fill_accessors(foo_id, kls, prop)) goto failure;
|
if (!_db_fill_accessors(foo_id, kls, prop)) goto failure;
|
||||||
|
|
||||||
if (!prop->accessors)
|
if (!prop->get_accessor && !prop->set_accessor)
|
||||||
{
|
{
|
||||||
foo_id->type = EOLIAN_PROPERTY;
|
foo_id->type = EOLIAN_PROPERTY;
|
||||||
if (kls->type == EOLIAN_CLASS_INTERFACE)
|
if (kls->type == EOLIAN_CLASS_INTERFACE)
|
||||||
|
|
|
@ -34,7 +34,6 @@ static void
|
||||||
eo_definitions_property_def_free(Eo_Property_Def *prop)
|
eo_definitions_property_def_free(Eo_Property_Def *prop)
|
||||||
{
|
{
|
||||||
Eolian_Function_Parameter *param;
|
Eolian_Function_Parameter *param;
|
||||||
Eo_Accessor_Def *accessor;
|
|
||||||
|
|
||||||
if (prop->base.file)
|
if (prop->base.file)
|
||||||
eina_stringshare_del(prop->base.file);
|
eina_stringshare_del(prop->base.file);
|
||||||
|
@ -48,8 +47,10 @@ eo_definitions_property_def_free(Eo_Property_Def *prop)
|
||||||
EINA_LIST_FREE(prop->values, param)
|
EINA_LIST_FREE(prop->values, param)
|
||||||
database_parameter_del(param);
|
database_parameter_del(param);
|
||||||
|
|
||||||
EINA_LIST_FREE(prop->accessors, accessor)
|
if (prop->get_accessor)
|
||||||
eo_definitions_accessor_free(accessor);
|
eo_definitions_accessor_free(prop->get_accessor);
|
||||||
|
if (prop->set_accessor)
|
||||||
|
eo_definitions_accessor_free(prop->set_accessor);
|
||||||
|
|
||||||
free(prop);
|
free(prop);
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,8 @@ typedef struct _Eo_Property_Def
|
||||||
Eina_Stringshare *name;
|
Eina_Stringshare *name;
|
||||||
Eina_List *keys;
|
Eina_List *keys;
|
||||||
Eina_List *values;
|
Eina_List *values;
|
||||||
Eina_List *accessors;
|
Eo_Accessor_Def *get_accessor;
|
||||||
|
Eo_Accessor_Def *set_accessor;
|
||||||
int scope;
|
int scope;
|
||||||
Eina_Bool is_class:1;
|
Eina_Bool is_class:1;
|
||||||
} Eo_Property_Def;
|
} Eo_Property_Def;
|
||||||
|
|
|
@ -1215,7 +1215,7 @@ parse_legacy(Eo_Lexer *ls)
|
||||||
check_next(ls, ';');
|
check_next(ls, ';');
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eo_Accessor_Def *
|
||||||
parse_accessor(Eo_Lexer *ls)
|
parse_accessor(Eo_Lexer *ls)
|
||||||
{
|
{
|
||||||
int line, col;
|
int line, col;
|
||||||
|
@ -1264,6 +1264,8 @@ parse_accessor(Eo_Lexer *ls)
|
||||||
}
|
}
|
||||||
end:
|
end:
|
||||||
check_match(ls, '}', '{', line, col);
|
check_match(ls, '}', '{', line, col);
|
||||||
|
ls->tmp.accessor = NULL;
|
||||||
|
return acc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1322,17 +1324,11 @@ body:
|
||||||
{
|
{
|
||||||
case KW_get:
|
case KW_get:
|
||||||
CASE_LOCK(ls, get, "get definition")
|
CASE_LOCK(ls, get, "get definition")
|
||||||
parse_accessor(ls);
|
prop->get_accessor = parse_accessor(ls);
|
||||||
prop->accessors = eina_list_append(prop->accessors,
|
|
||||||
ls->tmp.accessor);
|
|
||||||
ls->tmp.accessor = NULL;
|
|
||||||
break;
|
break;
|
||||||
case KW_set:
|
case KW_set:
|
||||||
CASE_LOCK(ls, set, "set definition")
|
CASE_LOCK(ls, set, "set definition")
|
||||||
parse_accessor(ls);
|
prop->set_accessor = parse_accessor(ls);
|
||||||
prop->accessors = eina_list_append(prop->accessors,
|
|
||||||
ls->tmp.accessor);
|
|
||||||
ls->tmp.accessor = NULL;
|
|
||||||
break;
|
break;
|
||||||
case KW_keys:
|
case KW_keys:
|
||||||
CASE_LOCK(ls, keys, "keys definition")
|
CASE_LOCK(ls, keys, "keys definition")
|
||||||
|
|
Loading…
Reference in New Issue