Eobj: Use EINA_SAFETY when needed.

Also added a couple of EINA_UNLIKELY.

SVN revision: 70411
This commit is contained in:
Tom Hacohen 2012-04-23 08:10:06 +00:00
parent 8875c23a6c
commit a1ed819ea2
1 changed files with 10 additions and 22 deletions

View File

@ -715,28 +715,17 @@ eobj_class_new(const Eobj_Class_Description *desc, const Eobj_Class *parent, ...
va_start(p_list, parent);
#define _CLS_NEW_CHECK(x) \
do \
{ \
if (!x) \
{ \
ERR("'%s' must not be False! Aborting.", #x); \
return NULL; \
} \
} \
while(0)
_CLS_NEW_CHECK(desc);
_CLS_NEW_CHECK(desc->name);
EINA_SAFETY_ON_NULL_RETURN_VAL(desc, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(desc->name, NULL);
/* Check restrictions on Interface types. */
if (desc->type == EOBJ_CLASS_TYPE_INTERFACE)
{
_CLS_NEW_CHECK(!desc->constructor);
_CLS_NEW_CHECK(!desc->destructor);
_CLS_NEW_CHECK(!desc->class_constructor);
_CLS_NEW_CHECK(!desc->class_destructor);
_CLS_NEW_CHECK(!desc->data_size);
EINA_SAFETY_ON_FALSE_RETURN_VAL(!desc->constructor, NULL);
EINA_SAFETY_ON_FALSE_RETURN_VAL(!desc->destructor, NULL);
EINA_SAFETY_ON_FALSE_RETURN_VAL(!desc->class_constructor, NULL);
EINA_SAFETY_ON_FALSE_RETURN_VAL(!desc->class_destructor, NULL);
EINA_SAFETY_ON_FALSE_RETURN_VAL(!desc->data_size, NULL);
}
klass = calloc(1, sizeof(Eobj_Class));
@ -882,7 +871,6 @@ cleanup:
eobj_class_free(klass);
return NULL;
}
#undef _CLS_NEW_CHECK
EAPI Eobj *
eobj_add(const Eobj_Class *klass, Eobj *parent)
@ -891,7 +879,7 @@ eobj_add(const Eobj_Class *klass, Eobj *parent)
if (parent) EOBJ_MAGIC_RETURN_VAL(parent, EOBJ_EINA_MAGIC, NULL);
if (klass->desc->type != EOBJ_CLASS_TYPE_REGULAR)
if (EINA_UNLIKELY(klass->desc->type != EOBJ_CLASS_TYPE_REGULAR))
{
ERR("Class '%s' is not instantiate-able. Aborting.", klass->desc->name);
return NULL;
@ -912,13 +900,13 @@ eobj_add(const Eobj_Class *klass, Eobj *parent)
eobj_ref(obj);
_eobj_constructor(obj, klass);
if (eobj_constructor_error_get(obj))
if (EINA_UNLIKELY(eobj_constructor_error_get(obj)))
{
ERR("Type '%s' - One of the object constructors have failed.", klass->desc->name);
goto fail;
}
if (!_eobj_kls_itr_reached_end(obj))
if (EINA_UNLIKELY(!_eobj_kls_itr_reached_end(obj)))
{
ERR("Type '%s' - Not all of the object constructors have been executed.", klass->desc->name);
goto fail;