// Case where we are looking if eo_id is a class that contain klass_id
if (EINA_UNLIKELY(_eo_is_a_class(eo_id)))
{
- const _Efl_Class **kls_itr;
EO_CLASS_POINTER_GOTO(klass_id, klass, err_class);
EO_CLASS_POINTER_GOTO(eo_id, lookinto, err_class0);
- if (lookinto == klass) return EINA_TRUE;
-
- kls_itr = lookinto->mro;
- if (!kls_itr) return EINA_FALSE;
-
- while (*kls_itr)
- {
- if ((*kls_itr) == klass)
- return EINA_TRUE;
- kls_itr++;
- }
+ const op_type_funcs *func = _vtable_func_get
+ (&lookinto->vtable, klass->base_id + klass->ops_count);
- return EINA_FALSE;
+ return (func && (func->func == _eo_class_isa_func));;
}
domain = ((Eo_Id)eo_id >> SHIFT_DOMAIN) & MASK_DOMAIN;
fail_if(!efl_isa(obj, INTERFACE_CLASS));
fail_if(!efl_isa(obj, INTERFACE2_CLASS));
+ fail_if(!efl_isa(SIMPLE_CLASS, INTERFACE_CLASS));
+ fail_if(!efl_isa(SIMPLE_CLASS, INTERFACE2_CLASS));
+ fail_if(efl_isa(INTERFACE_CLASS, INTERFACE2_CLASS));
efl_unref(obj);
efl_object_shutdown();