forked from enlightenment/efl
eolian: prepare for implements list expansion
As the implements list will soon contain all methods and properties, do some preparations. The Eolian library now fills in class field in implements early on when the implement is local. The Eolian C generator now checks for local implements and skips them (so that things don't break).
This commit is contained in:
parent
debb51e5df
commit
e75ded5e3f
|
@ -726,6 +726,8 @@ eo_source_end_generate(const Eolian_Class *class, Eina_Strbuf *buf)
|
|||
|
||||
if ((impl_class = eolian_implement_class_get(impl_desc)))
|
||||
{
|
||||
if (impl_class == class)
|
||||
continue;
|
||||
fnid = eolian_implement_function_get(impl_desc, &ftype);
|
||||
_class_env_create(impl_class, NULL, &impl_env);
|
||||
funcname = eolian_function_name_get(fnid);
|
||||
|
|
|
@ -280,6 +280,9 @@ impl_source_generate(const Eolian_Class *class, Eina_Strbuf *buffer)
|
|||
EINA_ITERATOR_FOREACH(itr, impl_desc)
|
||||
{
|
||||
Eolian_Function_Type ftype;
|
||||
const Eolian_Class *cl = eolian_implement_class_get(impl_desc);
|
||||
if (cl == class)
|
||||
continue;
|
||||
if (!(foo = eolian_implement_function_get(impl_desc, &ftype)))
|
||||
{
|
||||
const char *name = names[eolian_implement_is_prop_get(impl_desc)
|
||||
|
|
|
@ -250,6 +250,7 @@ _get_impl_func(Eolian_Class *cl, Eolian_Implement *impl,
|
|||
return EINA_TRUE;
|
||||
if (strchr(imstr, '.'))
|
||||
return EINA_FALSE;
|
||||
impl->klass = cl;
|
||||
*foo_id = (Eolian_Function*)eolian_class_function_get_by_name(cl, imstr,
|
||||
ftype);
|
||||
return !!*foo_id;
|
||||
|
@ -314,6 +315,12 @@ _db_fill_implement(Eolian_Class *cl, Eolian_Implement *impl)
|
|||
cl->class_dtor_enable = EINA_TRUE;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Eolian_Function *foo_id;
|
||||
if (!_get_impl_func(cl, impl, ftype, &foo_id))
|
||||
return _func_error(cl, impl);
|
||||
}
|
||||
|
||||
pasttags:
|
||||
if (impl_name[0] == '.')
|
||||
|
|
Loading…
Reference in New Issue