diff --git a/legacy/ecore/src/lib/ecore/ecore_plugin.c b/legacy/ecore/src/lib/ecore/ecore_plugin.c
index 29c195a874..068a48afc7 100644
--- a/legacy/ecore/src/lib/ecore/ecore_plugin.c
+++ b/legacy/ecore/src/lib/ecore/ecore_plugin.c
@@ -24,6 +24,10 @@
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;
+}
diff --git a/legacy/ecore/src/lib/ecore_con/Ecore_Con.h b/legacy/ecore/src/lib/ecore_con/Ecore_Con.h
index d5e0f2c0f8..b2b9d58091 100644
--- a/legacy/ecore/src/lib/ecore_con/Ecore_Con.h
+++ b/legacy/ecore/src/lib/ecore_con/Ecore_Con.h
@@ -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);
diff --git a/legacy/ecore/src/lib/ecore_con/ecore_con.c b/legacy/ecore/src/lib/ecore_con/ecore_con.c
index 99054c08c2..e064747a56 100644
--- a/legacy/ecore/src/lib/ecore_con/ecore_con.c
+++ b/legacy/ecore/src/lib/ecore_con/ecore_con.c
@@ -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),
diff --git a/legacy/ecore/src/lib/ecore_con/ecore_con_private.h b/legacy/ecore/src/lib/ecore_con/ecore_con_private.h
index db9fb60092..c3cbe9fbc5 100644
--- a/legacy/ecore/src/lib/ecore_con/ecore_con_private.h
+++ b/legacy/ecore/src/lib/ecore_con/ecore_con_private.h
@@ -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;
diff --git a/legacy/ecore/src/lib/ecore_desktop/Ecore_Desktop.h b/legacy/ecore/src/lib/ecore_desktop/Ecore_Desktop.h
index 825e4e91df..2b728db9d7 100644
--- a/legacy/ecore/src/lib/ecore_desktop/Ecore_Desktop.h
+++ b/legacy/ecore/src/lib/ecore_desktop/Ecore_Desktop.h
@@ -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,
diff --git a/legacy/ecore/src/lib/ecore_desktop/ecore_desktop.c b/legacy/ecore/src/lib/ecore_desktop/ecore_desktop.c
index 33a52c729f..e27f80addd 100644
--- a/legacy/ecore/src/lib/ecore_desktop/ecore_desktop.c
+++ b/legacy/ecore/src/lib/ecore_desktop/ecore_desktop.c
@@ -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;
diff --git a/legacy/ecore/src/lib/ecore_desktop/ecore_desktop_icon.c b/legacy/ecore/src/lib/ecore_desktop/ecore_desktop_icon.c
index 618e3c8dfb..429628bd8b 100644
--- a/legacy/ecore/src/lib/ecore_desktop/ecore_desktop_icon.c
+++ b/legacy/ecore/src/lib/ecore_desktop/ecore_desktop_icon.c
@@ -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);
}
diff --git a/legacy/ecore/src/lib/ecore_desktop/ecore_desktop_menu.c b/legacy/ecore/src/lib/ecore_desktop/ecore_desktop_menu.c
index 3afc397966..85bdb20341 100644
--- a/legacy/ecore/src/lib/ecore_desktop/ecore_desktop_menu.c
+++ b/legacy/ecore/src/lib/ecore_desktop/ecore_desktop_menu.c
@@ -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, "