Remove ecore_hash and eina_hash use from ecore.
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 11 Dec 2008 13:55:47 +0000 (13:55 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 11 Dec 2008 13:55:47 +0000 (13:55 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@38105 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

20 files changed:
src/lib/ecore/ecore_plugin.c
src/lib/ecore_con/Ecore_Con.h
src/lib/ecore_con/ecore_con.c
src/lib/ecore_con/ecore_con_private.h
src/lib/ecore_desktop/Ecore_Desktop.h
src/lib/ecore_desktop/ecore_desktop.c
src/lib/ecore_desktop/ecore_desktop_icon.c
src/lib/ecore_desktop/ecore_desktop_menu.c
src/lib/ecore_desktop/ecore_desktop_paths.c
src/lib/ecore_desktop/ecore_desktop_tree.c
src/lib/ecore_directfb/ecore_directfb.c
src/lib/ecore_evas/ecore_evas.c
src/lib/ecore_evas/ecore_evas_directfb.c
src/lib/ecore_evas/ecore_evas_private.h
src/lib/ecore_evas/ecore_evas_win32.c
src/lib/ecore_evas/ecore_evas_wince.c
src/lib/ecore_evas/ecore_evas_x.c
src/lib/ecore_imf/ecore_imf_module.c
src/lib/ecore_x/xcb/ecore_xcb_netwm.c
src/lib/ecore_x/xlib/ecore_x_netwm.c

index 29c195a..068a48a 100644 (file)
 
 static Ecore_List *loaded_plugins = NULL;
 
+static Eina_Bool _hash_keys(const Eina_Hash    *hash,
+                           const char          *key,
+                            void               *list);
+
 /**
  * @defgroup Ecore_Plugin Plugin Functions
  *
@@ -163,7 +167,8 @@ EAPI Ecore_List *
 ecore_plugin_available_get(Ecore_Path_Group *group)
 {
    Ecore_List *avail = NULL;
-   Ecore_Hash *plugins = NULL;
+   Eina_Hash *plugins = NULL;
+   Eina_Iterator *it = NULL;
    char *path;
 
    CHECK_PARAM_POINTER_RETURN("group", group, NULL);
@@ -172,8 +177,7 @@ ecore_plugin_available_get(Ecore_Path_Group *group)
      return NULL;
 
    ecore_list_first_goto(group->paths);
-   plugins = ecore_hash_new(ecore_str_hash, ecore_str_compare);
-   ecore_hash_free_key_cb_set(plugins, free);
+   plugins = eina_hash_string_superfast_new(free);
 
    while ((path = ecore_list_next(group->paths)) != NULL)
      {
@@ -214,21 +218,37 @@ ecore_plugin_available_get(Ecore_Path_Group *group)
             ext = strrchr(ppath, '.');
             *ext = '\0';
 
-            if (!ecore_hash_get(plugins, ppath))
+            if (!eina_hash_find(plugins, ppath))
               {
                  char *key;
 
                  key = strdup(ppath);
-                 ecore_hash_set(plugins, key, key);
+                 eina_hash_add(plugins, key, key);
               }
          }
        closedir(dir);
      }
 
-   ecore_hash_free_key_cb_set(plugins, NULL);
-   avail = ecore_hash_keys(plugins);
+   avail = ecore_list_new();
    ecore_list_free_cb_set(avail, free);
-   ecore_hash_destroy(plugins);
+
+
+   it = eina_hash_iterator_key_new(plugins);
+   if (it)
+     {
+       eina_iterator_foreach(it, EINA_EACH(_hash_keys), avail);
+       eina_iterator_free(it);
+     }
+
+   eina_hash_free(plugins);
+
 
    return avail;
 }
+
+static Eina_Bool
+_hash_keys(const Eina_Hash *hash, const char *key, void *list)
+{
+   ecore_list_append(list, key);
+   return EINA_TRUE;
+}
index d5e0f2c..b2b9d58 100644 (file)
@@ -188,7 +188,7 @@ extern "C" {
    EAPI void             *ecore_con_server_del(Ecore_Con_Server *svr);
    EAPI void             *ecore_con_server_data_get(Ecore_Con_Server *svr);
    EAPI int               ecore_con_server_connected_get(Ecore_Con_Server *svr);
-   EAPI Ecore_List       *ecore_con_server_clients_get(Ecore_Con_Server *svr);
+   EAPI Eina_List       *ecore_con_server_clients_get(Ecore_Con_Server *svr);
    EAPI int               ecore_con_server_send(Ecore_Con_Server *svr, const void *data, int size);
    EAPI void              ecore_con_server_client_limit_set(Ecore_Con_Server *svr, int client_limit, char reject_excess_clients);
    EAPI char             *ecore_con_server_ip_get(Ecore_Con_Server *svr);
index 99054c0..e064747 100644 (file)
@@ -178,7 +178,7 @@ ecore_con_server_add(Ecore_Con_Type compl_type, const char *name, int port,
    svr->created = 1;
    svr->reject_excess_clients = 0;
    svr->client_limit = -1;
-   svr->clients = ecore_list_new();
+   svr->clients = NULL;
    svr->ppid = getpid();
    ecore_con_ssl_server_prepare(svr);
 
@@ -351,8 +351,8 @@ ecore_con_server_connect(Ecore_Con_Type compl_type, const char *name, int port,
    svr->data = (void *)data;
    svr->created = 0;
    svr->reject_excess_clients = 0;
+   svr->clients = NULL;
    svr->client_limit = -1;
-   svr->clients = ecore_list_new();
    ecore_con_ssl_server_prepare(svr);
 
    type = compl_type & ECORE_CON_TYPE;
@@ -551,7 +551,7 @@ ecore_con_server_connected_get(Ecore_Con_Server *svr)
  * @return  The list of clients on this server.
  * @ingroup Ecore_Con_Server_Group
  */
-EAPI Ecore_List *
+EAPI Eina_List *
 ecore_con_server_clients_get(Ecore_Con_Server *svr)
 {
    if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
@@ -782,8 +782,7 @@ ecore_con_client_del(Ecore_Con_Client *cl)
      }
    else
      {
-       if (ecore_list_goto(cl->server->clients, cl))
-         ecore_list_remove(cl->server->clients);
+        cl->server->clients = eina_list_remove(cl->server->clients, cl);
        _ecore_con_client_free(cl);
      }
    return data;
@@ -864,6 +863,7 @@ ecore_con_client_flush(Ecore_Con_Client *cl)
 static void
 _ecore_con_server_free(Ecore_Con_Server *svr)
 {
+   Ecore_Con_Client *cl;
    double t_start, t;
 
    ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
@@ -882,9 +882,12 @@ _ecore_con_server_free(Ecore_Con_Server *svr)
          }
      }
    if (svr->write_buf) free(svr->write_buf);
-   while (!ecore_list_empty_is(svr->clients))
-     _ecore_con_client_free(ecore_list_first_remove(svr->clients));
-   ecore_list_destroy(svr->clients);
+   while (svr->clients)
+     {
+       cl = eina_list_data_get(svr->clients);
+       svr->clients = eina_list_remove(svr->clients, cl);
+       _ecore_con_client_free(cl);
+     }
    if ((svr->created) && (svr->path) && (svr->ppid == getpid()))
      unlink(svr->path);
    if (svr->fd >= 0) close(svr->fd);
@@ -1181,7 +1184,7 @@ _ecore_con_svr_handler(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
    if (svr->delete_me) return 1;
    if ((svr->client_limit >= 0) && (!svr->reject_excess_clients))
      {
-       if (ecore_list_count(svr->clients) >= svr->client_limit) return 1;
+       if (eina_list_count(svr->clients) >= svr->client_limit) return 1;
      }
    /* a new client */
    size_in = sizeof(struct sockaddr_in);
@@ -1223,7 +1226,7 @@ _ecore_con_svr_handler(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
          ecore_main_fd_handler_add(cl->fd, ECORE_FD_READ,
                                    _ecore_con_svr_cl_handler, cl, NULL, NULL);
        ECORE_MAGIC_SET(cl, ECORE_MAGIC_CON_CLIENT);
-       ecore_list_append(svr->clients, cl);
+       eina_list_append(svr->clients, cl);
        if (!svr->path)
          {
             ip = incoming.sin_addr.s_addr;
@@ -1422,7 +1425,7 @@ _ecore_con_svr_udp_handler(void *data, Ecore_Fd_Handler *fd_handler)
                 }
               memcpy(cl->data,  &client_addr, sizeof(client_addr));
               ECORE_MAGIC_SET(cl, ECORE_MAGIC_CON_CLIENT);
-              ecore_list_append(svr->clients, cl);
+              eina_list_append(svr->clients, cl);
 
               ip = client_addr.sin_addr.s_addr;
               snprintf(ipbuf, sizeof(ipbuf),
index db9fb60..c3cbe9f 100644 (file)
@@ -72,7 +72,7 @@ struct _Ecore_Con_Server
    char             *path;
    void             *data;
    Ecore_Fd_Handler *fd_handler;
-   Ecore_List       *clients;
+   Eina_List        *clients;
    int               write_buf_size;
    int               write_buf_offset;
    unsigned char    *write_buf;
index 825e4e9..2b728db 100644 (file)
@@ -34,7 +34,7 @@ struct _Ecore_Desktop
     * space and cycles that just covers up bugs.  On the other hand, it makes 
     * for a more robust library, and it's used everywhere else in ecore.
     */
-   Ecore_Hash         *data, *group, *Categories, *OnlyShowIn, *NotShowIn, *MimeTypes, *Actions;
+   Eina_Hash         *data, *group, *Categories, *OnlyShowIn, *NotShowIn, *MimeTypes, *Actions;
    char               *original_path;
    char               *original_lang;
    char               *eap_name;
@@ -72,7 +72,7 @@ typedef struct _Ecore_Desktop Ecore_Desktop;
 
 struct _Ecore_Desktop_Icon_Theme
 {
-   Ecore_Hash         *data, *group;
+   Eina_Hash         *data, *group;
    Ecore_List         *Inherits;
    Ecore_List         *Directories;
    char               *path;
@@ -92,7 +92,7 @@ typedef struct _Ecore_Desktop_Icon_Theme Ecore_Desktop_Icon_Theme;
 
 struct _Ecore_Desktop_Icon_Theme_Directory
 {
-   Ecore_Hash         *icons;
+   Eina_Hash         *icons;
    char               *path;
    char               *full_path;
    char               *type;
@@ -201,12 +201,12 @@ extern              "C"
                                                            void *data);
    EAPI int            ecore_desktop_paths_shutdown(void);
 
-   Ecore_Hash         *ecore_desktop_paths_to_hash(const char *paths);
+   Eina_Hash         *ecore_desktop_paths_to_hash(const char *paths);
    Ecore_List         *ecore_desktop_paths_to_list(const char *paths);
 
    EAPI int            ecore_desktop_init(void);
    EAPI int            ecore_desktop_shutdown(void);
-   Ecore_Hash         *ecore_desktop_ini_get(const char *file);
+   Eina_Hash         *ecore_desktop_ini_get(const char *file);
    Ecore_Desktop      *ecore_desktop_get(const char *file, const char *lang);
    void                ecore_desktop_save(Ecore_Desktop * desktop);
    EAPI Ecore_List    *ecore_desktop_get_command(Ecore_Desktop * desktop,
@@ -220,7 +220,7 @@ extern              "C"
                                               const char *icon_size,
                                               const char *icon_theme);
 
-   Ecore_Hash         *ecore_desktop_icon_theme_list(void);
+   Eina_Hash         *ecore_desktop_icon_theme_list(void);
    Ecore_Desktop_Icon_Theme *ecore_desktop_icon_theme_get(const char *file,
                                                          const char *lang);
    void                ecore_desktop_icon_theme_destroy(Ecore_Desktop_Icon_Theme
@@ -228,7 +228,7 @@ extern              "C"
 
    EAPI void          
       ecore_desktop_menu_for_each(void (*func)
-                                 (const char *name, const char *path, const char *directory, Ecore_Hash * apps));
+                                 (const char *name, const char *path, const char *directory, Eina_Hash * apps));
    Ecore_Desktop_Tree *ecore_desktop_menu_get(char *file);
 
    Ecore_Desktop_Tree *ecore_desktop_tree_new(char *buffer);
@@ -249,7 +249,7 @@ extern              "C"
                                                    Ecore_Desktop_Tree *
                                                    element);
    Ecore_Desktop_Tree *ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree,
-                                                  Ecore_Hash * element);
+                                                  Eina_Hash * element);
    void                ecore_desktop_tree_remove(Ecore_Desktop_Tree * tree,
                                                 int element);
    int                 ecore_desktop_tree_exist(Ecore_Desktop_Tree * tree,
index 33a52c7..e27f80a 100644 (file)
@@ -14,12 +14,12 @@ extern int          reject_count, not_over_count;
 
 static int          init_count = 0;
 
-static Ecore_Hash  *desktop_cache;
+static Eina_Hash  *desktop_cache = NULL;
 
 Ecore_Desktop      *_ecore_desktop_get(const char *file, const char *lang);
 void                _ecore_desktop_destroy(Ecore_Desktop * desktop);
 
-#define IFGETDUP(src, key, dst) src = (char *)ecore_hash_get(result->group, key); if (src) dst = strdup(src); else dst = NULL;
+#define IFGETDUP(src, key, dst) src = (char *)eina_hash_find(result->group, key); if (src) dst = strdup(src); else dst = NULL;
 #define IFFREE(src) if (src) free(src);  src = NULL;
 
 /**
@@ -33,35 +33,33 @@ void                _ecore_desktop_destroy(Ecore_Desktop * desktop);
 /**
  * Get the contents of a .ini style file.
  *
- * The Ecore_Hash returned is a two level hash, the first level
+ * The Eina_Hash returned is a two level hash, the first level
  * is the groups in the file, one per group, keyed by the name 
  * of that group.  The value of each of those first level hashes
- * is the second level Ecore_Hash, the contents of each group.
+ * is the second level Eina_Hash, the contents of each group.
  *
  * @param   file Full path to the .ini style file.
- * @return  An Ecore_Hash of the files contents.
+ * @return  An Eina_Hash of the files contents.
  * @ingroup Ecore_Desktop_Main_Group
  */
-Ecore_Hash         *
+Eina_Hash         *
 ecore_desktop_ini_get(const char *file)
 {
-   Ecore_Hash         *result;
+   Eina_Hash         *result;
    FILE               *f;
    char                buffer[PATH_MAX];
-   Ecore_Hash         *current = NULL;
+   Eina_Hash         *current = NULL;
 
-   result = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+   result = eina_hash_string_superfast_new(eina_hash_free);
    if (!result) return NULL;
 
    f = fopen(file, "r");
    if (!f)
      {
        fprintf(stderr, "ERROR: Cannot Open File %s\n", file);
-       ecore_hash_destroy(result);
+       eina_hash_free(result);
        return NULL;
      }
-   ecore_hash_free_key_cb_set(result, free);
-   ecore_hash_free_value_cb_set(result, (Ecore_Free_Cb) ecore_hash_destroy);
    *buffer = '\0';
 #ifdef DEBUG
    fprintf(stdout, "PARSING INI %s\n", file);
@@ -84,12 +82,10 @@ ecore_desktop_ini_get(const char *file)
             while ((*c != ']') && (*c != '\n') && (*c != '\0'))
                c++;
             *c++ = '\0';
-            current = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+            current = ein_hash_string_superfast_new(free);
             if (current)
               {
-                 ecore_hash_free_key_cb_set(current, free);
-                 ecore_hash_free_value_cb_set(current, free);
-                 ecore_hash_set(result, strdup(key), current);
+                 eina_hash_add(result, key, current);
 #ifdef DEBUG
                  fprintf(stdout, "  GROUP [%s]\n", key);
 #endif
@@ -121,10 +117,9 @@ ecore_desktop_ini_get(const char *file)
                     c++;
                  *c++ = '\0';
                  /* FIXME: should strip space at end, then unescape value. */
-                 tv = ecore_hash_remove(current, key);
-                 if (tv) free(tv);
+                 eina_hash_del(current, key);
                  if (value[0] != '\0')
-                   ecore_hash_set(current, strdup(key), strdup(value));
+                   eina_hash_add(current, key, strdup(value));
 #ifdef DEBUG
                  fprintf(stdout, "    %s=%s\n", key, value);
 #endif
@@ -158,7 +153,7 @@ ecore_desktop_get(const char *file, const char *lang)
        /* Kill the hash, it takes up way too much memory. */
        if (result->data)
          {
-            ecore_hash_destroy(result->data);
+            eina_hash_free(result->data);
             result->data = NULL;
          }
        result->group = NULL;
@@ -178,7 +173,7 @@ _ecore_desktop_get(const char *file, const char *lang)
    double              begin;
 
    begin = ecore_time_get();
-   result = (Ecore_Desktop *) ecore_hash_get(desktop_cache, (char *)file);
+   result = eina_hash_find(desktop_cache, (char *)file);
    /* Check if the cache is still valid. */
    if (result)
      {
@@ -187,7 +182,7 @@ _ecore_desktop_get(const char *file, const char *lang)
          {
             if (st.st_mtime > result->mtime)
               {
-                 ecore_hash_remove(desktop_cache, result->original_path);
+                 eina_hash_del(desktop_cache, result->original_path);
                  result = NULL;
               }
             stated = 1;
@@ -214,9 +209,9 @@ _ecore_desktop_get(const char *file, const char *lang)
        /* Timestamp the cache, and no need to stat the file twice if the cache was stale. */
        if ((stated) || (stat(result->original_path, &st) >= 0))
          result->mtime = st.st_mtime;
-       result->group = ecore_hash_get(result->data, "Desktop Entry");
+       result->group = eina_hash_find(result->data, "Desktop Entry");
        if (!result->group)
-         result->group = ecore_hash_get(result->data, "KDE Desktop Entry");
+         result->group = eina_hash_find(result->data, "KDE Desktop Entry");
        /* This is a "Desktop" file, probably an application. */
        if (result->group)
          {
@@ -428,42 +423,42 @@ _ecore_desktop_get(const char *file, const char *lang)
                    }
               }
 
-            value = ecore_hash_get(result->group, "MimeType");
+            value = eina_hash_find(result->group, "MimeType");
             if (value)
               result->MimeTypes =
                  ecore_desktop_paths_to_hash(value);
-            value = ecore_hash_get(result->group, "Actions");
+            value = eina_hash_find(result->group, "Actions");
             if (value)
               result->Actions =
                  ecore_desktop_paths_to_hash(value);
-            value = ecore_hash_get(result->group, "OnlyShowIn");
+            value = eina_hash_find(result->group, "OnlyShowIn");
             if (value)
               result->OnlyShowIn =
                  ecore_desktop_paths_to_hash(value);
-            value = ecore_hash_get(result->group, "NotShowIn");
+            value = eina_hash_find(result->group, "NotShowIn");
             if (value)
               result->NotShowIn =
                  ecore_desktop_paths_to_hash(value);
-            value = ecore_hash_get(result->group, "X-KDE-StartupNotify");
+            value = eina_hash_find(result->group, "X-KDE-StartupNotify");
             if (value)
               result->startup = (strcmp(value, "true") == 0);
-            value = ecore_hash_get(result->group, "StartupNotify");
+            value = eina_hash_find(result->group, "StartupNotify");
             if (value)
               result->startup = (strcmp(value, "true") == 0);
-            value = ecore_hash_get(result->group, "X-Enlightenment-WaitExit");
+            value = eina_hash_find(result->group, "X-Enlightenment-WaitExit");
             if (value)
               result->wait_exit = (strcmp(value, "true") == 0);
-            value = ecore_hash_get(result->group, "NoDisplay");
+            value = eina_hash_find(result->group, "NoDisplay");
             if (value)
               result->no_display = (strcmp(value, "true") == 0);
-            value = ecore_hash_get(result->group, "Hidden");
+            value = eina_hash_find(result->group, "Hidden");
             if (value)
               result->hidden = (strcmp(value, "true") == 0);
          }
        else
          {
             /*Maybe it's a 'trash' file - which also follows the Desktop FDO spec */
-            result->group = ecore_hash_get(result->data, "Trash Info");
+            result->group = eina_hash_find(result->data, "Trash Info");
             if (result->group)
               {
                  IFGETDUP(value, "Path", result->path);
@@ -479,7 +474,7 @@ _ecore_desktop_get(const char *file, const char *lang)
             result = NULL;
          }
        else
-          ecore_hash_set(desktop_cache, strdup(result->original_path), result);
+          eina_hash_add(desktop_cache, result->original_path, result);
      }
 
 error:
@@ -504,6 +499,13 @@ error:
    return result;
 }
 
+static Eina_Bool
+_hash_keys(Eina_Hash *hash, const void *key, void *data, void *list)
+{
+  ecore_list_append(list, key);
+  return EINA_TRUE;
+}
+
 void
 ecore_desktop_save(Ecore_Desktop * desktop)
 {
@@ -517,27 +519,20 @@ ecore_desktop_save(Ecore_Desktop * desktop)
          {
             desktop->data = ecore_desktop_ini_get(desktop->original_path);
             desktop->group =
-               (Ecore_Hash *) ecore_hash_get(desktop->data, "Desktop Entry");
+               (Eina_Hash *) eina_hash_find(desktop->data, "Desktop Entry");
             if (!desktop->group)
                desktop->group =
-                  (Ecore_Hash *) ecore_hash_get(desktop->data,
+                  (Eina_Hash *) eina_hash_find(desktop->data,
                                                 "KDE Desktop Entry");
             if (!desktop->group)
               {
                  trash = 1;
                  desktop->group =
-                    (Ecore_Hash *) ecore_hash_get(desktop->data, "Trash Info");
+                    (Eina_Hash *) eina_hash_find(desktop->data, "Trash Info");
               }
          }
        else
-         {
-            desktop->group = ecore_hash_new(ecore_str_hash, ecore_str_compare);
-            if (desktop->group)
-              {
-                 ecore_hash_free_key_cb_set(desktop->group, free);
-                 ecore_hash_free_value_cb_set(desktop->group, free);
-              }
-         }
+         desktop->group = eina_hash_string_superfast_new(free);
      }
 
    if (desktop->group)
@@ -552,9 +547,9 @@ ecore_desktop_save(Ecore_Desktop * desktop)
 
                  real = ecore_file_readlink(desktop->original_path);
                  if (real)
-                    ecore_hash_set(desktop->group,
-                                   strdup("X-Enlightenment-OriginalPath"),
-                                   real);
+                    eina_hash_add(desktop->group,
+                                  "X-Enlightenment-OriginalPath",
+                                  real);
               }
          }
 
@@ -562,106 +557,119 @@ ecore_desktop_save(Ecore_Desktop * desktop)
         commands = ecore_desktop_get_command(desktop, NULL, 0);
        if (commands)
          {
-            temp = ecore_list_first(commands);
-            if (temp)
-               ecore_hash_set(desktop->group, strdup("Exec"), strdup(temp));
-            ecore_list_destroy(commands);
+           temp = ecore_list_first(commands);
+           if (temp)
+             eina_hash_add(desktop->group, "Exec", strdup(temp));
+           ecore_list_destroy(commands);
          }
 
        if (desktop->name)
-          ecore_hash_set(desktop->group, strdup("Name"),
-                         strdup(desktop->name));
+         eina_hash_add(desktop->group, "Name",
+                       strdup(desktop->name));
        if (desktop->generic)
-          ecore_hash_set(desktop->group, strdup("GenericName"),
-                         strdup(desktop->generic));
+         eina_hash_add(desktop->group, "GenericName",
+                       strdup(desktop->generic));
        if (desktop->comment)
-          ecore_hash_set(desktop->group, strdup("Comment"),
-                         strdup(desktop->comment));
+         eina_hash_add(desktop->group, "Comment",
+                       strdup(desktop->comment));
        if (desktop->type)
-          ecore_hash_set(desktop->group, strdup("Type"),
-                         strdup(desktop->type));
+         eina_hash_add(desktop->group, "Type",
+                       strdup(desktop->type));
        if (desktop->URL)
-          ecore_hash_set(desktop->group, strdup("URL"), strdup(desktop->URL));
+         eina_hash_add(desktop->group, "URL", strdup(desktop->URL));
        if (desktop->file)
-          ecore_hash_set(desktop->group, strdup("File"),
-                         strdup(desktop->file));
+         eina_hash_add(desktop->group, "File",
+                       strdup(desktop->file));
        if (desktop->icon)
-          ecore_hash_set(desktop->group, strdup("Icon"),
-                         strdup(desktop->icon));
+         eina_hash_add(desktop->group, "Icon",
+                       strdup(desktop->icon));
        if (desktop->icon_theme)
-          ecore_hash_set(desktop->group, strdup("X-Enlightenment-IconTheme"),
-                         strdup(desktop->icon_theme));
+         eina_hash_add(desktop->group, "X-Enlightenment-IconTheme",
+                       strdup(desktop->icon_theme));
        else
-           ecore_hash_remove(desktop->group, "X-Enlightenment-IconTheme");
+         eina_hash_del(desktop->group, "X-Enlightenment-IconTheme");
        if (desktop->icon_class)
-          ecore_hash_set(desktop->group, strdup("X-Enlightenment-IconClass"),
-                         strdup(desktop->icon_class));
+         eina_hash_add(desktop->group, "X-Enlightenment-IconClass",
+                       strdup(desktop->icon_class));
        else
-           ecore_hash_remove(desktop->group, "X-Enlightenment-IconClass");
+         eina_hash_del(desktop->group, "X-Enlightenment-IconClass");
        if (desktop->icon_path)
-          ecore_hash_set(desktop->group, strdup("X-Enlightenment-IconPath"),
-                         strdup(desktop->icon_path));
+         eina_hash_add(desktop->group, "X-Enlightenment-IconPath",
+                       strdup(desktop->icon_path));
        else
-           ecore_hash_remove(desktop->group, "X-Enlightenment-IconPath");
+         eina_hash_del(desktop->group, "X-Enlightenment-IconPath");
        if (desktop->window_class)
-          ecore_hash_set(desktop->group, strdup("StartupWMClass"),
-                         strdup(desktop->window_class));
+         eina_hash_add(desktop->group, "StartupWMClass",
+                       strdup(desktop->window_class));
        if (desktop->categories)
-          ecore_hash_set(desktop->group, strdup("Categories"),
-                         strdup(desktop->categories));
+         eina_hash_add(desktop->group, "Categories",
+                       strdup(desktop->categories));
        if (desktop->window_name)
-          ecore_hash_set(desktop->group, strdup("X-Enlightenment-WindowName"),
-                         strdup(desktop->window_name));
+         eina_hash_add(desktop->group, "X-Enlightenment-WindowName",
+                       strdup(desktop->window_name));
        else
-           ecore_hash_remove(desktop->group, "X-Enlightenment-WindowName");
+         eina_hash_del(desktop->group, "X-Enlightenment-WindowName");
        if (desktop->window_title)
-          ecore_hash_set(desktop->group, strdup("X-Enlightenment-WindowTitle"),
-                         strdup(desktop->window_title));
+         eina_hash_add(desktop->group, "X-Enlightenment-WindowTitle",
+                       strdup(desktop->window_title));
        else
-           ecore_hash_remove(desktop->group, "X-Enlightenment-WindowTitle");
+         eina_hash_del(desktop->group, "X-Enlightenment-WindowTitle");
        if (desktop->window_role)
-          ecore_hash_set(desktop->group, strdup("X-Enlightenment-WindowRole"),
-                         strdup(desktop->window_role));
+         eina_hash_add(desktop->group, "X-Enlightenment-WindowRole",
+                       strdup(desktop->window_role));
        else
-           ecore_hash_remove(desktop->group, "X-Enlightenment-WindowRole");
-       ecore_hash_remove(desktop->group, "X-KDE-StartupNotify");
+         eina_hash_del(desktop->group, "X-Enlightenment-WindowRole");
+       eina_hash_del(desktop->group, "X-KDE-StartupNotify");
        if (desktop->wait_exit)
-          ecore_hash_set(desktop->group, strdup("X-Enlightenment-WaitExit"),
-                         strdup("true"));
+         eina_hash_add(desktop->group, "X-Enlightenment-WaitExit",
+                       strdup("true"));
        else
-          ecore_hash_remove(desktop->group, "X-Enlightenment-WaitExit");
+         eina_hash_del(desktop->group, "X-Enlightenment-WaitExit");
        if (desktop->startup)
-          ecore_hash_set(desktop->group, strdup("StartupNotify"),
-                         strdup("true"));
+         eina_hash_add(desktop->group, "StartupNotify",
+                       strdup("true"));
        else
-          ecore_hash_remove(desktop->group, "StartupNotify");
+         eina_hash_del(desktop->group, "StartupNotify");
        if (desktop->no_display)
-          ecore_hash_set(desktop->group, strdup("NoDisplay"), strdup("true"));
+         eina_hash_add(desktop->group, "NoDisplay", strdup("true"));
        else
-          ecore_hash_remove(desktop->group, "NoDisplay");
+         eina_hash_del(desktop->group, "NoDisplay");
        if (desktop->hidden)
-          ecore_hash_set(desktop->group, strdup("Hidden"), strdup("true"));
+         eina_hash_add(desktop->group, "Hidden", strdup("true"));
        else
-          ecore_hash_remove(desktop->group, "Hidden");
+         eina_hash_del(desktop->group, "Hidden");
 
        /* FIXME: deal with the ShowIn's and mime stuff. */
 
        if (desktop->path)
-          ecore_hash_set(desktop->group, strdup("Path"),
-                         strdup(desktop->path));
+         eina_hash_add(desktop->group, "Path",
+                       strdup(desktop->path));
        if (desktop->deletiondate)
-          ecore_hash_set(desktop->group, strdup("DeletionDate"),
-                         strdup(desktop->deletiondate));
+         eina_hash_add(desktop->group, "DeletionDate",
+                       strdup(desktop->deletiondate));
 
        if (desktop->original_path)
          {
             FILE               *f;
             Ecore_List         *list;
             char               *key;
+            Eina_Iterator      *it = NULL;
 
             ecore_file_unlink(desktop->original_path);
             f = fopen(desktop->original_path, "wb");
-            list = ecore_hash_keys(desktop->group);
+
+            if ((list = ecore_list_new()))
+              return;
+
+            if ((it = eina_hash_iterator_key_new(desktop->group)))
+              {
+                ecore_list_destroy(list);
+                return;
+              }
+
+            eina_iterator_foreach(it, EINA_EACH(_hash_keys), list);
+            eina_iterator_free(it);
+
             if ((!f) || (!list))
                return;
 
@@ -674,7 +682,7 @@ ecore_desktop_save(Ecore_Desktop * desktop)
               {
                  char               *value;
 
-                 value = (char *)ecore_hash_get(desktop->group, key);
+                 value = (char *)eina_hash_find(desktop->group, key);
                  if ((value) && (value[0] != '\0'))
                     fprintf(f, "%s=%s\n", key, value);
               }
@@ -683,11 +691,11 @@ ecore_desktop_save(Ecore_Desktop * desktop)
 
        if (desktop->data)
          {
-            ecore_hash_destroy(desktop->data);
+            eina_hash_free(desktop->data);
             desktop->data = NULL;
          }
        else
-          ecore_hash_destroy(desktop->group);
+          eina_hash_free(desktop->group);
        desktop->group = NULL;
      }
 }
@@ -710,15 +718,7 @@ ecore_desktop_init()
       return --init_count;
 
    if (!desktop_cache)
-     {
-       desktop_cache = ecore_hash_new(ecore_str_hash, ecore_str_compare);
-       if (desktop_cache)
-         {
-            ecore_hash_free_key_cb_set(desktop_cache, free);
-            ecore_hash_free_value_cb_set(desktop_cache,
-                                      (Ecore_Free_Cb) _ecore_desktop_destroy);
-         }
-     }
+     desktop_cache = eina_hash_string_superfast_new(_ecore_desktop_destroy);
 
    if (!ecore_desktop_icon_init())
       return --init_count;
@@ -744,7 +744,7 @@ ecore_desktop_shutdown()
 
    if (desktop_cache)
      {
-       ecore_hash_destroy(desktop_cache);
+       eina_hash_free(desktop_cache);
        desktop_cache = NULL;
      }
 
@@ -795,14 +795,14 @@ _ecore_desktop_destroy(Ecore_Desktop * desktop)
    IFFREE(desktop->window_name);
    IFFREE(desktop->window_title);
    IFFREE(desktop->window_role);
-   if (desktop->NotShowIn) ecore_hash_destroy(desktop->NotShowIn);
-   if (desktop->OnlyShowIn) ecore_hash_destroy(desktop->OnlyShowIn);
-   if (desktop->Categories) ecore_hash_destroy(desktop->Categories);
-   if (desktop->MimeTypes) ecore_hash_destroy(desktop->MimeTypes);
-   if (desktop->Actions) ecore_hash_destroy(desktop->Actions);
+   if (desktop->NotShowIn) eina_hash_free(desktop->NotShowIn);
+   if (desktop->OnlyShowIn) eina_hash_free(desktop->OnlyShowIn);
+   if (desktop->Categories) eina_hash_free(desktop->Categories);
+   if (desktop->MimeTypes) eina_hash_free(desktop->MimeTypes);
+   if (desktop->Actions) eina_hash_free(desktop->Actions);
    if (desktop->data)
      {
-       ecore_hash_destroy(desktop->data);
+       eina_hash_free(desktop->data);
        desktop->data = NULL;
      }
    desktop->group = NULL;
index 618e3c8..429628b 100644 (file)
@@ -29,7 +29,7 @@ _ecore_desktop_icon_theme_cache_check(Ecore_Desktop_Icon_Theme *icon_theme);
 static const char  *ext[] =
    { "", ".edj", ".png", ".svgz", ".svg", ".xpm", NULL };  /* "" is in case the icon already has an extension, search for that first. */
 static int          init_count = 0;
-static Ecore_Hash  *icon_theme_cache = NULL;
+static Eina_Hash  *icon_theme_cache = NULL;
 
 /**
  * @defgroup Ecore_Desktop_Icon_Group icon theme Functions
@@ -233,7 +233,7 @@ _ecore_desktop_icon_find0(const char *icon, const char *icon_size,
 #ifdef DEBUG
                            printf("FDO icon = %s\n", path);
 #endif
-                            found = ecore_hash_get(directory->icons, path);
+                            found = eina_hash_find(directory->icons, path);
                            if (found)
                              {
                                 found = strdup(found);
@@ -341,7 +341,7 @@ done:
    return found;
 }
 
-Ecore_Hash         *
+Eina_Hash*
 ecore_desktop_icon_theme_list(void)
 {
    static int          loaded = 0;
@@ -382,15 +382,7 @@ ecore_desktop_icon_init()
       return init_count;
 
    if (!icon_theme_cache)
-     {
-       icon_theme_cache = ecore_hash_new(ecore_str_hash, ecore_str_compare);
-       if (icon_theme_cache)
-         {
-            ecore_hash_free_key_cb_set(icon_theme_cache, free);
-            ecore_hash_free_value_cb_set(icon_theme_cache,
-                                      ECORE_FREE_CB(_ecore_desktop_icon_theme_destroy));
-         }
-     }
+     icon_theme_cache = eina_hash_string_superfast_new(_ecore_desktop_icon_theme_destroy);
 
    return init_count;
 }
@@ -411,7 +403,7 @@ ecore_desktop_icon_shutdown()
 
    if (icon_theme_cache)
      {
-       ecore_hash_destroy(icon_theme_cache);
+       eina_hash_free(icon_theme_cache);
        icon_theme_cache = NULL;
      }
 
@@ -422,7 +414,7 @@ ecore_desktop_icon_shutdown()
  * Get the contents of an index.theme file.
  *
  * Everything that is in the index.theme file is returned in the
- * data member of the Ecore_Desktop_Icon_Theme structure, it's an Ecore_Hash 
+ * data member of the Ecore_Desktop_Icon_Theme structure, it's an Eina_Hash 
  * as returned by ecore_desktop_ini_get().  Some of the data in the
  * index.theme file is decoded into specific members of the returned 
  * structure.
@@ -454,7 +446,7 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
 #endif
       }
 
-   result = ecore_hash_get(icon_theme_cache, icon_theme);
+   result = eina_hash_find(icon_theme_cache, icon_theme);
    if (result) goto done;
    if (!theme_dir)
      {
@@ -474,7 +466,7 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
    if (!result) goto error;
    result->data = ecore_desktop_ini_get(theme_path);
    if (!result->data) goto error;
-   result->group = ecore_hash_get(result->data, "Icon Theme");
+   result->group = eina_hash_find(result->data, "Icon Theme");
    if (!result->group) goto error;
 
 
@@ -482,23 +474,23 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
       result->hicolor = 1;
 
    /* According to the spec, name and comment are required, but we can fake those easily enough. */
-   value = ecore_hash_get(result->group, "Name");
+   value = eina_hash_find(result->group, "Name");
    if (!value) value = icon_theme;
    result->name = strdup(value);
-   value = ecore_hash_get(result->group, "Comment");
+   value = eina_hash_find(result->group, "Comment");
    if (!value) value = "No comment provided.";
    result->comment = strdup(value);
-   value = ecore_hash_get(result->group, "Inherits");
+   value = eina_hash_find(result->group, "Inherits");
    if (value)
      {
        result->inherits = strdup(value);
        if (result->inherits)
          result->Inherits = ecore_desktop_paths_to_list(result->inherits);
      }
-   value = ecore_hash_get(result->group, "Example");
+   value = eina_hash_find(result->group, "Example");
    if (!value) value = "exec";
    result->example = strdup(value);
-   value = ecore_hash_get(result->group, "Directories");
+   value = eina_hash_find(result->group, "Directories");
    /* FIXME: Directories is also required, don't feel like faking it for now. */
    if (!value) goto error;
    result->directories = strdup(value);
@@ -511,11 +503,11 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
    ecore_list_first_goto(Directories);
    while ((directory = ecore_list_next(Directories)) != NULL)
      {
-       Ecore_Hash         *sub_group;
+       Eina_Hash         *sub_group;
        Ecore_Desktop_Icon_Theme_Directory *dir;
 
        /* Get the details for this theme directory. */
-       sub_group = ecore_hash_get(result->data, directory);
+       sub_group = eina_hash_find(result->data, directory);
        dir = calloc(1, sizeof (Ecore_Desktop_Icon_Theme_Directory));
        if ((dir) && (sub_group))
          {
@@ -525,14 +517,14 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
              dir->path = strdup(directory);
             snprintf(full_path, PATH_MAX, "%s/%s", theme_dir, directory);
              dir->full_path = strdup(full_path);
-            value = ecore_hash_get(sub_group, "Type");
+            value = eina_hash_find(sub_group, "Type");
             if (!value)
               value = "Threshold";
             dir->type = strdup(value);
-            size = ecore_hash_get(sub_group, "Size");
-            minsize = ecore_hash_get(sub_group, "MinSize");
-            maxsize = ecore_hash_get(sub_group, "MaxSize");
-            threshold = ecore_hash_get(sub_group, "Threshold");
+            size = eina_hash_find(sub_group, "Size");
+            minsize = eina_hash_find(sub_group, "MinSize");
+            maxsize = eina_hash_find(sub_group, "MaxSize");
+            threshold = eina_hash_find(sub_group, "Threshold");
             if (size)
               {
                  if (!minsize)
@@ -558,8 +550,8 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
 
    /* This passes the basic validation tests, mark it as real and cache it. */
    result->path = strdup(theme_path);
-   ecore_hash_set(icon_theme_cache, strdup(icon_theme), result);
-   ecore_hash_destroy(result->data);
+   eina_hash_add(icon_theme_cache, icon_theme, result);
+   eina_hash_free(result->data);
    result->data = NULL;
    result->group = NULL;
 
@@ -576,7 +568,7 @@ error:
    if (theme_path) free(theme_path);
    if (result)
      {
-       if (result->data) ecore_hash_destroy(result->data);
+       if (result->data) eina_hash_free(result->data);
        _ecore_desktop_icon_theme_destroy(result);
      }
    return NULL;
@@ -633,7 +625,7 @@ _ecore_desktop_icon_theme_directory_destroy(Ecore_Desktop_Icon_Theme_Directory *
    if (icon_theme_directory->type)
       free(icon_theme_directory->type);
    if (icon_theme_directory->icons)
-      ecore_hash_destroy(icon_theme_directory->icons);
+      eina_hash_free(icon_theme_directory->icons);
    free(icon_theme_directory);
 }
 
@@ -686,16 +678,14 @@ _ecore_desktop_icon_theme_cache_check(Ecore_Desktop_Icon_Theme *icon_theme)
           {
              if (dir->icons)
               {
-                   ecore_hash_destroy(dir->icons);
+                   eina_hash_free(dir->icons);
                   dir->icons = NULL;
               }
-             dir->icons = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+             dir->icons = eina_hash_string_superfast_new(NULL);
              if (dir->icons)
                {
                  Ecore_List *files;
 
-                  ecore_hash_free_key_cb_set(dir->icons, free);
-                  ecore_hash_free_value_cb_set(dir->icons, free);
                   files = ecore_file_ls(dir->full_path);
                   if (files)
                     {
@@ -704,7 +694,7 @@ _ecore_desktop_icon_theme_cache_check(Ecore_Desktop_Icon_Theme *icon_theme)
                        while ((file = ecore_list_next(files)))
                          {
                             snprintf(full_path, PATH_MAX, "%s/%s", dir->full_path, file);
-                           ecore_hash_set(dir->icons, strdup(file), strdup(full_path));
+                           eina_hash_add(dir->icons, file, strdup(full_path));
                          }
                        ecore_list_destroy(files);
                     }
index 3afc397..85bdb20 100644 (file)
@@ -24,7 +24,7 @@
 struct _ecore_desktop_menu_expand_apps_data
 {
    char               *path;
-   Ecore_Hash         *pool;
+   Eina_Hash          *pool;
    int                 length;
 };
 
@@ -41,7 +41,7 @@ struct _ecore_desktop_menu_generate_data
 {
    char               *name, *path;
    Ecore_Desktop_Tree *rules;
-   Ecore_Hash         *pool, *apps;
+   Eina_Hash         *pool, *apps;
    int                 unallocated;
 
    Ecore_Desktop_Tree *rule;
@@ -88,7 +88,7 @@ static void         _ecore_desktop_menu_add_dirs(Ecore_Desktop_Tree * tree,
 static int          _ecore_desktop_menu_expand_apps(struct
                                                    _ecore_desktop_menu_unxml_data
                                                    *unxml_data, char *app_dir,
-                                                   Ecore_Hash * pool);
+                                                   Eina_Hash * pool);
 static int          _ecore_desktop_menu_check_app(void *data, const char *path);
 
 static int          _ecore_desktop_menu_merge(const void *data,
@@ -123,7 +123,7 @@ static int          _ecore_desktop_menu_apply_rules(struct
 
 EAPI void
 ecore_desktop_menu_for_each(void (*func)
-                           (const char *name, const char *path, const char *directory, Ecore_Hash * apps))
+                           (const char *name, const char *path, const char *directory, Eina_Hash * apps))
 {
    char               *menu_file;
 
@@ -177,9 +177,9 @@ _ecore_desktop_menu_make_apps(const void *data, Ecore_Desktop_Tree * tree,
             char               *path;
             char               *name;
             char               *directory;
-            Ecore_Hash         *apps;
+            Eina_Hash         *apps;
             void                (*func) (char *name, char *path, char *directory,
-                                         Ecore_Hash * apps);
+                                         Eina_Hash * apps);
 
             func = data;
             name = (char *)tree->elements[element].element;
@@ -206,8 +206,8 @@ _ecore_desktop_menu_make_apps(const void *data, Ecore_Desktop_Tree * tree,
             else
                directory = NULL;
             path = (char *)tree->elements[element + 1].element;
-//             pool = (Ecore_Hash *) tree->elements[element + 2].element;
-            apps = (Ecore_Hash *) tree->elements[element + 4].element;
+//             pool = (Eina_Hash *) tree->elements[element + 2].element;
+            apps = (Eina_Hash *) tree->elements[element + 4].element;
             path = &path[11];
 #ifdef DEBUG
             printf("OUTPUTTING MENU - %s \t\t%s \t\t%s\n", path, name, directory);
@@ -650,18 +650,14 @@ static Ecore_Desktop_Tree *
 _ecore_desktop_menu_create_menu()
 {
    Ecore_Desktop_Tree *menu, *rules;
-   Ecore_Hash         *pool, *apps;
+   Eina_Hash         *pool, *apps;
 
    menu = ecore_desktop_tree_new(NULL);
    rules = ecore_desktop_tree_new(NULL);
-   pool = ecore_hash_new(ecore_str_hash, ecore_str_compare);
-   apps = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+   pool = eina_hash_string_superfast_new(free);
+   apps = eina_hash_string_superfast_new(free);
    if ((menu) && (rules) && (pool) && (apps))
      {
-       ecore_hash_free_key_cb_set(pool, free);
-       ecore_hash_free_value_cb_set(pool, free);
-       ecore_hash_free_key_cb_set(apps, free);
-       ecore_hash_free_value_cb_set(apps, free);
        ecore_desktop_tree_extend(menu, "<MENU <    > <> <>");
        ecore_desktop_tree_extend(menu, "<MENU_PATH ");
        ecore_desktop_tree_add_hash(menu, pool);
@@ -671,9 +667,9 @@ _ecore_desktop_menu_create_menu()
    else
      {
        if (apps)
-          ecore_hash_destroy(apps);
+          eina_hash_free(apps);
        if (pool)
-          ecore_hash_destroy(pool);
+          eina_hash_free(pool);
        if (rules)
           ecore_desktop_tree_del(rules);
        if (menu)
@@ -889,10 +885,10 @@ _ecore_desktop_menu_legacy_menu(void *data, const char *path)
      }
    else if (strcmp(".desktop", &file[count - 8]) == 0)
      {
-       Ecore_Hash         *pool;
+       Eina_Hash         *pool;
        Ecore_Desktop_Tree *rules;
 
-       pool = (Ecore_Hash *) legacy_data->current->elements[2].element;
+       pool = (Eina_Hash *) legacy_data->current->elements[2].element;
        rules =
           (Ecore_Desktop_Tree *) legacy_data->current->elements[3].element;
        if (rules->size == 0)
@@ -904,7 +900,7 @@ _ecore_desktop_menu_legacy_menu(void *data, const char *path)
                ecore_desktop_tree_add_child(rules, new_rules);
          }
        sprintf(temp, "%s%s", legacy_data->prefix, file);
-       ecore_hash_set(pool, strdup(temp), strdup(path));
+       eina_hash_add(pool, temp, strdup(path));
 #ifdef DEBUG
 //     printf
 //        ("POOLING - _ecore_desktop_menu_legacy_menu(void *data, %s) - %s - %s\n",
@@ -1066,7 +1062,7 @@ _ecore_desktop_menu_add_dirs(Ecore_Desktop_Tree * tree, Ecore_List * paths,
 
 static int
 _ecore_desktop_menu_expand_apps(struct _ecore_desktop_menu_unxml_data
-                               *unxml_data, char *app_dir, Ecore_Hash * pool)
+                               *unxml_data, char *app_dir, Eina_Hash * pool)
 {
    if (pool)
      {
@@ -1107,12 +1103,17 @@ _ecore_desktop_menu_check_app(void *data, const char *path)
             char               *file;
 
             file = strdup(path + our_data->length);
-            if ((file) && (path))
+            if (file)
               {
-                 for (i = 0; file[i] != '\0'; i++)
-                    if (file[i] == '/')
-                       file[i] = '-';
-                 ecore_hash_set(our_data->pool, file, strdup(path));
+                 if (path)
+                   {
+                      for (i = 0; file[i] != '\0'; i++)
+                        if (file[i] == '/')
+                          file[i] = '-';
+                      eina_hash_add(our_data->pool, file, strdup(path));
+                   }
+                 free(file);
+              }
 #ifdef DEBUG
 //               printf
 //                  ("POOLING - _ecore_desktop_menu_check_app(void *data, %s) - %s\n",
@@ -1423,9 +1424,9 @@ _ecore_desktop_menu_generate(const void *data, Ecore_Desktop_Tree * tree,
             generate_data.unallocated = unxml_data->unallocated;
             generate_data.name = (char *)tree->elements[element].element;
             generate_data.path = (char *)tree->elements[element + 1].element;
-            generate_data.pool = (Ecore_Hash *) tree->elements[element + 2].element;
+            generate_data.pool = (Eina_Hash *) tree->elements[element + 2].element;
             generate_data.rules = (Ecore_Desktop_Tree *) tree->elements[element + 3].element;
-            generate_data.apps = (Ecore_Hash *) tree->elements[element + 4].element;
+            generate_data.apps = (Eina_Hash *) tree->elements[element + 4].element;
 
             /* generate and inherit the pools on the first pass, and preparse the include/exclude logic. */
             if (!generate_data.unallocated)
@@ -1511,10 +1512,10 @@ _ecore_desktop_menu_generate(const void *data, Ecore_Desktop_Tree * tree,
                    {
                       if (unxml_data->stack->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH)
                         {
-                           Ecore_Hash         *ancestor;
+                           Eina_Hash         *ancestor;
 
-                           ancestor = (Ecore_Hash *) unxml_data->stack->elements[i].element;
-                           ecore_hash_for_each_node(ancestor, _ecore_desktop_menu_inherit_apps, generate_data.pool);
+                           ancestor = (Eina_Hash *) unxml_data->stack->elements[i].element;
+                           eina_hash_foreach(ancestor, _ecore_desktop_menu_inherit_apps, generate_data.pool);
                         }
                    }
               }
@@ -1542,12 +1543,12 @@ _ecore_desktop_menu_generate(const void *data, Ecore_Desktop_Tree * tree,
                                 if (type == 'I')
                                   {
                                      generate_data.include = TRUE;
-                                     ecore_hash_for_each_node(generate_data.pool, _ecore_desktop_menu_select_app, &generate_data);
+                                     eina_hash_foreach(generate_data.pool, _ecore_desktop_menu_select_app, &generate_data);
                                   }
                                 else
                                   {
                                      generate_data.include = FALSE;
-                                     ecore_hash_for_each_node(generate_data.apps, _ecore_desktop_menu_select_app, &generate_data);
+                                     eina_hash_foreach(generate_data.apps, _ecore_desktop_menu_select_app, &generate_data);
                                   }
                              }
                         }
@@ -1575,39 +1576,26 @@ _ecore_desktop_menu_is_include(const void *data, Ecore_Desktop_Tree * tree, int
    return 0;
 }
 
-static void
-_ecore_desktop_menu_inherit_apps(void *value, void *user_data)
+static Eina_Bool
+_ecore_desktop_menu_inherit_apps(const Eina_Hash *hash, const void *key, void *value, void *user_data)
 {
-   Ecore_Hash_Node    *node;
-   Ecore_Hash         *pool;
-   char               *key, *app;
-
-   pool = (Ecore_Hash *) user_data;
-   node = (Ecore_Hash_Node *) value;
-   key = (char *)node->key;
-   app = (char *)node->value;
 #ifdef DEBUG
 //   printf("CHECKING %s - %s\n", app, key);
 #endif
-   if (!ecore_hash_get(pool, key))
-      ecore_hash_set(pool, strdup(key), strdup(app));
+   if (!eina_hash_find(user_data, key))
+      eina_hash_add(user_data, key, strdup(value));
 }
 
 static void
-_ecore_desktop_menu_select_app(void *value, void *user_data)
+_ecore_desktop_menu_select_app(const Eina_Hash *hash, const void *key, void *value, void *user_data)
 {
-   Ecore_Hash_Node    *node;
    Ecore_Desktop      *desktop;
    struct _ecore_desktop_menu_generate_data *generate_data;
-   char               *key, *app;
 
-   node = (Ecore_Hash_Node *) value;
    generate_data = (struct _ecore_desktop_menu_generate_data *)user_data;
-   key = (char *)node->key;
-   app = (char *)node->value;
 
    /* FIXME: pass an actuall language parameter. */
-   desktop = ecore_desktop_get(app, NULL);
+   desktop = ecore_desktop_get(value, NULL);
 
    if (desktop)
      {
@@ -1619,16 +1607,16 @@ _ecore_desktop_menu_select_app(void *value, void *user_data)
             desktop->allocated = TRUE;
             if (generate_data->include)
               {
-                 ecore_hash_set(generate_data->apps, key, strdup(app));
+                 eina_hash_add(generate_data->apps, key, strdup(value));
 #ifdef DEBUG
-                 printf("INCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), app, key);
+                 printf("INCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), value, key);
 #endif
               }
             else
               {
-                 ecore_hash_remove(generate_data->apps, key);
+                 eina_hash_del(generate_data->apps, key);
 #ifdef DEBUG
-                 printf("EXCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), app, key);
+                 printf("EXCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), value, key);
 #endif
               }
          }
@@ -1675,7 +1663,7 @@ _ecore_desktop_menu_apply_rules(struct _ecore_desktop_menu_generate_data *genera
               case 'C':
                  {
                     /* Try to match a category. */
-                    if ((desktop->Categories) && (ecore_hash_get(desktop->Categories, &rul[4]) != NULL))
+                    if ((desktop->Categories) && (eina_hash_find(desktop->Categories, &rul[4]) != NULL))
                        sub_result = TRUE;
                     break;
                  }
index ec3975e..9e7ea86 100644 (file)
@@ -898,25 +898,23 @@ _ecore_desktop_paths_cb_exe_exit(void *data, int type, void *event)
 }
 #endif
 
-/** Split a list of paths into an Ecore_Hash.
+/** Split a list of paths into an Eina_Hash.
  *
  * The list of paths can use any one of ;:, to seperate the paths.
  * You can also escape the :;, with \.
  *
  * @param   paths A list of paths.
  */
-Ecore_Hash         *
+Eina_Hash*
 ecore_desktop_paths_to_hash(const char *paths)
 {
-   Ecore_Hash         *result;
+   Eina_Hash          *result;
    char               *path;
    char                buf[PATH_MAX], *p, *pp;
 
    if (!paths) return NULL;
-   result = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+   result = eina_hash_string_superfast_new(free);
    if (!result) return NULL;
-   ecore_hash_free_key_cb_set(result, free);
-   ecore_hash_free_value_cb_set(result, free);
 
    path = strdup(paths);
    if (path)
@@ -942,7 +940,7 @@ ecore_desktop_paths_to_hash(const char *paths)
                  p++;
               }
             *pp = '\0';
-            if (*buf) ecore_hash_set(result, strdup(buf), strdup(buf));
+            if (*buf) eina_hash_add(result, buf, strdup(buf));
             if (*p) p++;
             else p = NULL;
          }
@@ -951,7 +949,7 @@ ecore_desktop_paths_to_hash(const char *paths)
    return result;
 }
 
-/** Split a list of paths into an Ecore_Hash.
+/** Split a list of paths into an Eina_Hash.
  *
  * The list of paths can use any one of ;:, to seperate the paths.
  * You can also escape the :;, with \.
index e8bf09e..8abfb78 100644 (file)
@@ -3,8 +3,11 @@
 #include "Ecore_Desktop.h"
 #include "ecore_desktop_private.h"
 
-static void         ecore_desktop_tree_dump_each_hash_node(void *value,
-                                                          void *user_data);
+static Eina_Bool
+ecore_desktop_tree_dump_each_hash_node(const Eina_Hash *hash,
+                                      const void *key,
+                                      void *value,
+                                      void *user_data);
 
 /* Just a quick and dirty tree implemtation that will likely get replaced by 
  * something much saner at a later date.  I wrote most of this while falling
@@ -172,7 +175,7 @@ ecore_desktop_tree_add_child(Ecore_Desktop_Tree * tree,
 }
 
 Ecore_Desktop_Tree *
-ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree, Ecore_Hash * element)
+ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree, Eina_Hash * element)
 {
    tree->elements =
       (Ecore_Desktop_Tree_Element *) realloc(tree->elements,
@@ -310,10 +313,10 @@ ecore_desktop_tree_dump(Ecore_Desktop_Tree * tree, int level)
 
                lev = level + 1;
                printf("HASH ELEMENT TYPE\n");
-               ecore_hash_for_each_node((Ecore_Hash *) tree->elements[i].
-                                        element,
-                                        ecore_desktop_tree_dump_each_hash_node,
-                                        &lev);
+               eina_hash_foreach((Eina_Hash *) tree->elements[i].
+                                 element,
+                                 ecore_desktop_tree_dump_each_hash_node,
+                                 &lev);
             }
             break;
 
@@ -326,18 +329,19 @@ ecore_desktop_tree_dump(Ecore_Desktop_Tree * tree, int level)
      }
 }
 
-static void
-ecore_desktop_tree_dump_each_hash_node(void *value, void *user_data)
+static Eina_Bool
+ecore_desktop_tree_dump_each_hash_node(const Eina_Hash *hash,
+                                      const void *key,
+                                      void *value,
+                                      void *user_data)
 {
-   Ecore_Hash_Node    *node;
    int                 level;
    int                 j;
 
-   node = (Ecore_Hash_Node *) value;
    level = *((int *)user_data);
    for (j = 0; j < level; j++)
       printf(".");
-   printf("%s = %s\n", (char *)node->key, (char *)node->value);
+   printf("%s = %s\n", (char *)key, (char *)value);
 }
 
 void
@@ -351,7 +355,7 @@ ecore_desktop_tree_del(Ecore_Desktop_Tree * tree)
           ecore_desktop_tree_del((Ecore_Desktop_Tree *) tree->elements[i].
                                  element);
        else if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH)
-          ecore_hash_destroy((Ecore_Hash *) tree->elements[i].element);
+          eina_hash_free((Eina_Hash *) tree->elements[i].element);
      }
 
    E_FREE(tree->elements);
index ce4bb76..3b5a11e 100644 (file)
@@ -43,7 +43,7 @@ static Ecore_Fd_Handler *_window_event_fd_handler_handle = NULL;
 static Ecore_Fd_Handler *_input_event_fd_handler_handle = NULL;
 
 /* this hash is to store all the possible key names for fast lookup */
-static Ecore_Hash *_ecore_directfb_key_symbols_hash = NULL;
+static Eina_Hash *_ecore_directfb_key_symbols_hash = NULL;
 
 
 static IDirectFB *_dfb = NULL;                 // the main interface
@@ -163,7 +163,7 @@ _ecore_directfb_event_handle_key_down(DFBEvent *evt)
        {
                case DFEC_INPUT:
                        key_symbol = evt->input.key_symbol;
-                       k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
+                       k = eina_hash_find(_ecore_directfb_key_symbols_hash, &key_symbol);
 
                        if(!k) 
                        {
@@ -179,7 +179,7 @@ _ecore_directfb_event_handle_key_down(DFBEvent *evt)
              
                case DFEC_WINDOW:
                        key_symbol = evt->window.key_symbol;
-                       k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
+                       k = eina_hash_find(_ecore_directfb_key_symbols_hash, &key_symbol);
 
                        if(!k) 
                        {
@@ -211,7 +211,7 @@ _ecore_directfb_event_handle_key_up(DFBEvent *evt)
        {
                case DFEC_INPUT:
                        key_symbol = evt->input.key_symbol;
-                       k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
+                       k = eina_hash_find(_ecore_directfb_key_symbols_hash, &key_symbol);
 
                        
                        if(!k) 
@@ -228,7 +228,7 @@ _ecore_directfb_event_handle_key_up(DFBEvent *evt)
              
                case DFEC_WINDOW:
                        key_symbol = evt->window.key_symbol;
-                       k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
+                       k = eina_hash_find(_ecore_directfb_key_symbols_hash, &key_symbol);
 
                        if(!k) 
                        {
@@ -698,14 +698,14 @@ ecore_directfb_init(const char *name)
        ECORE_DIRECTFB_EVENT_WHEEL = ecore_event_type_new();;
 
        /* create the hash table for the keynames */
-       _ecore_directfb_key_symbols_hash = ecore_hash_new(_ecore_directfb_hash_create,_ecore_directfb_hash_compare);
+       _ecore_directfb_key_symbols_hash = eina_hash_int32_new(NULL);
        for(i=0; i<_ecore_directfb_key_symbols_count; i++)
        {
                struct keymap *k;
                k = malloc(sizeof(struct keymap));
                k->name = _ecore_directfb_key_symbols[i].name;
                k->string = _ecore_directfb_key_symbols[i].string;
-               ecore_hash_set(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id, k);
+               eina_hash_add(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id, k);
        }
        /* create the hash for the windows(key = windowid, val = Ecore_DirectFB_Window struct) */
        return _ecore_directfb_init_count;
@@ -728,8 +728,8 @@ ecore_directfb_shutdown(void)
        for(i=0; i<_ecore_directfb_key_symbols_count; i++)
        {
                struct keymap *k;
-               k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
-               ecore_hash_remove(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
+               k = eina_hash_find(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
+               eina_hash_del(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
                free(k);
        }
        
index e1a37b5..721cccc 100644 (file)
@@ -687,7 +687,7 @@ ecore_evas_data_get(const Ecore_Evas *ee, const char *key)
 
    if (!key) return NULL;
 
-   return evas_hash_find(ee->data, key);
+   return eina_hash_find(ee->data, key);
 }
 
 /**
@@ -717,9 +717,13 @@ ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data)
 
    if (!key) return;
 
-   ee->data = evas_hash_del(ee->data, key, NULL);
+   eina_hash_del(ee->data, key, NULL);
    if (data)
-     ee->data = evas_hash_add(ee->data, key, data);
+     {
+       if (!ee->data)
+        ee->data = eina_hash_string_superfast_new(NULL);
+       eina_hash_add(ee->data, key, data);
+     }
 }
 
 #define IFC(_ee, _fn)  if (_ee->engine.func->_fn) {_ee->engine.func->_fn
@@ -2410,7 +2414,7 @@ _ecore_evas_free(Ecore_Evas *ee)
      {
        _ecore_evas_free(ee->sub_ecore_evas->data);
      }
-   if (ee->data) evas_hash_free(ee->data);
+   if (ee->data) eina_hash_free(ee->data);
    if (ee->name) free(ee->name);
    if (ee->prop.title) free(ee->prop.title);
    if (ee->prop.name) free(ee->prop.name);
index b809254..16ba4f4 100644 (file)
@@ -14,7 +14,7 @@ static int _ecore_evas_fps_debug = 0;
 static Ecore_Event_Handler *ecore_evas_event_handlers[13];
 
 static Ecore_Evas *ecore_evases = NULL;
-static Evas_Hash *ecore_evases_hash = NULL;
+static Eina_Hash *ecore_evases_hash = NULL;
 
 static Ecore_Idle_Enterer *ecore_evas_directfb_idle_enterer = NULL;
 
@@ -90,19 +90,19 @@ _ecore_evas_directfb_winid_str_get(Ecore_X_Window win)
 
 static Ecore_Evas *
 _ecore_evas_directfb_match(DFBWindowID win)
-{    
+{
    Ecore_Evas *ee;
-   
-   ee = evas_hash_find(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(win));
+
+   ee = eina_hash_find(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(win));
    return ee;
 }
-       
-static void 
+
+static void
 _ecore_evas_directfb_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
 {
    ee->mouse.x = x;
    ee->mouse.y = y;
-   
+
    if (ee->prop.cursor.object)
      {
        evas_object_show(ee->prop.cursor.object);
@@ -324,19 +324,19 @@ _ecore_evas_directfb_init(void)
    ecore_evas_event_handlers[10]  = NULL;
    ecore_evas_event_handlers[11]  = NULL;
    ecore_evas_event_handlers[12]  = NULL;
-   
+
    return _ecore_evas_init_count;
 }
 
 /* engine functions */
 /********************/
-       
+
 static void
 _ecore_evas_directfb_free(Ecore_Evas *ee)
 {
-   ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
+   eina_hash_del(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
    ecore_directfb_window_del(ee->engine.directfb.window);
-   ecore_evases = _ecore_list2_remove(ecore_evases, ee);   
+   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
    _ecore_evas_directfb_shutdown();
    ecore_directfb_shutdown();
 }
@@ -601,12 +601,14 @@ ecore_evas_directfb_new(const char *disp_name, int windowed, int x, int y, int w
        evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
      }
    ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
-   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
-   
+   if (!ecore_evases_hash)
+     ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+   eina_hash_add(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
+
    return ee;
 #else
    disp_name = NULL;
    windowed = x = y = w = h = 0;
    return NULL;
-#endif   
+#endif
 }
index 1bcfd92..6ec179b 100644 (file)
@@ -233,7 +233,7 @@ struct _Ecore_Evas
    Eina_Bool   should_be_visible : 1;
    Eina_Bool   alpha  : 1;
 
-   Evas_Hash  *data;
+   Eina_Hash  *data;
 
    struct {
       int      x, y;
index 381c23c..6660f0f 100644 (file)
@@ -29,7 +29,7 @@ static int _ecore_evas_fps_debug  = 0;
 static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
 static Ecore_Idle_Enterer  *ecore_evas_idle_enterer = NULL;
 static Ecore_Evas          *ecore_evases = NULL;
-static Evas_Hash           *ecore_evases_hash = NULL;
+static Eina_Hash           *ecore_evases_hash = NULL;
 
 static int _ecore_evas_win32_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event);
 
@@ -207,7 +207,7 @@ _ecore_evas_win32_match(Ecore_Win32_Window *window)
 {
    Ecore_Evas *ee;
 
-   ee = evas_hash_find(ecore_evases_hash, _ecore_evas_win32_winid_str_get(window));
+   ee = eina_hash_find(ecore_evases_hash, _ecore_evas_win32_winid_str_get(window));
 
    return ee;
 }
@@ -586,7 +586,7 @@ static void
 _ecore_evas_win32_free(Ecore_Evas *ee)
 {
    ecore_win32_window_del(ee->engine.win32.window);
-   ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
+   eina_hash_del(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
    ecore_evases = _ecore_list2_remove(ecore_evases, ee);
    _ecore_evas_win32_shutdown();
    ecore_win32_shutdown();
@@ -1178,7 +1178,9 @@ _ecore_evas_win32_new_internal(int (*_ecore_evas_engine_init)(Ecore_Evas *ee),
    evas_key_lock_add(ee->evas, "Scroll_Lock");
 
    ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
-   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
+   if (!ecore_evases_hash)
+     ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+   eina_hash_add(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
 
    return ee;
 }
index ed30b67..e6e306e 100644 (file)
@@ -32,7 +32,7 @@ static int _ecore_evas_fps_debug  = 0;
 static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
 static Ecore_Idle_Enterer  *ecore_evas_idle_enterer = NULL;
 static Ecore_Evas          *ecore_evases = NULL;
-static Evas_Hash           *ecore_evases_hash = NULL;
+static Eina_Hash           *ecore_evases_hash = NULL;
 
 static int _ecore_evas_wince_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event);
 
@@ -206,7 +206,7 @@ _ecore_evas_wince_match(Ecore_WinCE_Window *window)
 {
    Ecore_Evas *ee;
 
-   ee = evas_hash_find(ecore_evases_hash, _ecore_evas_wince_winid_str_get(window));
+   ee = eina_hash_find(ecore_evases_hash, _ecore_evas_wince_winid_str_get(window));
 
    return ee;
 }
@@ -507,7 +507,7 @@ static void
 _ecore_evas_wince_free(Ecore_Evas *ee)
 {
    ecore_wince_window_del(ee->engine.wince.window);
-   ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
+   eina_hash_del(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
    ecore_evases = _ecore_list2_remove(ecore_evases, ee);
    _ecore_evas_wince_shutdown();
    ecore_wince_shutdown();
@@ -988,7 +988,9 @@ ecore_evas_software_wince_new_internal(int                 backend,
    evas_key_lock_add(ee->evas, "Scroll_Lock");
 
    ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
-   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
+   if (!ecore_evases_hash)
+     ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+   eina_hash_add(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
 
    return ee;
 }
index cfb935e..985b149 100644 (file)
@@ -22,7 +22,7 @@ static int _ecore_evas_init_count = 0;
 static int _ecore_evas_fps_debug = 0;
 
 static Ecore_Evas *ecore_evases = NULL;
-static Evas_Hash *ecore_evases_hash = NULL;
+static Eina_Hash *ecore_evases_hash = NULL;
 static Ecore_Event_Handler *ecore_evas_event_handlers[18];
 static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
 
@@ -372,7 +372,7 @@ _ecore_evas_x_match(Ecore_X_Window win)
 {
    Ecore_Evas *ee;
 
-   ee = evas_hash_find(ecore_evases_hash, _ecore_evas_x_winid_str_get(win));
+   ee = eina_hash_find(ecore_evases_hash, _ecore_evas_x_winid_str_get(win));
    return ee;
 }
 
@@ -1330,14 +1330,14 @@ _ecore_evas_x_free(Ecore_Evas *ee)
 #else
    ee->engine.x.damages = 0;
 #endif /* ! HAVE_ECORE_X_XCB */
-   ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+   eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
    while (ee->engine.x.win_extra)
      {
        Ecore_X_Window *winp;
 
        winp = ee->engine.x.win_extra->data;
        ee->engine.x.win_extra = eina_list_remove_list(ee->engine.x.win_extra, ee->engine.x.win_extra);
-       ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(*winp), ee);
+       eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(*winp), ee);
        free(winp);
      }
    ecore_evases = _ecore_list2_remove(ecore_evases, ee);
@@ -1838,7 +1838,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
        ee->shaped = 0;
        ee->alpha = alpha;
        ecore_x_window_del(ee->engine.x.win);
-       ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
        if (ee->alpha)
          {
             if (ee->prop.override)
@@ -1886,7 +1886,9 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
        evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
        evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
        ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
-       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       if (!ecore_evases_hash)
+         ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+       eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
        if (ee->prop.borderless)
          ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
        if (ee->visible) ecore_x_window_show(ee->engine.x.win);
@@ -1917,7 +1919,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
        ee->shaped = 0;
        ee->alpha = alpha;
        ecore_x_window_del(ee->engine.x.win);
-       ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
        if (ee->alpha)
          {
             if (ee->prop.override)
@@ -1958,7 +1960,9 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
        evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
        evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
        ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
-       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       if (!ecore_evases_hash)
+         ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+       eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
        if (ee->prop.borderless)
          ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
        if (ee->visible) ecore_x_window_show(ee->engine.x.win);
@@ -1981,7 +1985,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
        ee->shaped = 0;
        ee->alpha = alpha;
        ecore_x_window_del(ee->engine.x.win);
-       ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
        if (ee->alpha)
          {
             if (ee->prop.override)
@@ -2016,7 +2020,9 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
        evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
        evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
        ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
-       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       if (!ecore_evases_hash)
+         ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+       eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
        if (ee->prop.borderless)
          ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
        if (ee->visible) ecore_x_window_show(ee->engine.x.win);
@@ -2832,7 +2838,9 @@ ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent,
    evas_key_lock_add(ee->evas, "Scroll_Lock");
 
    ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
-   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+   if (!ecore_evases_hash)
+     ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+   eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
    return ee;
 #else
    return NULL;
@@ -2933,7 +2941,9 @@ ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window wi
      {
        *winp = win;
        ee->engine.x.win_extra = eina_list_append(ee->engine.x.win_extra, winp);
-       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
+       if (!ecore_evases_hash)
+         ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+       eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
      }
 #else
 #endif
@@ -3020,7 +3030,9 @@ ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent,
    evas_key_lock_add(ee->evas, "Scroll_Lock");
 
    ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
-   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+   if (!ecore_evases_hash)
+     ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+   eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
 # endif /* HAVE_ECORE_X_XCB */
 
    return ee;
@@ -3279,7 +3291,9 @@ ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent,
    evas_key_lock_add(ee->evas, "Scroll_Lock");
 
    ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
-   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+   if (!ecore_evases_hash)
+     ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+   eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
    return ee;
 #else
    return NULL;
@@ -3493,7 +3507,9 @@ ecore_evas_software_x11_16_new(const char *disp_name, Ecore_X_Window parent,
    evas_key_lock_add(ee->evas, "Scroll_Lock");
 
    ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
-   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+   if (!ecore_evases_hash)
+     ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+   eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
    return ee;
 #else
    return NULL;
@@ -3594,7 +3610,9 @@ ecore_evas_software_x11_16_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window
      {
        *winp = win;
        ee->engine.x.win_extra = eina_list_append(ee->engine.x.win_extra, winp);
-       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
+       if(!ecore_evases_hash)
+         ecore_evases_hash = eina_hash_string_superfast_new(NULL);
+       eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
      }
 #else
 #endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
index d6b0be1..d1fd75f 100644 (file)
@@ -15,8 +15,14 @@ static void _ecore_imf_module_append(Ecore_Plugin *plugin, const Ecore_IMF_Conte
 static void _ecore_imf_module_free(Ecore_IMF_Module *module);
 static int _ecore_imf_modules_exists(const char *ctx_id);
 
+typedef struct _Ecore_IMF_Selector
+{
+  const char   *toselect;
+  void         *selected;
+} Ecore_IMF_Selector;
+
 static Ecore_Path_Group *ecore_imf_modules_path = NULL;
-static Ecore_Hash *modules = NULL;
+static Eina_Hash *modules = NULL;
 
 void
 ecore_imf_module_init(void)
@@ -46,7 +52,7 @@ ecore_imf_module_shutdown(void)
 {
    if (modules)
      {
-       ecore_hash_destroy(modules);
+       eina_hash_free(modules);
        modules = NULL;
      }
 
@@ -54,27 +60,35 @@ ecore_imf_module_shutdown(void)
    ecore_imf_modules_path = NULL;
 }
 
+static Eina_Bool
+_hash_module_available_get(const Eina_Hash *hash, int *data, void *list)
+{
+  ecore_list_append(list, data);
+  return EINA_TRUE;
+}
+
 Ecore_List *
 ecore_imf_module_available_get(void)
 {
    Ecore_List *values;
+   Eina_Iterator *it = NULL;
    unsigned int i = 0;
 
    if (!modules) return NULL;
 
-   /* ecore_hash_values() */
    values = ecore_list_new();
-   while (i < ecore_prime_table[modules->size])
-     {
-       if (modules->buckets[i])
-         {
-            Ecore_Hash_Node *node;
+   if (!values) return NULL;
 
-            for (node = modules->buckets[i]; node; node = node->next)
-              ecore_list_append(values, node->value);
-         }
-       i++;
+   it = eina_hash_iterator_data_new(modules);
+   if (!it)
+     {
+       ecore_list_destroy(values);
+       return NULL;
      }
+
+   eina_iterator_foreach(it, EINA_EACH(_hash_module_available_get), values);
+   eina_iterator_free(it);
+
    ecore_list_first_goto(values);
 
    return values;
@@ -84,7 +98,7 @@ Ecore_IMF_Module *
 ecore_imf_module_get(const char *ctx_id)
 {
    if (!modules) return NULL;
-   return ecore_hash_get(modules, ctx_id);
+   return eina_hash_find(modules, ctx_id);
 }
 
 Ecore_IMF_Context *
@@ -94,7 +108,7 @@ ecore_imf_module_context_create(const char *ctx_id)
    Ecore_IMF_Context *ctx = NULL;
 
    if (!modules) return NULL;
-   module = ecore_hash_get(modules, ctx_id);
+   module = eina_hash_find(modules, ctx_id);
    if (module)
      {
        ctx = module->create();
@@ -109,17 +123,55 @@ ecore_imf_module_context_create(const char *ctx_id)
    return ctx;
 }
 
+static Eina_Bool
+_hash_ids_get(const Eina_Hash *hash, const char *key, void *list)
+{
+  ecore_list_append(list, key);
+  return EINA_TRUE;
+}
+
 Ecore_List *
 ecore_imf_module_context_ids_get(void)
 {
+   Ecore_List *l = NULL;
+   Eina_Iterator *it = NULL;
+
    if (!modules) return NULL;
-   return ecore_hash_keys(modules);
+
+   l = ecore_list_new();
+   if (!l) return NULL;
+
+   it = eina_hash_iterator_key_new(modules);
+   if (!it)
+     {
+       ecore_list_destroy(l);
+       return NULL;
+     }
+
+   eina_iterator_foreach(it, EINA_EACH(_hash_ids_get), l);
+   eina_iterator_free(it);
+
+   return l;
+}
+
+static Eina_Bool
+_hash_ids_by_canvas_type_get(const Eina_Hash *hash, int *data, void *fdata)
+{
+   Ecore_IMF_Module *module = data;
+   Ecore_IMF_Selector *selector = fdata;
+
+   if (!strcmp(module->info->canvas_type, selector->toselect))
+     ecore_list_append(selector->selected, (void *)module->info->id);
+
+   return EINA_TRUE;
 }
 
 Ecore_List *
 ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type)
 {
+   Ecore_IMF_Selector selector;
    Ecore_List *values;
+   Eina_Iterator *it = NULL;
    unsigned int i = 0;
 
    if (!modules) return NULL;
@@ -128,21 +180,20 @@ ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type)
      return ecore_imf_module_context_ids_get();
 
    values = ecore_list_new();
-   while (i < ecore_prime_table[modules->size])
+   if (!values) return NULL;
+
+   it = eina_hash_iterator_data_new(modules);
+   if (!it)
      {
-       if (modules->buckets[i])
-         {
-            Ecore_Hash_Node *node;
-
-            for (node = modules->buckets[i]; node; node = node->next)
-              {
-                 Ecore_IMF_Module *module = node->value;
-                 if (strcmp(module->info->canvas_type, canvas_type) == 0)
-                   ecore_list_append(values, (void *) module->info->id);
-              }
-         }
-       i++;
+       ecore_list_destroy(values);
+       return NULL;
      }
+
+   selector.toselect = canvas_type;
+   selector.selected = values;
+   eina_iterator_foreach(it, EINA_EACH(_hash_ids_by_canvas_type_get), &selector);
+   eina_iterator_free(it);
+
    ecore_list_first_goto(values);
 
    return values;
@@ -215,11 +266,7 @@ _ecore_imf_module_append(Ecore_Plugin *plugin,
    Ecore_IMF_Module *module;
 
    if (!modules)
-     {
-       modules = ecore_hash_new(ecore_str_hash, ecore_str_compare);
-       ecore_hash_free_key_cb_set(modules, free);
-       ecore_hash_free_value_cb_set(modules, (Ecore_Free_Cb) _ecore_imf_module_free);
-     }
+     modules = eina_hash_string_superfast_new(_ecore_imf_module_free);
 
    module = malloc(sizeof(Ecore_IMF_Module));
    module->plugin = plugin;
@@ -227,7 +274,7 @@ _ecore_imf_module_append(Ecore_Plugin *plugin,
    /* cache imf_module_create as it may be used several times */
    module->create = imf_module_create;
 
-   ecore_hash_set(modules, strdup(info->id), module);
+   eina_hash_add(modules, info->id, module);
 }
 
 static void
@@ -244,6 +291,13 @@ _ecore_imf_module_free(Ecore_IMF_Module *module)
 static int
 _ecore_imf_modules_exists(const char *ctx_id)
 {
+   Eina_Iterator *it = NULL;
+
    if (!modules) return 0;
-   return (ecore_hash_get(modules, ctx_id) != NULL);
+   if (!ctx_id) return 0;
+
+   if (eina_hash_find(modules, ctx_id))
+     return 1;
+
+   return 0;
 }
index 13026b1..e491043 100644 (file)
@@ -60,7 +60,7 @@ static void  _ecore_x_netwm_startup_info_free(void *data);
  * Local variables
  */
 
-static Ecore_Hash *startup_info = NULL;
+static Eina_Hash *startup_info = NULL;
 
 /**
  * Initialize the NetWM module
@@ -68,11 +68,7 @@ static Ecore_Hash *startup_info = NULL;
 EAPI void
 ecore_x_netwm_init(void)
 {
-   startup_info = ecore_hash_new(ecore_direct_hash, ecore_direct_compare);
-   if (startup_info)
-     {
-       ecore_hash_free_value_cb_set(startup_info, _ecore_x_netwm_startup_info_free);
-     }
+   startup_info = eina_hash_string_superfast_new(_ecore_x_netwm_startup_info_free);
 }
 
 /**
@@ -82,7 +78,7 @@ EAPI void
 ecore_x_netwm_shutdown(void)
 {
    if (startup_info)
-     ecore_hash_destroy(startup_info);
+     eina_hash_free(startup_info);
    startup_info = NULL;
 }
 
@@ -2765,11 +2761,13 @@ _ecore_x_netwm_startup_info_begin(Ecore_X_Window window,
 {
 #if 0
    Ecore_X_Startup_Info *info;
+   unsigned char       exists = 0;
 
    if (!startup_info) return 0;
-   info = ecore_hash_get(startup_info, (void *)window);
+   info = eina_hash_find(startup_info, (void *)window);
    if (info)
      {
+        exists = 1;
        printf("Already got info for win: 0x%x\n", window);
        _ecore_x_netwm_startup_info_free(info);
      }
@@ -2787,7 +2785,10 @@ _ecore_x_netwm_startup_info_begin(Ecore_X_Window window,
    memcpy(info->buffer, data, 20);
    info->length += 20;
    info->buffer[info->length] = 0;
-   ecore_hash_set(startup_info, (void *)info->win, info);
+   if (exists)
+     eina_hash_modify(startup_info, (void *)info->win, info);
+   else
+     eina_hash_add(startup_info, (void *)info->win, info);
    if (strlen(info->buffer) != 20)
      {
        /* We have a '\0' in there, the message is done */
@@ -2810,7 +2811,7 @@ _ecore_x_netwm_startup_info(Ecore_X_Window window,
    char *p;
 
    if (!startup_info) return 0;
-   info = ecore_hash_get(startup_info, (void *)window);
+   info = eina_hash_find(startup_info, (void *)window);
    if (!info) return 0;
    if ((info->length + 20) > info->buffer_size)
      {
@@ -2818,7 +2819,7 @@ _ecore_x_netwm_startup_info(Ecore_X_Window window,
        info->buffer = realloc(info->buffer, info->buffer_size * sizeof(char));
        if (!info->buffer)
          {
-            ecore_hash_remove(startup_info, (void *)info->win);
+            eina_hash_del(startup_info, (void *)info->win);
             _ecore_x_netwm_startup_info_free(info);
             return 0;
          }
@@ -2922,7 +2923,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
    p = strchr(info->buffer, ':');
    if (!p)
      {
-       ecore_hash_remove(startup_info, (void *)info->win);
+       eina_hash_del(startup_info, (void *)info->win);
        _ecore_x_netwm_startup_info_free(info);
        return 0;
      }
@@ -2943,7 +2944,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
      event = ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
    else
      {
-       ecore_hash_remove(startup_info, (void *)info->win);
+       eina_hash_del(startup_info, (void *)info->win);
        _ecore_x_netwm_startup_info_free(info);
        return 0;
      }
@@ -2952,7 +2953,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
 
    if (!_ecore_x_netwm_startup_info_parse(info, p))
      {
-       ecore_hash_remove(startup_info, (void *)info->win);
+       eina_hash_del(startup_info, (void *)info->win);
        _ecore_x_netwm_startup_info_free(info);
        return 0;
      }
@@ -2962,7 +2963,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
        e = calloc(1, sizeof(Ecore_X_Event_Startup_Sequence));
        if (!e)
          {
-            ecore_hash_remove(startup_info, (void *)info->win);
+            eina_hash_del(startup_info, (void *)info->win);
             _ecore_x_netwm_startup_info_free(info);
             return 0;
          }
@@ -2972,7 +2973,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
 
    if (event == ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE)
      {
-       ecore_hash_remove(startup_info, (void *)info->win);
+        eina_hash_del(startup_info, (void *)info->win);
        _ecore_x_netwm_startup_info_free(info);
      }
    else
index dacd7f8..7cf07e5 100644 (file)
@@ -56,21 +56,19 @@ static void  _ecore_x_netwm_startup_info_free(void *data);
  * Local variables
  */
 
-static Ecore_Hash *startup_info = NULL;
+static Eina_Hash *startup_info = NULL;
 
 EAPI void
 ecore_x_netwm_init(void)
 {
-   startup_info = ecore_hash_new(ecore_direct_hash, ecore_direct_compare);
-   if (startup_info)
-     ecore_hash_free_value_cb_set(startup_info, _ecore_x_netwm_startup_info_free);
+   startup_info = eina_hash_string_superfast_new(_ecore_x_netwm_startup_info_free);
 }
 
 EAPI void
 ecore_x_netwm_shutdown(void)
 {
    if (startup_info)
-     ecore_hash_destroy(startup_info);
+     eina_hash_free(startup_info);
    startup_info = NULL;
 }
 
@@ -1140,11 +1138,13 @@ _ecore_x_netwm_startup_info_begin(Ecore_X_Window win, char *data)
 {
 #if 0
    Ecore_X_Startup_Info *info;
+   unsigned char       *exists = 0;
 
    if (!startup_info) return 0;
-   info = ecore_hash_get(startup_info, (void *)win);
+   info = eina_hash_find(startup_info, (void *)win);
    if (info)
      {
+        exists = 1;
        printf("Already got info for win: 0x%x\n", win);
        _ecore_x_netwm_startup_info_free(info);
      }
@@ -1162,7 +1162,10 @@ _ecore_x_netwm_startup_info_begin(Ecore_X_Window win, char *data)
    memcpy(info->buffer, data, 20);
    info->length += 20;
    info->buffer[info->length] = 0;
-   ecore_hash_set(startup_info, (void *)info->win, info);
+   if (exists)
+     eina_hash_modify(startup_info, (void *)info->win, info);
+   else
+     eina_hash_add(startup_info, (void *)info->win, info);
    if (strlen(info->buffer) != 20)
      {
        /* We have a '\0' in there, the message is done */
@@ -1183,7 +1186,7 @@ _ecore_x_netwm_startup_info(Ecore_X_Window win, char *data)
    char *p;
 
    if (!startup_info) return 0;
-   info = ecore_hash_get(startup_info, (void *)win);
+   info = eina_hash_find(startup_info, (void *)win);
    if (!info) return 0;
    if ((info->length + 20) > info->buffer_size)
      {
@@ -1191,7 +1194,7 @@ _ecore_x_netwm_startup_info(Ecore_X_Window win, char *data)
        info->buffer = realloc(info->buffer, info->buffer_size * sizeof(char));
        if (!info->buffer)
          {
-            ecore_hash_remove(startup_info, (void *)info->win);
+            eina_hash_del(startup_info, (void *)info->win);
             _ecore_x_netwm_startup_info_free(info);
             return 0;
          }
@@ -1269,7 +1272,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
    p = strchr(info->buffer, ':');
    if (!p)
      {
-       ecore_hash_remove(startup_info, (void *)info->win);
+       eina_hash_del(startup_info, (void *)info->win);
        _ecore_x_netwm_startup_info_free(info);
        return 0;
      }
@@ -1290,7 +1293,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
      event = ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
    else
      {
-       ecore_hash_remove(startup_info, (void *)info->win);
+       eina_hash_del(startup_info, (void *)info->win);
        _ecore_x_netwm_startup_info_free(info);
        return 0;
      }
@@ -1299,7 +1302,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
 
    if (!_ecore_x_netwm_startup_info_parse(info, p))
      {
-       ecore_hash_remove(startup_info, (void *)info->win);
+       eina_hash_del(startup_info, (void *)info->win);
        _ecore_x_netwm_startup_info_free(info);
        return 0;
      }
@@ -1309,7 +1312,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
        e = calloc(1, sizeof(Ecore_X_Event_Startup_Sequence));
        if (!e)
          {
-            ecore_hash_remove(startup_info, (void *)info->win);
+            eina_hash_del(startup_info, (void *)info->win);
             _ecore_x_netwm_startup_info_free(info);
             return 0;
          }
@@ -1319,7 +1322,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
 
    if (event == ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE)
      {
-       ecore_hash_remove(startup_info, (void *)info->win);
+       eina_hash_del(startup_info, (void *)info->win);
        _ecore_x_netwm_startup_info_free(info);
      }
    else