Eo: Add efl_replace() function.

This new function adds a new way to safely replace Eo pointer values.
This commit is contained in:
Guilherme Iscaro 2016-12-02 11:16:33 -02:00 committed by Bruno Dilly
parent 826cd7cb5e
commit 81782414df
1 changed files with 22 additions and 0 deletions

View File

@ -1333,6 +1333,28 @@ EAPI int efl_callbacks_cmp(const Efl_Callback_Array_Item *a, const Efl_Callback_
efl_event_callback_array_priority_add(obj, array, \
EFL_CALLBACK_PRIORITY_DEFAULT, data)
/**
* @def Replace the previously Eo pointer with new content.
*
* @param storage The object to replace the old reference. It can not be @c NULL.
* @param new_obj The new object. It may be @c NULL.
*
* The string pointed by @c storage must be previously an Eo or
* @c NULL and it will be efl_unref(). The @a new_obj will be passed
* to efl_ref() and then assigned to @c *storage.
*
* @see efl_ref()
* @see efl_unref()
*/
static inline void
efl_replace(Eo **storage, Eo *new_obj)
{
if (!storage || *storage == new_obj) return;
efl_ref(new_obj);
efl_unref(*storage);
*storage = new_obj;
}
/**
* @}
*/