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:
Tom Hacohen 2013-07-30 14:12:03 +01:00
parent 7be0748b34
commit 5f45e57b89
3 changed files with 3 additions and 18 deletions

View File

@ -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); \
})
/**

View File

@ -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);

View File

@ -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);