va_list p_list;
EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, EINA_FALSE);
- _Eo_Class *cur_klass = _eo_class_pointer_get(cur_klass_id);
- EO_MAGIC_RETURN_VAL(cur_klass, EO_CLASS_EINA_MAGIC, EINA_FALSE);
+ EO_CLASS_POINTER_RETURN_VAL(cur_klass_id, cur_klass, EINA_FALSE);
/* Advance the kls itr. */
nklass = _eo_kls_itr_next(obj->klass, cur_klass, op);
Eo_Op op = EO_NOOP;
va_list p_list;
- _Eo_Class *klass = _eo_class_pointer_get(klass_id);
- EO_MAGIC_RETURN_VAL(klass, EO_CLASS_EINA_MAGIC, EINA_FALSE);
+ EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, EINA_FALSE);
va_start(p_list, klass_id);
eo_class_do_super_internal(const char *file, int line, const Eo_Class *klass_id,
const Eo_Class *cur_klass_id, Eo_Op op, ...)
{
- _Eo_Class *klass = _eo_class_pointer_get(klass_id);
- _Eo_Class *cur_klass = _eo_class_pointer_get(cur_klass_id);
const _Eo_Class *nklass;
Eina_Bool ret = EINA_TRUE;
va_list p_list;
- EO_MAGIC_RETURN_VAL(klass, EO_CLASS_EINA_MAGIC, EINA_FALSE);
- EO_MAGIC_RETURN_VAL(cur_klass, EO_CLASS_EINA_MAGIC, EINA_FALSE);
+ EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, EINA_FALSE);
+ EO_CLASS_POINTER_RETURN_VAL(cur_klass_id, cur_klass, EINA_FALSE);
/* Advance the kls itr. */
nklass = _eo_kls_itr_next(klass, cur_klass, op);
EAPI const char *
eo_class_name_get(const Eo_Class *klass_id)
{
- _Eo_Class *klass = _eo_class_pointer_get(klass_id);
- EO_MAGIC_RETURN_VAL(klass, EO_CLASS_EINA_MAGIC, NULL);
+ EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, NULL);
return klass->desc->name;
}
EAPI void
eo_class_funcs_set(Eo_Class *klass_id, const Eo_Op_Func_Description *func_descs)
{
- _Eo_Class *klass = _eo_class_pointer_get(klass_id);
- EO_MAGIC_RETURN(klass, EO_CLASS_EINA_MAGIC);
+ EO_CLASS_POINTER_RETURN(klass_id, klass);
const Eo_Op_Func_Description *itr;
itr = func_descs;
Eina_List *extn_list, *mro, *mixins;
_Eo_Class *parent = _eo_class_pointer_get(parent_id);
+#ifndef HAVE_EO_ID
if (parent && !EINA_MAGIC_CHECK(parent, EO_CLASS_EINA_MAGIC))
{
EINA_MAGIC_FAIL(parent, EO_CLASS_EINA_MAGIC);
return NULL;
}
+#endif
EINA_SAFETY_ON_NULL_RETURN_VAL(desc, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(desc->name, NULL);
}
klass = calloc(1, _eo_class_sz + extn_sz + mro_sz + mixins_sz);
+#ifndef HAVE_EO_ID
EINA_MAGIC_SET(klass, EO_CLASS_EINA_MAGIC);
+#endif
eina_lock_new(&klass->objects.trash_lock);
eina_lock_new(&klass->iterators.trash_lock);
klass->parent = parent;
eo_isa(const Eo *obj_id, const Eo_Class *klass_id)
{
EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, EINA_FALSE);
- _Eo_Class *klass = _eo_class_pointer_get(klass_id);
- EO_MAGIC_RETURN_VAL(klass, EO_CLASS_EINA_MAGIC, EINA_FALSE);
+ EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, EINA_FALSE);
const op_type_funcs *func = _dich_func_get(obj->klass,
klass->base_id + klass->desc->ops.count);
{
Eina_Bool do_err;
_Eo *obj;
- _Eo_Class *klass = _eo_class_pointer_get(klass_id);
- EO_MAGIC_RETURN_VAL(klass, EO_CLASS_EINA_MAGIC, NULL);
+ EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, NULL);
if (parent_id)
{
{
void *ret;
EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, NULL);
- _Eo_Class *klass = _eo_class_pointer_get(klass_id);
- EO_MAGIC_RETURN_VAL(klass, EO_CLASS_EINA_MAGIC, NULL);
+ EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, NULL);
#ifdef EO_DEBUG
if (!_eo_class_mro_has(obj->klass, klass))
_Eo_Class *klass = NULL;
if (klass_id)
{
- klass = _eo_class_pointer_get(klass_id);
- EO_MAGIC_RETURN_VAL(klass, EO_CLASS_EINA_MAGIC, NULL);
+ EO_CLASS_POINTER_RETURN_VAL(klass_id, klass2, NULL);
+ klass = klass2;
#ifdef EO_DEBUG
if (!_eo_class_mro_has(obj->klass, klass))
if (!obj) return; \
} while (0)
+#define EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, ret) \
+ _Eo_Class *klass; \
+ do { \
+ klass = _eo_class_pointer_get(klass_id); \
+ if (!klass) return ret; \
+ } while (0)
+
+#define EO_CLASS_POINTER_RETURN(klass_id, klass) \
+ _Eo_Class *klass; \
+ do { \
+ klass = _eo_class_pointer_get(klass_id); \
+ if (!klass) return; \
+ } while (0)
+
#else
#define EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, ret) \
EO_MAGIC_RETURN(obj, EO_EINA_MAGIC); \
} while (0)
+#define EO_CLASS_POINTER_RETURN_VAL(klass_id, klass, ret) \
+ _Eo_Class *klass; \
+ do { \
+ klass = _eo_class_pointer_get(klass_id); \
+ EO_MAGIC_RETURN_VAL(klass, EO_CLASS_EINA_MAGIC, ret); \
+ } while (0)
+
+#define EO_CLASS_POINTER_RETURN(klass_id, klass) \
+ _Eo_Class *klass; \
+ do { \
+ klass = _eo_class_pointer_get(klass_id); \
+ EO_MAGIC_RETURN(klass, EO_CLASS_EINA_MAGIC); \
+ } while (0)
+
#endif
#ifdef EFL_DEBUG