stringshare: optimization suggested by rasterman, docs.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 14 Mar 2010 01:06:52 +0000 (01:06 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 14 Mar 2010 01:06:52 +0000 (01:06 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@47193 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/include/eina_inline_stringshare.x

index 318aa2e..233df99 100644 (file)
  * @{
  */
 
+/**
+ * Replace the previously stringshared pointer with a new content.
+ *
+ * The string pointed by @a p_str should be previously stringshared or
+ * @c NULL and it will be eina_stringshare_del(). The new string will
+ * be eina_stringshare_add() and then assigned to @c *p_str.
+ *
+ * @param p_str pointer to the stringhare to be replaced. Must not be
+ *        @c NULL, but @c *p_str may be @c NULL as it is a valid
+ *        stringshare handle.
+ * @param news new string to be stringshared, may be @c NULL.
+ *
+ * @return #EINA_TRUE if the strings were different and thus replaced,
+ *         #EINA_FALSE if the strings were the same after shared.
+ */
 static inline Eina_Bool
 eina_stringshare_replace(const char **p_str, const char *news)
 {
+   if (*p_str == news) return EINA_FALSE;
+
    news = eina_stringshare_add(news);
    eina_stringshare_del(*p_str);
    if (*p_str == news)
-     return 0;
+     return EINA_FALSE;
    *p_str = news;
-   return 1;
+   return EINA_TRUE;
 }
 
 /**