forked from enlightenment/efl
eo2: revert "eo2_add accepts non-defauld constructors"
We want to have normal functions as non-default constructors, not va_arg ones. What we should do is split the object creation to two parts again. The creation, the constructing (changes using the macro) and the verification/end part that checks the constructor has been called. This reverts commit 2ff2ce1894f173b306a896bda595e1a7768c074d.
This commit is contained in:
parent
7be0748b34
commit
5f45e57b89
|
@ -874,7 +874,7 @@ EAPI void eo_error_set_internal(const Eo *obj, const char *file, int line);
|
|||
#define eo2_add(klass, parent, ...) \
|
||||
({ \
|
||||
const Eo_Class *_tmp_klass = klass; \
|
||||
eo_add_internal(__FILE__, __LINE__, _tmp_klass, parent, eo2_constructor, ## __VA_ARGS__, EO_NOOP); \
|
||||
eo_add_internal(__FILE__, __LINE__, _tmp_klass, parent, ## __VA_ARGS__, EO_NOOP); \
|
||||
})
|
||||
|
||||
/**
|
||||
|
|
|
@ -1472,22 +1472,8 @@ eo_add_internal(const char *file, int line, const Eo_Class *klass_id, Eo *parent
|
|||
|
||||
/* Run the relevant do stuff. */
|
||||
if (klass->desc->version == EO2_VERSION)
|
||||
{
|
||||
eo2_constructor_type constr;
|
||||
va_list p_list;
|
||||
if(eo2_do_start((Eo *)obj_id, EINA_FALSE))
|
||||
{
|
||||
va_start(p_list, parent_id);
|
||||
while ((constr = va_arg(p_list, eo2_constructor_type)))
|
||||
constr();
|
||||
va_end(p_list);
|
||||
eo2_do_end(NULL);
|
||||
do_err = EINA_FALSE;
|
||||
}
|
||||
else
|
||||
do_err = EINA_TRUE;
|
||||
}
|
||||
else
|
||||
eo2_do((Eo *)obj_id, eo2_constructor());
|
||||
/* Run the relevant do stuff. */
|
||||
{
|
||||
va_list p_list;
|
||||
va_start(p_list, parent_id);
|
||||
|
|
|
@ -61,7 +61,6 @@ typedef struct _Eo_Class _Eo_Class;
|
|||
typedef struct _Eo_Object _Eo_Object;
|
||||
typedef struct _Eo_Base Eo_Base;
|
||||
typedef struct _Eo_Internal _Eo;
|
||||
typedef void (*eo2_constructor_type)(void);
|
||||
|
||||
/* Retrieves the pointer to the object from the id */
|
||||
static inline _Eo_Object *_eo_obj_pointer_get(const Eo_Id obj_id);
|
||||
|
|
Loading…
Reference in New Issue