forked from enlightenment/efl
Eo: Reorganise some of the code and cleanup.
This is cleaner and makes more sense.
This commit is contained in:
parent
3782931c50
commit
6ed69b1d11
|
@ -35,7 +35,6 @@ static void _eo_condtor_reset(_Eo_Object *obj);
|
||||||
static inline void *_eo_data_scope_get(const _Eo_Object *obj, const _Eo_Class *klass);
|
static inline void *_eo_data_scope_get(const _Eo_Object *obj, const _Eo_Class *klass);
|
||||||
static inline void *_eo_data_xref_internal(const char *file, int line, _Eo_Object *obj, const _Eo_Class *klass, const _Eo_Object *ref_obj);
|
static inline void *_eo_data_xref_internal(const char *file, int line, _Eo_Object *obj, const _Eo_Class *klass, const _Eo_Object *ref_obj);
|
||||||
static inline void _eo_data_xunref_internal(_Eo_Object *obj, void *data, const _Eo_Object *ref_obj);
|
static inline void _eo_data_xunref_internal(_Eo_Object *obj, void *data, const _Eo_Object *ref_obj);
|
||||||
static const _Eo_Class *_eo_op_class_get(Eo_Op op);
|
|
||||||
|
|
||||||
/* Start of Dich */
|
/* Start of Dich */
|
||||||
|
|
||||||
|
@ -103,6 +102,30 @@ _dich_func_get(const _Eo_Class *klass, Eo_Op op)
|
||||||
return &chain1->funcs[DICH_CHAIN_LAST(op)];
|
return &chain1->funcs[DICH_CHAIN_LAST(op)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* XXX: Only used for a debug message below. Doesn't matter that it's slow. */
|
||||||
|
static const _Eo_Class *
|
||||||
|
_eo_op_class_get(Eo_Op op)
|
||||||
|
{
|
||||||
|
_Eo_Class **itr = _eo_classes;
|
||||||
|
int mid, max, min;
|
||||||
|
|
||||||
|
min = 0;
|
||||||
|
max = _eo_classes_last_id - 1;
|
||||||
|
while (min <= max)
|
||||||
|
{
|
||||||
|
mid = (min + max) / 2;
|
||||||
|
|
||||||
|
if (itr[mid]->base_id + itr[mid]->desc->ops.count < op)
|
||||||
|
min = mid + 1;
|
||||||
|
else if (itr[mid]->base_id > op)
|
||||||
|
max = mid - 1;
|
||||||
|
else
|
||||||
|
return itr[mid];
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static inline Eina_Bool
|
static inline Eina_Bool
|
||||||
_dich_func_set(_Eo_Class *klass, Eo_Op op, eo_op_func_type func)
|
_dich_func_set(_Eo_Class *klass, Eo_Op op, eo_op_func_type func)
|
||||||
{
|
{
|
||||||
|
@ -173,30 +196,6 @@ _eo_class_pointer_get(const Eo_Class *klass_id)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static const _Eo_Class *
|
|
||||||
_eo_op_class_get(Eo_Op op)
|
|
||||||
{
|
|
||||||
/* FIXME: Make it fast. */
|
|
||||||
_Eo_Class **itr = _eo_classes;
|
|
||||||
int mid, max, min;
|
|
||||||
|
|
||||||
min = 0;
|
|
||||||
max = _eo_classes_last_id - 1;
|
|
||||||
while (min <= max)
|
|
||||||
{
|
|
||||||
mid = (min + max) / 2;
|
|
||||||
|
|
||||||
if (itr[mid]->base_id + itr[mid]->desc->ops.count < op)
|
|
||||||
min = mid + 1;
|
|
||||||
else if (itr[mid]->base_id > op)
|
|
||||||
max = mid - 1;
|
|
||||||
else
|
|
||||||
return itr[mid];
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
_eo_op_desc_name_get(const Eo_Op_Description *desc)
|
_eo_op_desc_name_get(const Eo_Op_Description *desc)
|
||||||
{
|
{
|
||||||
|
@ -921,31 +920,29 @@ _eo_add_internal_end(Eo *eo_id, Eo_Call_Stack *stack)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!fptr->o.obj->condtor_done)
|
||||||
{
|
{
|
||||||
if (!fptr->o.obj->condtor_done)
|
const _Eo_Class *klass = fptr->o.obj->klass;
|
||||||
{
|
|
||||||
const _Eo_Class *klass = fptr->o.obj->klass;
|
|
||||||
|
|
||||||
ERR("Object of class '%s' - Not all of the object constructors have been executed.",
|
ERR("Object of class '%s' - Not all of the object constructors have been executed.",
|
||||||
klass->desc->name);
|
klass->desc->name);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!eo_id)
|
if (!eo_id)
|
||||||
{
|
{
|
||||||
// XXX: Given EFL usage of objects, construction is a perfectly valid thing
|
// XXX: Given EFL usage of objects, construction is a perfectly valid thing
|
||||||
// to do. we shouldn't complain about it as handling a NULL obj creation is
|
// to do. we shouldn't complain about it as handling a NULL obj creation is
|
||||||
// the job of the caller. a perfect example here is ecore_con and ecore_ipc
|
// the job of the caller. a perfect example here is ecore_con and ecore_ipc
|
||||||
// where you create a con or ipc obj then set up type/destination/port and
|
// where you create a con or ipc obj then set up type/destination/port and
|
||||||
// the finalize of the constructor does the actual connect and thus this
|
// the finalize of the constructor does the actual connect and thus this
|
||||||
// fails or succeeds based on if service is there.
|
// fails or succeeds based on if service is there.
|
||||||
//
|
//
|
||||||
// until there is a better solution - don't complain here.
|
// until there is a better solution - don't complain here.
|
||||||
//
|
//
|
||||||
// ERR("Object of class '%s' - Finalizing the object failed.",
|
// ERR("Object of class '%s' - Finalizing the object failed.",
|
||||||
// klass->desc->name);
|
// klass->desc->name);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fptr->o.obj->finalized = EINA_TRUE;
|
fptr->o.obj->finalized = EINA_TRUE;
|
||||||
|
|
Loading…
Reference in New Issue