I never liked the stringshare function that does it, so it comes with no 
surprise that I don't like this one either.

Regardless of that, I find the name very confusing. I didn't understand 
what it does when I saw the name nor when I read the docs. I had to read 
the code to understand what it's for... I'd change the name and fix the 
docs.

--
Tom.

On 02/12/16 17:35, Guilherme Iscaro wrote:
> bdilly pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=81782414dfba9a8a69ea42a4dd5b01fc19170d88
>
> commit 81782414dfba9a8a69ea42a4dd5b01fc19170d88
> Author: Guilherme Iscaro <isc...@profusion.mobi>
> Date:   Fri Dec 2 11:16:33 2016 -0200
>
>     Eo: Add efl_replace() function.
>
>     This new function adds a new way to safely replace Eo pointer values.
> ---
>  src/lib/eo/Eo.h | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
>
> diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h
> index 8c81544..244478b 100644
> --- a/src/lib/eo/Eo.h
> +++ b/src/lib/eo/Eo.h
> @@ -1334,6 +1334,28 @@ EAPI int efl_callbacks_cmp(const 
> Efl_Callback_Array_Item *a, const Efl_Callback_
>           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;
> +}
> +
> +/**
>   * @}
>   */
>
>


------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to