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,
|
||||
Eo_Property_Def *prop)
|
||||
{
|
||||
Eo_Accessor_Def *accessor;
|
||||
Eina_List *l;
|
||||
|
||||
EINA_LIST_FOREACH(prop->accessors, l, accessor)
|
||||
if (!_db_fill_accessor(foo_id, kls, accessor)) return EINA_FALSE;
|
||||
if (prop->get_accessor && !_db_fill_accessor(foo_id, kls, prop->get_accessor))
|
||||
return EINA_FALSE;
|
||||
if (prop->set_accessor && !_db_fill_accessor(foo_id, kls, prop->set_accessor))
|
||||
return EINA_FALSE;
|
||||
|
||||
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;
|
||||
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;
|
||||
if (kls->type == EOLIAN_CLASS_INTERFACE)
|
||||
|
|
|
@ -34,7 +34,6 @@ static void
|
|||
eo_definitions_property_def_free(Eo_Property_Def *prop)
|
||||
{
|
||||
Eolian_Function_Parameter *param;
|
||||
Eo_Accessor_Def *accessor;
|
||||
|
||||
if (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)
|
||||
database_parameter_del(param);
|
||||
|
||||
EINA_LIST_FREE(prop->accessors, accessor)
|
||||
eo_definitions_accessor_free(accessor);
|
||||
if (prop->get_accessor)
|
||||
eo_definitions_accessor_free(prop->get_accessor);
|
||||
if (prop->set_accessor)
|
||||
eo_definitions_accessor_free(prop->set_accessor);
|
||||
|
||||
free(prop);
|
||||
}
|
||||
|
|
|
@ -42,7 +42,8 @@ typedef struct _Eo_Property_Def
|
|||
Eina_Stringshare *name;
|
||||
Eina_List *keys;
|
||||
Eina_List *values;
|
||||
Eina_List *accessors;
|
||||
Eo_Accessor_Def *get_accessor;
|
||||
Eo_Accessor_Def *set_accessor;
|
||||
int scope;
|
||||
Eina_Bool is_class:1;
|
||||
} Eo_Property_Def;
|
||||
|
|
|
@ -1215,7 +1215,7 @@ parse_legacy(Eo_Lexer *ls)
|
|||
check_next(ls, ';');
|
||||
}
|
||||
|
||||
static void
|
||||
static Eo_Accessor_Def *
|
||||
parse_accessor(Eo_Lexer *ls)
|
||||
{
|
||||
int line, col;
|
||||
|
@ -1264,6 +1264,8 @@ parse_accessor(Eo_Lexer *ls)
|
|||
}
|
||||
end:
|
||||
check_match(ls, '}', '{', line, col);
|
||||
ls->tmp.accessor = NULL;
|
||||
return acc;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1322,17 +1324,11 @@ body:
|
|||
{
|
||||
case KW_get:
|
||||
CASE_LOCK(ls, get, "get definition")
|
||||
parse_accessor(ls);
|
||||
prop->accessors = eina_list_append(prop->accessors,
|
||||
ls->tmp.accessor);
|
||||
ls->tmp.accessor = NULL;
|
||||
prop->get_accessor = parse_accessor(ls);
|
||||
break;
|
||||
case KW_set:
|
||||
CASE_LOCK(ls, set, "set definition")
|
||||
parse_accessor(ls);
|
||||
prop->accessors = eina_list_append(prop->accessors,
|
||||
ls->tmp.accessor);
|
||||
ls->tmp.accessor = NULL;
|
||||
prop->set_accessor = parse_accessor(ls);
|
||||
break;
|
||||
case KW_keys:
|
||||
CASE_LOCK(ls, keys, "keys definition")
|
||||
|
|
Loading…
Reference in New Issue