aboutsummaryrefslogtreecommitdiffstats
path: root/src/tests
diff options
context:
space:
mode:
authorVincent Torri <vincent.torri@gmail.com>2012-09-16 11:05:51 +0000
committerVincent Torri <vincent.torri@gmail.com>2012-09-16 11:05:51 +0000
commit528a9831c82be6c1275ee8172c2ed5c1191ea23d (patch)
tree8942a70c183161ef4b1c90255b6d9cb6e536c53e /src/tests
parent785f2a6b3a70454ecfe94addc6480ebf20c44c13 (diff)
downloadefl-528a9831c82be6c1275ee8172c2ed5c1191ea23d.tar.gz
efl-528a9831c82be6c1275ee8172c2ed5c1191ea23d.tar.xz
efl-528a9831c82be6c1275ee8172c2ed5c1191ea23d.zip
merge: move the files in their own directory
SVN revision: 76711
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/eina/Ecore_Data.h557
-rw-r--r--src/tests/eina/Evas_Data.h195
-rw-r--r--src/tests/eina/city.cc307
-rw-r--r--src/tests/eina/city.h96
-rw-r--r--src/tests/eina/ecore_hash.c949
-rw-r--r--src/tests/eina/ecore_list.c2162
-rw-r--r--src/tests/eina/ecore_sheap.c467
-rw-r--r--src/tests/eina/ecore_strings.c160
-rw-r--r--src/tests/eina/eina_bench.c104
-rw-r--r--src/tests/eina/eina_bench.h36
-rw-r--r--src/tests/eina/eina_bench_array.c699
-rw-r--r--src/tests/eina/eina_bench_convert.c183
-rw-r--r--src/tests/eina/eina_bench_hash.c547
-rw-r--r--src/tests/eina/eina_bench_mempool.c188
-rw-r--r--src/tests/eina/eina_bench_quad.c320
-rw-r--r--src/tests/eina/eina_bench_rectangle_pool.c76
-rw-r--r--src/tests/eina/eina_bench_sort.c222
-rw-r--r--src/tests/eina/eina_bench_stringshare.c185
-rw-r--r--src/tests/eina/eina_bench_stringshare_e17.c118
-rw-r--r--src/tests/eina/evas_hash.c536
-rw-r--r--src/tests/eina/evas_list.c1093
-rw-r--r--src/tests/eina/evas_mempool.c200
-rw-r--r--src/tests/eina/evas_mempool.h21
-rw-r--r--src/tests/eina/evas_object_list.c183
-rw-r--r--src/tests/eina/evas_stringshare.c275
-rw-r--r--src/tests/eina/strlog46999
26 files changed, 0 insertions, 56878 deletions
diff --git a/src/tests/eina/Ecore_Data.h b/src/tests/eina/Ecore_Data.h
deleted file mode 100644
index 50d42f1fe..000000000
--- a/src/tests/eina/Ecore_Data.h
+++ /dev/null
@@ -1,557 +0,0 @@
-#ifndef _ECORE_DATA_H
-# define _ECORE_DATA_H
-
-#include <stdio.h>
-/* we need this for size_t */
-#include <stddef.h>
-
-#ifdef EAPI
-# undef EAPI
-#endif
-
-#ifdef _WIN32
-# ifdef EFL_ECORE_BUILD
-# ifdef DLL_EXPORT
-# define EAPI __declspec(dllexport)
-# else
-# define EAPI
-# endif /* ! DLL_EXPORT */
-# else
-# define EAPI __declspec(dllimport)
-# endif /* ! EFL_ECORE_BUILD */
-#else
-# ifdef __GNUC__
-# if __GNUC__ >= 4
-# define EAPI __attribute__ ((visibility("default")))
-# else
-# define EAPI
-# endif
-# else
-# define EAPI
-# endif
-#endif /* ! _WIN32 */
-
-/**
- * @file Ecore_Data.h
- * @brief Contains threading, list, hash, debugging and tree functions.
- */
-
-# ifdef __cplusplus
-extern "C" {
-# endif
-
-
-#ifndef TRUE
-# define TRUE 1
-#endif
-
-#ifndef FALSE
-# define FALSE 0
-#endif
-
-#ifdef FREE
-# undef FREE
-#endif
-#define FREE(ptr) free(ptr); ptr = NULL;
-
-#ifdef IF_FREE
-# undef IF_FREE
-#endif
-#define IF_FREE(ptr) if (ptr) {free(ptr); } ptr = NULL;
-
-/* convenience macros for checking pointer parameters for non-NULL */
-#undef CHECK_PARAM_POINTER_RETURN
-#define CHECK_PARAM_POINTER_RETURN(sparam, param, ret) \
- if (!(param)) \
- { \
- printf("***** Developer Warning ***** :\n" \
- "\tThis program is calling:\n\n" \
- "\t%s();\n\n" \
- "\tWith the parameter:\n\n" \
- "\t%s\n\n" \
- "\tbeing NULL. Please fix your program.", __FUNCTION__, sparam); \
- if (getenv("ECORE_ERROR_ABORT")) { abort(); } \
- return ret; \
- }
-
-#undef CHECK_PARAM_POINTER
-#define CHECK_PARAM_POINTER(sparam, param) \
- if (!(param)) \
- { \
- printf("***** Developer Warning ***** :\n" \
- "\tThis program is calling:\n\n" \
- "\t%s();\n\n" \
- "\tWith the parameter:\n\n" \
- "\t%s\n\n" \
- "\tbeing NULL. Please fix your program.", __FUNCTION__, sparam); \
- if (getenv("ECORE_ERROR_ABORT")) { abort(); } \
- return; \
- }
-
-
-# ifdef __sgi
-# define __FUNCTION__ "unknown"
-# ifndef __cplusplus
-# define inline
-# endif
-# endif
-
-# define ECORE_SORT_MIN 0
-# define ECORE_SORT_MAX 1
-
-typedef void (*Ecore_For_Each)(void *value, void *user_data);
-# define ECORE_FOR_EACH(function) ((Ecore_For_Each)function)
-
-typedef void (*Ecore_Free_Cb)(void *data);
-# define ECORE_FREE_CB(func) ((Ecore_Free_Cb)func)
-
-typedef unsigned int (*Ecore_Hash_Cb)(const void *key);
-# define ECORE_HASH_CB(function) ((Ecore_Hash_Cb)function)
-
-typedef int (*Ecore_Compare_Cb)(const void *data1, const void *data2);
-# define ECORE_COMPARE_CB(function) ((Ecore_Compare_Cb)function)
-
-typedef struct _ecore_list Ecore_List;
-# define ECORE_LIST(list) ((Ecore_List *)list)
-
-typedef struct _ecore_list_node Ecore_List_Node;
-# define ECORE_LIST_NODE(node) ((Ecore_List_Node *)node)
-
-typedef struct _ecore_strbuf Ecore_Strbuf;
-# define ECORE_STRBUF(buf) ((Ecore_Strbuf *)buf)
-
-struct _ecore_list_node
-{
- void *data;
- struct _ecore_list_node *next;
-};
-
-struct _ecore_list
-{
- Ecore_List_Node *first; /* The first node in the list */
- Ecore_List_Node *last; /* The last node in the list */
- Ecore_List_Node *current; /* The current node in the list */
-
- Ecore_Free_Cb free_func; /* The callback to free data in nodes */
-
- int nodes; /* The number of nodes in the list */
- int index; /* The position from the front of the
- list of current node */
-};
-
-EAPI int ecore_direct_compare(const void *key1, const void *key2);
-EAPI int ecore_str_compare(const void *key1, const void *key2);
-
-EAPI unsigned int ecore_direct_hash(const void *key);
-EAPI unsigned int ecore_str_hash(const void *key);
-
-/* Creating and initializing new list structures */
-EAPI Ecore_List * ecore_list_new(void);
-EAPI int ecore_list_init(Ecore_List *list);
-
-/* Adding items to the list */
-EAPI int ecore_list_append(Ecore_List *list, void *_data);
-EAPI int ecore_list_prepend(Ecore_List *list, void *_data);
-EAPI int ecore_list_insert(Ecore_List *list, void *_data);
-EAPI int ecore_list_append_list(Ecore_List *list,
- Ecore_List *append);
-EAPI int ecore_list_prepend_list(Ecore_List *list,
- Ecore_List *prepend);
-
-/* Removing items from the list */
-EAPI int ecore_list_remove_destroy(Ecore_List *list);
-EAPI void * ecore_list_remove(Ecore_List *list);
-EAPI void * ecore_list_first_remove(Ecore_List *list);
-EAPI void * ecore_list_last_remove(Ecore_List *list);
-
-/* Retrieve the current position in the list */
-EAPI void * ecore_list_current(Ecore_List *list);
-EAPI void * ecore_list_first(Ecore_List *list);
-EAPI void * ecore_list_last(Ecore_List *list);
-EAPI int ecore_list_index(Ecore_List *list);
-EAPI int ecore_list_count(Ecore_List *list);
-
-/* Traversing the list */
-EAPI int ecore_list_for_each(Ecore_List *list,
- Ecore_For_Each function,
- void *user_data);
-EAPI void * ecore_list_first_goto(Ecore_List *list);
-EAPI void * ecore_list_last_goto(Ecore_List *list);
-EAPI void * ecore_list_index_goto(Ecore_List *list, int index);
-EAPI void * ecore_list_goto(Ecore_List *list, const void *_data);
-
-/* Traversing the list and returning data */
-EAPI void * ecore_list_next(Ecore_List *list);
-EAPI void * ecore_list_find(Ecore_List *list,
- Ecore_Compare_Cb function,
- const void *user_data);
-
-/* Sorting the list */
-EAPI int ecore_list_sort(Ecore_List *list,
- Ecore_Compare_Cb compare,
- char order);
-EAPI int ecore_list_mergesort(Ecore_List *list,
- Ecore_Compare_Cb compare,
- char order);
-EAPI int ecore_list_heapsort(Ecore_List *list,
- Ecore_Compare_Cb compare,
- char order);
-EAPI void ecore_list_merge(Ecore_List *list, Ecore_List *l2,
- Ecore_Compare_Cb, char order);
-
-/* Check to see if there is any data in the list */
-EAPI int ecore_list_empty_is(Ecore_List *list);
-
-/* Remove every node in the list without freeing the list itself */
-EAPI int ecore_list_clear(Ecore_List *list);
-/* Free the list and it's contents */
-EAPI void ecore_list_destroy(Ecore_List *list);
-
-/* Creating and initializing list nodes */
-EAPI Ecore_List_Node *ecore_list_node_new(void);
-EAPI int ecore_list_node_init(Ecore_List_Node *newNode);
-
-/* Destroying nodes */
-EAPI int ecore_list_node_destroy(Ecore_List_Node *_e_node,
- Ecore_Free_Cb free_func);
-
-EAPI int ecore_list_free_cb_set(Ecore_List *list,
- Ecore_Free_Cb free_func);
-
-typedef Ecore_List Ecore_DList;
-# define ECORE_DLIST(dlist) ((Ecore_DList *)dlist)
-
-typedef struct _ecore_dlist_node Ecore_DList_Node;
-# define ECORE_DLIST_NODE(dlist) ((Ecore_DList_Node *)dlist)
-
-struct _ecore_dlist_node
-{
- Ecore_List_Node single;
- Ecore_DList_Node *previous;
-};
-
-/* Creating and initializing new list structures */
-EAPI Ecore_DList *ecore_dlist_new(void);
-EAPI int ecore_dlist_init(Ecore_DList *list);
-EAPI void ecore_dlist_destroy(Ecore_DList *list);
-
-/* Adding items to the list */
-EAPI int ecore_dlist_append(Ecore_DList *_e_dlist, void *_data);
-EAPI int ecore_dlist_prepend(Ecore_DList *_e_dlist, void *_data);
-EAPI int ecore_dlist_insert(Ecore_DList *_e_dlist, void *_data);
-EAPI int ecore_dlist_append_list(Ecore_DList *_e_dlist,
- Ecore_DList *append);
-EAPI int ecore_dlist_prepend_list(Ecore_DList *_e_dlist,
- Ecore_DList *prepend);
-
-/* Info about list's state */
-# define ecore_dlist_first(list) ecore_list_first(list)
-# define ecore_dlist_last(list) ecore_list_last(list)
-EAPI void * ecore_dlist_current(Ecore_DList *list);
-EAPI int ecore_dlist_index(Ecore_DList *list);
-# define ecore_dlist_count(list) ecore_list_count(list)
-
-/* Removing items from the list */
-EAPI void * ecore_dlist_remove(Ecore_DList *_e_dlist);
-EAPI void * ecore_dlist_first_remove(Ecore_DList *_e_dlist);
-EAPI int ecore_dlist_remove_destroy(Ecore_DList *list);
-EAPI void * ecore_dlist_last_remove(Ecore_DList *_e_dlist);
-
-/* Traversing the list */
-# define ecore_dlist_for_each(list, function, user_data) \
- ecore_list_for_each(list, function, user_data)
-EAPI void * ecore_dlist_first_goto(Ecore_DList *_e_dlist);
-EAPI void * ecore_dlist_last_goto(Ecore_DList *_e_dlist);
-EAPI void * ecore_dlist_index_goto(Ecore_DList *_e_dlist, int index);
-EAPI void * ecore_dlist_goto(Ecore_DList *_e_dlist, void *_data);
-
-/* Traversing the list and returning data */
-EAPI void * ecore_dlist_next(Ecore_DList *list);
-EAPI void * ecore_dlist_previous(Ecore_DList *list);
-
-/* Sorting the list */
-EAPI int ecore_dlist_sort(Ecore_DList *list,
- Ecore_Compare_Cb compare,
- char order);
-EAPI int ecore_dlist_mergesort(Ecore_DList *list,
- Ecore_Compare_Cb compare,
- char order);
-# define ecore_dlist_heapsort(list, compare, order) \
- ecore_list_heapsort(list, compare, order)
-EAPI void ecore_dlist_merge(Ecore_DList *list, Ecore_DList *l2,
- Ecore_Compare_Cb, char order);
-
-/* Check to see if there is any data in the list */
-EAPI int ecore_dlist_empty_is(Ecore_DList *_e_dlist);
-
-/* Remove every node in the list without free'ing it */
-EAPI int ecore_dlist_clear(Ecore_DList *_e_dlist);
-
-/* Creating and initializing list nodes */
-EAPI int ecore_dlist_node_init(Ecore_DList_Node *node);
-EAPI Ecore_DList_Node *ecore_dlist_node_new(void);
-
-/* Destroying nodes */
-EAPI int ecore_dlist_node_destroy(Ecore_DList_Node *node,
- Ecore_Free_Cb free_func);
-
-EAPI int ecore_dlist_free_cb_set(Ecore_DList *dlist,
- Ecore_Free_Cb free_func);
-
-
-
-/*
- * Hash Table Implementation:
- *
- * Traditional hash table implementation. I had tried a list of tables
- * approach to save on the realloc's but it ended up being much slower than
- * the traditional approach.
- */
-
-typedef struct _ecore_hash_node Ecore_Hash_Node;
-# define ECORE_HASH_NODE(hash) ((Ecore_Hash_Node *)hash)
-
-struct _ecore_hash_node
-{
- Ecore_Hash_Node *next; /* Pointer to the next node in the bucket list */
- void *key; /* The key for the data node */
- void *value; /* The value associated with this node */
-};
-
-typedef struct _ecore_hash Ecore_Hash;
-# define ECORE_HASH(hash) ((Ecore_Hash *)hash)
-
-struct _ecore_hash
-{
- Ecore_Hash_Node **buckets;
- int size; /* An index into the table of primes to
- determine size */
- int nodes; /* The number of nodes currently in the hash */
-
- int index; /* The current index into the bucket table */
-
- Ecore_Compare_Cb compare; /* The function used to compare node values */
- Ecore_Hash_Cb hash_func; /* The callback function to determine hash */
-
- Ecore_Free_Cb free_key; /* The callback function to free key */
- Ecore_Free_Cb free_value; /* The callback function to free value */
-};
-
-/* Create and initialize a hash */
-EAPI Ecore_Hash *ecore_hash_new(Ecore_Hash_Cb hash_func,
- Ecore_Compare_Cb compare);
-EAPI int ecore_hash_init(Ecore_Hash *hash,
- Ecore_Hash_Cb hash_func,
- Ecore_Compare_Cb compare);
-
-/* Functions related to freeing the data in the hash table */
-EAPI int ecore_hash_free_key_cb_set(Ecore_Hash *hash,
- Ecore_Free_Cb function);
-EAPI int ecore_hash_free_value_cb_set(Ecore_Hash *hash,
- Ecore_Free_Cb function);
-EAPI void ecore_hash_destroy(Ecore_Hash *hash);
-
-EAPI int ecore_hash_count(Ecore_Hash *hash);
-EAPI int ecore_hash_for_each_node(Ecore_Hash *hash,
- Ecore_For_Each for_each_func,
- void *user_data);
-EAPI Ecore_List *ecore_hash_keys(Ecore_Hash *hash);
-
-/* Retrieve and store data into the hash */
-EAPI void * ecore_hash_get(Ecore_Hash *hash, const void *key);
-EAPI int ecore_hash_set(Ecore_Hash *hash, void *key, void *value);
-EAPI int ecore_hash_hash_set(Ecore_Hash *hash, Ecore_Hash *set);
-EAPI void * ecore_hash_remove(Ecore_Hash *hash, const void *key);
-EAPI void * ecore_hash_find(Ecore_Hash *hash,
- Ecore_Compare_Cb compare,
- const void *value);
-EAPI void ecore_hash_dump_graph(Ecore_Hash *hash);
-EAPI void ecore_hash_dump_stats(Ecore_Hash *hash);
-
-
-typedef struct _ecore_heap Ecore_Sheap;
-# define ECORE_HEAP(heap) ((Ecore_Sheap *)heap)
-
-struct _ecore_heap
-{
- void **data;
- int size;
- int space;
-
- char order, sorted;
-
- /* Callback for comparing node values, default is direct comparison */
- Ecore_Compare_Cb compare;
-
- /* Callback for freeing node data, default is NULL */
- Ecore_Free_Cb free_func;
-};
-
-EAPI Ecore_Sheap *ecore_sheap_new(Ecore_Compare_Cb compare, int size);
-EAPI void ecore_sheap_destroy(Ecore_Sheap *heap);
-EAPI int ecore_sheap_init(Ecore_Sheap *heap,
- Ecore_Compare_Cb compare,
- int size);
-EAPI int ecore_sheap_free_cb_set(Ecore_Sheap *heap,
- Ecore_Free_Cb free_func);
-EAPI int ecore_sheap_insert(Ecore_Sheap *heap, void *data);
-EAPI void * ecore_sheap_extract(Ecore_Sheap *heap);
-EAPI void * ecore_sheap_extreme(Ecore_Sheap *heap);
-EAPI int ecore_sheap_change(Ecore_Sheap *heap,
- void *item,
- void *newval);
-EAPI int ecore_sheap_compare_set(Ecore_Sheap *heap,
- Ecore_Compare_Cb compare);
-EAPI void ecore_sheap_order_set(Ecore_Sheap *heap, char order);
-EAPI void ecore_sheap_sort(Ecore_Sheap *heap);
-
-EAPI void * ecore_sheap_item(Ecore_Sheap *heap, int i);
-
-
-typedef struct _ecore_string Ecore_String;
-struct _ecore_string
-{
- char *string;
- int references;
-};
-
-EAPI int ecore_string_init();
-EAPI void ecore_string_shutdown();
-EAPI const char *ecore_string_instance(const char *string);
-EAPI void ecore_string_release(const char *string);
-
-typedef struct _Ecore_Tree_Node Ecore_Tree_Node;
-# define ECORE_TREE_NODE(object) ((Ecore_Tree_Node *)object)
-struct _Ecore_Tree_Node
-{
-
- /* The actual data for each node */
- void *key;
- void *value;
-
- /* Pointers to surrounding nodes */
- Ecore_Tree_Node *parent;
- Ecore_Tree_Node *left_child;
- Ecore_Tree_Node *right_child;
-
- /* Book keeping information for quicker balancing of the tree */
- int max_right;
- int max_left;
-};
-
-typedef struct _Ecore_Tree Ecore_Tree;
-# define ECORE_TREE(object) ((Ecore_Tree *)object)
-struct _Ecore_Tree
-{
- /* Nodes of the tree */
- Ecore_Tree_Node *tree;
-
- /* Callback for comparing node values, default is direct comparison */
- Ecore_Compare_Cb compare_func;
-
- /* Callback for freeing node data, default is NULL */
- Ecore_Free_Cb free_value;
- /* Callback for freeing node key, default is NULL */
- Ecore_Free_Cb free_key;
-};
-
-/* Some basic tree functions */
-/* Allocate and initialize a new tree */
-EAPI Ecore_Tree * ecore_tree_new(Ecore_Compare_Cb compare_func);
-/* Initialize a new tree */
-EAPI int ecore_tree_init(Ecore_Tree *tree,
- Ecore_Compare_Cb compare_func);
-
-/* Free the tree */
-EAPI int ecore_tree_destroy(Ecore_Tree *tree);
-/* Check to see if the tree has any nodes in it */
-EAPI int ecore_tree_empty_is(Ecore_Tree *tree);
-
-/* Retrieve the value associated with key */
-EAPI void * ecore_tree_get(Ecore_Tree *tree, const void *key);
-EAPI Ecore_Tree_Node *ecore_tree_get_node(Ecore_Tree *tree, const void *key);
-/* Retrieve the value of node with key greater than or equal to key */
-EAPI void * ecore_tree_closest_larger_get(Ecore_Tree *tree,
- const void *key);
-/* Retrieve the value of node with key less than or equal to key */
-EAPI void * ecore_tree_closest_smaller_get(Ecore_Tree *tree,
- const void *key);
-
-/* Set the value associated with key to value */
-EAPI int ecore_tree_set(Ecore_Tree *tree, void *key, void *value);
-/* Remove the key from the tree */
-EAPI int ecore_tree_remove(Ecore_Tree *tree, const void *key);
-
-/* Add a node to the tree */
-EAPI int ecore_tree_node_add(Ecore_Tree *tree,
- Ecore_Tree_Node *node);
-/* Remove a node from the tree */
-EAPI int ecore_tree_node_remove(Ecore_Tree *tree,
- Ecore_Tree_Node *node);
-
-/* For each node in the tree perform the for_each_func function */
-/* For this one pass in the node */
-EAPI int ecore_tree_for_each_node(Ecore_Tree *tree,
- Ecore_For_Each for_each_func,
- void *user_data);
-/* And here pass in the node's value */
-EAPI int ecore_tree_for_each_node_value(
- Ecore_Tree *tree,
- Ecore_For_Each
- for_each_func,
- void *user_data);
-
-/* Some basic node functions */
-/* Initialize a node */
-EAPI int ecore_tree_node_init(Ecore_Tree_Node *new_node);
-/* Allocate and initialize a new node */
-EAPI Ecore_Tree_Node *ecore_tree_node_new(void);
-/* Free the desired node */
-EAPI int ecore_tree_node_destroy(Ecore_Tree_Node *node,
- Ecore_Free_Cb free_value,
- Ecore_Free_Cb free_key);
-
-/* Set the node's key to key */
-EAPI int ecore_tree_node_key_set(Ecore_Tree_Node *node, void *key);
-/* Retrieve the key in node */
-EAPI void * ecore_tree_node_key_get(Ecore_Tree_Node *node);
-
-/* Set the node's value to value */
-EAPI int ecore_tree_node_value_set(Ecore_Tree_Node *node,
- void *value);
-/* Retrieve the value in node */
-EAPI void * ecore_tree_node_value_get(Ecore_Tree_Node *node);
-
-/* Add a function to free the data stored in nodes */
-EAPI int ecore_tree_free_value_cb_set(Ecore_Tree *tree,
- Ecore_Free_Cb free_value);
-/* Add a function to free the keys stored in nodes */
-EAPI int ecore_tree_free_key_cb_set(Ecore_Tree *tree,
- Ecore_Free_Cb free_key);
-
-
-EAPI Ecore_Strbuf * ecore_strbuf_new(void);
-EAPI void ecore_strbuf_free(Ecore_Strbuf *buf);
-EAPI void ecore_strbuf_append(Ecore_Strbuf *buf, const char *str);
-EAPI void ecore_strbuf_append_char(Ecore_Strbuf *buf, char c);
-EAPI void ecore_strbuf_insert(Ecore_Strbuf *buf, const char *str,
- size_t pos);
-# define ecore_strbuf_prepend(buf, str) ecore_strbuf_insert(buf, str, 0)
-EAPI const char * ecore_strbuf_string_get(Ecore_Strbuf *buf);
-EAPI size_t ecore_strbuf_length_get(Ecore_Strbuf *buf);
-EAPI int ecore_strbuf_replace(Ecore_Strbuf *buf, const char *str,
- const char *with, unsigned int n);
-# define ecore_strbuf_replace_first(buf, str, with) \
- ecore_strbuf_replace(buf, str, with, 1)
-EAPI int ecore_strbuf_replace_all(Ecore_Strbuf *buf,
- const char *str,
- const char *with);
-
-extern int ecore_str_compare(const void *key1, const void *key2);
-extern int ecore_direct_compare(const void *key1, const void *key2);
-extern unsigned int ecore_str_hash(const void *key);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* _ECORE_DATA_H */
diff --git a/src/tests/eina/Evas_Data.h b/src/tests/eina/Evas_Data.h
deleted file mode 100644
index 97848927b..000000000
--- a/src/tests/eina/Evas_Data.h
+++ /dev/null
@@ -1,195 +0,0 @@
-#ifndef _EVAS_DATA_H
-#define _EVAS_DATA_H
-
-#ifdef EAPI
-# undef EAPI
-#endif
-
-#ifdef _WIN32
-# ifdef EFL_EVAS_BUILD
-# ifdef DLL_EXPORT
-# define EAPI __declspec(dllexport)
-# else
-# define EAPI
-# endif /* ! DLL_EXPORT */
-# else
-# define EAPI __declspec(dllimport)
-# endif /* ! EFL_EVAS_BUILD */
-#else
-# ifdef __GNUC__
-# if __GNUC__ >= 4
-# define EAPI __attribute__ ((visibility("default")))
-# else
-# define EAPI
-# endif
-# else
-# define EAPI
-# endif
-#endif /* ! _WIN32 */
-
-/**
- * @file
- * @brief These routines are used for Evas data types.
- */
-
-typedef unsigned char Evas_Bool;
-
-typedef struct _Evas_Array_Hash Evas_Array_Hash;
-typedef struct _Evas_Hash Evas_Hash; /**< A Hash table handle */
-typedef struct _Evas_List Evas_List; /**< A generic linked list node handle */
-typedef struct _Evas_Object_List Evas_Object_List;
-
-struct _Evas_Hash
-{
- int population;
- Evas_Object_List *buckets[256];
-};
-
-struct _Evas_List /** A linked list node */
-{
- void *data; /**< Pointer to list element payload */
- Evas_List *next; /**< Next member in the list */
- Evas_List *prev; /**< Previous member in the list */
- struct _Evas_List_Accounting *accounting; /**< Private list accounting info - don't touch */
-};
-
-struct _Evas_Object_List
-{
- Evas_Object_List *next, *prev;
- Evas_Object_List *last;
-};
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Evas Array Hash functions
- */
-
-EAPI Evas_Array_Hash *evas_array_hash_new (void);
-EAPI void evas_array_hash_free (Evas_Array_Hash *hash);
-EAPI void evas_array_hash_add (Evas_Array_Hash *hash,
- int key,
- int data);
-EAPI int evas_array_hash_search (Evas_Array_Hash *hash,
- int key);
-
-
-/*
- * Evas Hash functions
- */
-
-/* FIXME: add:
- * api to add find, del members by data, size not just string and also
- * provide hash generation functions settable by the app
- *
- * do we really need this? hmmm - let me think... there may be a better way
- */
-EAPI Evas_Hash *evas_hash_add (Evas_Hash *hash,
- const char *key,
- const void *data);
-EAPI Evas_Hash *evas_hash_direct_add (Evas_Hash *hash,
- const char *key,
- const void *data);
-EAPI Evas_Hash *evas_hash_del (Evas_Hash *hash,
- const char *key,
- const void *data);
-EAPI void * evas_hash_find (const Evas_Hash *hash,
- const char *key);
-EAPI void * evas_hash_modify (Evas_Hash *hash,
- const char *key,
- const void *data);
-EAPI int evas_hash_size (const Evas_Hash *hash);
-EAPI void evas_hash_free (Evas_Hash *hash);
-EAPI void evas_hash_foreach (const Evas_Hash *hash,
- Evas_Bool (*func)(
- const Evas_Hash *hash,
- const char *
- key,
- void *data,
- void *fdata),
- const void *fdata);
-EAPI int evas_hash_alloc_error (void);
-
-
-/*
- * Evas List functions
- */
-
-EAPI Evas_List *evas_list_append (Evas_List *list,
- const void *data);
-EAPI Evas_List *evas_list_prepend (Evas_List *list,
- const void *data);
-EAPI Evas_List *evas_list_append_relative (Evas_List *list,
- const void *data,
- const void *relative);
-EAPI Evas_List *evas_list_append_relative_list (Evas_List *list,
- const void *data,
- Evas_List *relative);
-EAPI Evas_List *evas_list_prepend_relative (Evas_List *list,
- const void *data,
- const void *relative);
-EAPI Evas_List *evas_list_prepend_relative_list (Evas_List *list,
- const void *data,
- Evas_List *relative);
-EAPI Evas_List *evas_list_remove (Evas_List *list,
- const void *data);
-EAPI Evas_List *evas_list_remove_list (Evas_List *list,
- Evas_List *remove_list);
-EAPI Evas_List *evas_list_promote_list (Evas_List *list,
- Evas_List *move_list);
-EAPI void * evas_list_find (const Evas_List *list,
- const void *data);
-EAPI Evas_List *evas_list_find_list (const Evas_List *list,
- const void *data);
-EAPI Evas_List *evas_list_free (Evas_List *list);
-EAPI Evas_List *evas_list_last (const Evas_List *list);
-EAPI Evas_List *evas_list_next (const Evas_List *list);
-EAPI Evas_List *evas_list_prev (const Evas_List *list);
-EAPI void * evas_list_data (const Evas_List *list);
-EAPI int evas_list_count (const Evas_List *list);
-EAPI void * evas_list_nth (const Evas_List *list, int n);
-EAPI Evas_List *evas_list_nth_list (const Evas_List *list, int n);
-EAPI Evas_List *evas_list_reverse (Evas_List *list);
-EAPI Evas_List *evas_list_sort (Evas_List *list,
- int size,
- int (*func)(void *,void *));
-EAPI int evas_list_alloc_error (void);
-
-
-/*
- * Evas Object List functions
- */
-
-EAPI void * evas_object_list_append (void *in_list,
- void *in_item);
-EAPI void * evas_object_list_prepend (void *in_list,
- void *in_item);
-EAPI void * evas_object_list_append_relative (void *in_list,
- void *in_item,
- void *in_relative);
-EAPI void * evas_object_list_prepend_relative (void *in_list,
- void *in_item,
- void *in_relative);
-EAPI void * evas_object_list_remove (void *in_list,
- void *in_item);
-EAPI void * evas_object_list_find (void *in_list,
- void *in_item);
-
-
-/*
- * Evas Stringshare functions
- */
-
-EAPI void evas_stringshare_init (void); /* not implemented */
-EAPI void evas_stringshare_shutdown (void); /* not implemented */
-EAPI const char *evas_stringshare_add (const char *str);
-EAPI void evas_stringshare_del (const char *str);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _EVAS_DATA_H */
diff --git a/src/tests/eina/city.cc b/src/tests/eina/city.cc
deleted file mode 100644
index 36ff93b4e..000000000
--- a/src/tests/eina/city.cc
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright (c) 2011 Google, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-// CityHash Version 1, by Geoff Pike and Jyrki Alakuijala
-//
-// This file provides CityHash64() and related functions.
-//
-// It's probably possible to create even faster hash functions by
-// writing a program that systematically explores some of the space of
-// possible hash functions, by using SIMD instructions, or by
-// compromising on hash quality.
-
-#include "city.h"
-
-#include <algorithm>
-
-using namespace std;
-
-#define UNALIGNED_LOAD64(p) (*(const uint64*)(p))
-#define UNALIGNED_LOAD32(p) (*(const uint32*)(p))
-
-#if !defined(LIKELY)
-#if defined(__GNUC__)
-#define LIKELY(x) (__builtin_expect(!!(x), 1))
-#else
-#define LIKELY(x) (x)
-#endif
-#endif
-
-// Some primes between 2^63 and 2^64 for various uses.
-static const uint64 k0 = 0xc3a5c85c97cb3127ULL;
-static const uint64 k1 = 0xb492b66fbe98f273ULL;
-static const uint64 k2 = 0x9ae16a3b2f90404fULL;
-static const uint64 k3 = 0xc949d7c7509e6557ULL;
-
-// Bitwise right rotate. Normally this will compile to a single
-// instruction, especially if the shift is a manifest constant.
-static uint64 Rotate(uint64 val, int shift) {
- // Avoid shifting by 64: doing so yields an undefined result.
- return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
-}
-
-// Equivalent to Rotate(), but requires the second arg to be non-zero.
-// On x86-64, and probably others, it's possible for this to compile
-// to a single instruction if both args are already in registers.
-static uint64 RotateByAtLeast1(uint64 val, int shift) {
- return (val >> shift) | (val << (64 - shift));
-}
-
-static uint64 ShiftMix(uint64 val) {
- return val ^ (val >> 47);
-}
-
-static uint64 HashLen16(uint64 u, uint64 v) {
- return Hash128to64(uint128(u, v));
-}
-
-static uint64 HashLen0to16(const char *s, size_t len) {
- if (len > 8) {
- uint64 a = UNALIGNED_LOAD64(s);
- uint64 b = UNALIGNED_LOAD64(s + len - 8);
- return HashLen16(a, RotateByAtLeast1(b + len, len)) ^ b;
- }
- if (len >= 4) {
- uint64 a = UNALIGNED_LOAD32(s);
- return HashLen16(len + (a << 3), UNALIGNED_LOAD32(s + len - 4));
- }
- if (len > 0) {
- uint8 a = s[0];
- uint8 b = s[len >> 1];
- uint8 c = s[len - 1];
- uint32 y = static_cast<uint32>(a) + (static_cast<uint32>(b) << 8);
- uint32 z = len + (static_cast<uint32>(c) << 2);
- return ShiftMix(y * k2 ^ z * k3) * k2;
- }
- return k2;
-}
-
-// This probably works well for 16-byte strings as well, but it may be overkill
-// in that case.
-static uint64 HashLen17to32(const char *s, size_t len) {
- uint64 a = UNALIGNED_LOAD64(s) * k1;
- uint64 b = UNALIGNED_LOAD64(s + 8);
- uint64 c = UNALIGNED_LOAD64(s + len - 8) * k2;
- uint64 d = UNALIGNED_LOAD64(s + len - 16) * k0;
- return HashLen16(Rotate(a - b, 43) + Rotate(c, 30) + d,
- a + Rotate(b ^ k3, 20) - c + len);
-}
-
-// Return a 16-byte hash for 48 bytes. Quick and dirty.
-// Callers do best to use "random-looking" values for a and b.
-static pair<uint64, uint64> WeakHashLen32WithSeeds(
- uint64 w, uint64 x, uint64 y, uint64 z, uint64 a, uint64 b) {
- a += w;
- b = Rotate(b + a + z, 21);
- uint64 c = a;
- a += x;
- a += y;
- b += Rotate(a, 44);
- return make_pair(a + z, b + c);
-}
-
-// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
-static pair<uint64, uint64> WeakHashLen32WithSeeds(
- const char* s, uint64 a, uint64 b) {
- return WeakHashLen32WithSeeds(UNALIGNED_LOAD64(s),
- UNALIGNED_LOAD64(s + 8),
- UNALIGNED_LOAD64(s + 16),
- UNALIGNED_LOAD64(s + 24),
- a,
- b);
-}
-
-// Return an 8-byte hash for 33 to 64 bytes.
-static uint64 HashLen33to64(const char *s, size_t len) {
- uint64 z = UNALIGNED_LOAD64(s + 24);
- uint64 a = UNALIGNED_LOAD64(s) + (len + UNALIGNED_LOAD64(s + len - 16)) * k0;
- uint64 b = Rotate(a + z, 52);
- uint64 c = Rotate(a, 37);
- a += UNALIGNED_LOAD64(s + 8);
- c += Rotate(a, 7);
- a += UNALIGNED_LOAD64(s + 16);
- uint64 vf = a + z;
- uint64 vs = b + Rotate(a, 31) + c;
- a = UNALIGNED_LOAD64(s + 16) + UNALIGNED_LOAD64(s + len - 32);
- z = UNALIGNED_LOAD64(s + len - 8);
- b = Rotate(a + z, 52);
- c = Rotate(a, 37);
- a += UNALIGNED_LOAD64(s + len - 24);
- c += Rotate(a, 7);
- a += UNALIGNED_LOAD64(s + len - 16);
- uint64 wf = a + z;
- uint64 ws = b + Rotate(a, 31) + c;
- uint64 r = ShiftMix((vf + ws) * k2 + (wf + vs) * k0);
- return ShiftMix(r * k0 + vs) * k2;
-}
-
-uint64 CityHash64(const char *s, size_t len) {
- if (len <= 32) {
- if (len <= 16) {
- return HashLen0to16(s, len);
- } else {
- return HashLen17to32(s, len);
- }
- } else if (len <= 64) {
- return HashLen33to64(s, len);
- }
-
- // For strings over 64 bytes we hash the end first, and then as we
- // loop we keep 56 bytes of state: v, w, x, y, and z.
- uint64 x = UNALIGNED_LOAD64(s);
- uint64 y = UNALIGNED_LOAD64(s + len - 16) ^ k1;
- uint64 z = UNALIGNED_LOAD64(s + len - 56) ^ k0;
- pair<uint64, uint64> v = WeakHashLen32WithSeeds(s + len - 64, len, y);
- pair<uint64, uint64> w = WeakHashLen32WithSeeds(s + len - 32, len * k1, k0);
- z += ShiftMix(v.second) * k1;
- x = Rotate(z + x, 39) * k1;
- y = Rotate(y, 33) * k1;
-
- // Decrease len to the nearest multiple of 64, and operate on 64-byte chunks.
- len = (len - 1) & ~static_cast<size_t>(63);
- do {
- x = Rotate(x + y + v.first + UNALIGNED_LOAD64(s + 16), 37) * k1;
- y = Rotate(y + v.second + UNALIGNED_LOAD64(s + 48), 42) * k1;
- x ^= w.second;
- y ^= v.first;
- z = Rotate(z ^ w.first, 33);
- v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y);
- std::swap(z, x);
- s += 64;
- len -= 64;
- } while (len != 0);
- return HashLen16(HashLen16(v.first, w.first) + ShiftMix(y) * k1 + z,
- HashLen16(v.second, w.second) + x);
-}
-
-uint64 CityHash64WithSeed(const char *s, size_t len, uint64 seed) {
- return CityHash64WithSeeds(s, len, k2, seed);
-}
-
-uint64 CityHash64WithSeeds(const char *s, size_t len,
- uint64 seed0, uint64 seed1) {
- return HashLen16(CityHash64(s, len) - seed0, seed1);
-}
-
-// A subroutine for CityHash128(). Returns a decent 128-bit hash for strings
-// of any length representable in ssize_t. Based on City and Murmur.
-static uint128 CityMurmur(const char *s, size_t len, uint128 seed) {
- uint64 a = Uint128Low64(seed);
- uint64 b = Uint128High64(seed);
- uint64 c = 0;
- uint64 d = 0;
- ssize_t l = len - 16;
- if (l <= 0) { // len <= 16
- c = b * k1 + HashLen0to16(s, len);
- d = Rotate(a + (len >= 8 ? UNALIGNED_LOAD64(s) : c), 32);
- } else { // len > 16
- c = HashLen16(UNALIGNED_LOAD64(s + len - 8) + k1, a);
- d = HashLen16(b + len, c + UNALIGNED_LOAD64(s + len - 16));
- a += d;
- do {
- a ^= ShiftMix(UNALIGNED_LOAD64(s) * k1) * k1;
- a *= k1;
- b ^= a;
- c ^= ShiftMix(UNALIGNED_LOAD64(s + 8) * k1) * k1;
- c *= k1;
- d ^= c;
- s += 16;
- l -= 16;
- } while (l > 0);
- }
- a = HashLen16(a, c);
- b = HashLen16(d, b);
- return uint128(a ^ b, HashLen16(b, a));
-}
-
-uint128 CityHash128WithSeed(const char *s, size_t len, uint128 seed) {
- if (len < 128) {
- return CityMurmur(s, len, seed);
- }
-
- // We expect len >= 128 to be the common case. Keep 56 bytes of state:
- // v, w, x, y, and z.
- pair<uint64, uint64> v, w;
- uint64 x = Uint128Low64(seed);
- uint64 y = Uint128High64(seed);
- uint64 z = len * k1;
- v.first = Rotate(y ^ k1, 49) * k1 + UNALIGNED_LOAD64(s);
- v.second = Rotate(v.first, 42) * k1 + UNALIGNED_LOAD64(s + 8);
- w.first = Rotate(y + z, 35) * k1 + x;
- w.second = Rotate(x + UNALIGNED_LOAD64(s + 88), 53) * k1;
-
- // This is the same inner loop as CityHash64(), manually unrolled.
- do {
- x = Rotate(x + y + v.first + UNALIGNED_LOAD64(s + 16), 37) * k1;
- y = Rotate(y + v.second + UNALIGNED_LOAD64(s + 48), 42) * k1;
- x ^= w.second;
- y ^= v.first;
- z = Rotate(z ^ w.first, 33);
- v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y);
- std::swap(z, x);
- s += 64;
- x = Rotate(x + y + v.first + UNALIGNED_LOAD64(s + 16), 37) * k1;
- y = Rotate(y + v.second + UNALIGNED_LOAD64(s + 48), 42) * k1;
- x ^= w.second;
- y ^= v.first;
- z = Rotate(z ^ w.first, 33);
- v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y);
- std::swap(z, x);
- s += 64;
- len -= 128;
- } while (LIKELY(len >= 128));
- y += Rotate(w.first, 37) * k0 + z;
- x += Rotate(v.first + z, 49) * k0;
- // If 0 < len < 128, hash up to 4 chunks of 32 bytes each from the end of s.
- for (size_t tail_done = 0; tail_done < len; ) {
- tail_done += 32;
- y = Rotate(y - x, 42) * k0 + v.second;
- w.first += UNALIGNED_LOAD64(s + len - tail_done + 16);
- x = Rotate(x, 49) * k0 + w.first;
- w.first += v.first;
- v = WeakHashLen32WithSeeds(s + len - tail_done, v.first, v.second);
- }
- // At this point our 48 bytes of state should contain more than
- // enough information for a strong 128-bit hash. We use two
- // different 48-byte-to-8-byte hashes to get a 16-byte final result.
- x = HashLen16(x, v.first);
- y = HashLen16(y, w.first);
- return uint128(HashLen16(x + v.second, w.second) + y,
- HashLen16(x + w.second, y + v.second));
-}
-
-uint128 CityHash128(const char *s, size_t len) {
- if (len >= 16) {
- return CityHash128WithSeed(s + 16,
- len - 16,
- uint128(UNALIGNED_LOAD64(s) ^ k3,
- UNALIGNED_LOAD64(s + 8)));
- } else if (len >= 8) {
- return CityHash128WithSeed(NULL,
- 0,
- uint128(UNALIGNED_LOAD64(s) ^ (len * k0),
- UNALIGNED_LOAD64(s + len - 8) ^ k1));
- } else {
- return CityHash128WithSeed(s, len, uint128(k0, k1));
- }
-}
diff --git a/src/tests/eina/city.h b/src/tests/eina/city.h
deleted file mode 100644
index a9c297fee..000000000
--- a/src/tests/eina/city.h
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (c) 2011 Google, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-// CityHash Version 1, by Geoff Pike and Jyrki Alakuijala
-//
-// This file provides a few functions for hashing strings. On x86-64
-// hardware in 2011, CityHash64() is faster than other high-quality
-// hash functions, such as Murmur. This is largely due to higher
-// instruction-level parallelism. CityHash64() and CityHash128() also perform
-// well on hash-quality tests.
-//
-// CityHash128() is optimized for relatively long strings and returns
-// a 128-bit hash. For strings more than about 2000 bytes it can be
-// faster than CityHash64().
-//
-// Functions in the CityHash family are not suitable for cryptography.
-//
-// WARNING: This code has not been tested on big-endian platforms!
-// It is known to work well on little-endian platforms that have a small penalty
-// for unaligned reads, such as current Intel and AMD moderate-to-high-end CPUs.
-//
-// By the way, for some hash functions, given strings a and b, the hash
-// of a+b is easily derived from the hashes of a and b. This property
-// doesn't hold for any hash functions in this file.
-
-#ifndef CITY_HASH_H_
-#define CITY_HASH_H_
-
-#include <stdlib.h> // for size_t.
-#include <stdint.h>
-#include <utility>
-
-typedef uint8_t uint8;
-typedef uint32_t uint32;
-typedef uint64_t uint64;
-typedef std::pair<uint64, uint64> uint128;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-inline uint64 Uint128Low64(const uint128& x) { return x.first; }
-inline uint64 Uint128High64(const uint128& x) { return x.second; }
-
-// Hash function for a byte array.
-uint64 CityHash64(const char *buf, size_t len);
-// Hash function for a byte array. For convenience, a 64-bit seed is also
-// hashed into the result.
-uint64 CityHash64WithSeed(const char *buf, size_t len, uint64 seed);
-
-// Hash function for a byte array. For convenience, two seeds are also
-// hashed into the result.
-uint64 CityHash64WithSeeds(const char *buf, size_t len,
- uint64 seed0, uint64 seed1);
-
-// Hash function for a byte array.
-uint128 CityHash128(const char *s, size_t len);
-
-// Hash function for a byte array. For convenience, a 128-bit seed is also
-// hashed into the result.
-uint128 CityHash128WithSeed(const char *s, size_t len, uint128 seed);
-
-// Hash 128 input bits down to 64 bits of output.
-// This is intended to be a reasonably good hash function.
-inline uint64 Hash128to64(const uint128& x) {
- // Murmur-inspired hashing.
- const uint64 kMul = 0x9ddfea08eb382d69ULL;
- uint64 a = (Uint128Low64(x) ^ Uint128High64(x)) * kMul;
- a ^= (a >> 47);
- uint64 b = (Uint128High64(x) ^ a) * kMul;
- b ^= (b >> 47);
- b *= kMul;
- return b;
-}
-
-#ifdef __cplusplus
-}
-#endif
-#endif // CITY_HASH_H_
diff --git a/src/tests/eina/ecore_hash.c b/src/tests/eina/ecore_hash.c
deleted file mode 100644
index f957d529c..000000000
--- a/src/tests/eina/ecore_hash.c
+++ /dev/null
@@ -1,949 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "Ecore_Data.h"
-
-#define PRIME_TABLE_MAX 21
-#define PRIME_MIN 17
-#define PRIME_MAX 16777213
-
-#define ECORE_HASH_CHAIN_MAX 3
-
-#define ECORE_COMPUTE_HASH(hash, key) hash->hash_func(key) % \
- ecore_prime_table[hash->size];
-
-#define ECORE_HASH_INCREASE(hash) ((hash && ecore_prime_table[hash->size] < \
- PRIME_MAX) ? \
- (hash->nodes / \
- ecore_prime_table[hash->size]) > \
- ECORE_HASH_CHAIN_MAX : FALSE)
-#define ECORE_HASH_REDUCE(hash) ((hash && ecore_prime_table[hash->size] > \
- PRIME_MIN) ? \
- (double)hash->nodes / \
- (double)ecore_prime_table[hash->size - 1] \
- < ((double)ECORE_HASH_CHAIN_MAX * \
- 0.375) : FALSE)
-
-
-static const unsigned int ecore_prime_table[] =
-{
- 17, 31, 61, 127, 257, 509, 1021,
- 2053, 4093, 8191, 16381, 32771, 65537, 131071, 262147, 524287, 1048573,
- 2097143, 4194301, 8388617, 16777213
-};
-
-
-/* Private hash manipulation functions */
-static int _ecore_hash_node_add(Ecore_Hash *hash,
- Ecore_Hash_Node *node);
-static Ecore_Hash_Node * _ecore_hash_node_get(Ecore_Hash *hash,
- const void *key);
-static int _ecore_hash_increase(Ecore_Hash *hash);
-static int _ecore_hash_decrease(Ecore_Hash *hash);
-static inline int _ecore_hash_rehash(Ecore_Hash *hash,
- Ecore_Hash_Node **old_table,
- int old_size);
-static int _ecore_hash_bucket_destroy(Ecore_Hash_Node *list,
- Ecore_Free_Cb keyd,
- Ecore_Free_Cb valued);
-static inline Ecore_Hash_Node *_ecore_hash_bucket_get(Ecore_Hash *hash,
- Ecore_Hash_Node *bucket,
- const void *key);
-
-static Ecore_Hash_Node * _ecore_hash_node_new(void *key, void *value);
-static int _ecore_hash_node_init(Ecore_Hash_Node *node,
- void *key,
- void *value);
-static int _ecore_hash_node_destroy(Ecore_Hash_Node *node,
- Ecore_Free_Cb keyd,
- Ecore_Free_Cb valued);
-
-/**
- * @defgroup Ecore_Data_Hash_ADT_Creation_Group Hash Creation Functions
- *
- * Functions that create hash tables.
- */
-
-/**
- * Creates and initializes a new hash
- * @param hash_func The function for determining hash position.
- * @param compare The function for comparing node keys.
- * @return @c NULL on error, a new hash on success.
- * @ingroup Ecore_Data_Hash_ADT_Creation_Group
- */
-EAPI Ecore_Hash *
-ecore_hash_new(Ecore_Hash_Cb hash_func, Ecore_Compare_Cb compare)
-{
- Ecore_Hash *new_hash = (Ecore_Hash *)malloc(sizeof(Ecore_Hash));
- if (!new_hash)
- return NULL;
-
- if (!ecore_hash_init(new_hash, hash_func, compare))
- {
- FREE(new_hash);
- return NULL;
- }
-
- return new_hash;
-}
-
-/**
- * Initializes the given hash.
- * @param hash The given hash.
- * @param hash_func The function used for hashing node keys.
- * @param compare The function used for comparing node keys.
- * @return @c TRUE on success, @c FALSE on an error.
- * @ingroup Ecore_Data_Hash_ADT_Creation_Group
- */
-EAPI int
-ecore_hash_init(Ecore_Hash *hash,
- Ecore_Hash_Cb hash_func,
- Ecore_Compare_Cb compare)
-{
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
-
- memset(hash, 0, sizeof(Ecore_Hash));
-
- hash->hash_func = hash_func;
- hash->compare = compare;
-
- hash->buckets = (Ecore_Hash_Node **)calloc(ecore_prime_table[0],
- sizeof(Ecore_Hash_Node *));
-
- return TRUE;
-}
-
-/**
- * @defgroup Ecore_Data_Hash_ADT_Destruction_Group Hash Destruction Functions
- *
- * Functions that destroy hash tables and their contents.
- */
-
-/**
- * Sets the function to destroy the keys of the given hash.
- * @param hash The given hash.
- * @param function The function used to free the node keys. NULL is a
- * valid value and means that no function will be called.
- * @return @c TRUE on success, @c FALSE on error.
- * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
- */
-EAPI int
-ecore_hash_free_key_cb_set(Ecore_Hash *hash, Ecore_Free_Cb function)
-{
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
-
- hash->free_key = function;
-
- return TRUE;
-}
-
-/**
- * Sets the function to destroy the values in the given hash.
- * @param hash The given hash.
- * @param function The function that will free the node values. NULL is a
- * valid value and means that no function will be called.
- * @return @c TRUE on success, @c FALSE on error
- * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
- */
-EAPI int
-ecore_hash_free_value_cb_set(Ecore_Hash *hash, Ecore_Free_Cb function)
-{
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
-
- hash->free_value = function;
-
- return TRUE;
-}
-
-/**
- * @defgroup Ecore_Data_Hash_ADT_Data_Group Hash Data Functions
- *
- * Functions that set, access and delete values from the hash tables.
- */
-
-/**
- * Sets a key-value pair in the given hash table.
- * @param hash The given hash table.
- * @param key The key.
- * @param value The value.
- * @return @c TRUE if successful, @c FALSE if not.
- * @ingroup Ecore_Data_Hash_ADT_Data_Group
- */
-EAPI int
-ecore_hash_set(Ecore_Hash *hash, void *key, void *value)
-{
- int ret = FALSE;
- Ecore_Hash_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
-
- node = _ecore_hash_node_get(hash, key);
- if (node)
- {
- if (hash->free_key)
- hash->free_key(key);
-
- if (node->value && hash->free_value)
- hash->free_value(node->value);
-
- node->value = value;
- ret = TRUE;
- }
- else
- {
- node = _ecore_hash_node_new(key, value);
- if (node)
- ret = _ecore_hash_node_add(hash, node);
- }
-
- return ret;
-}
-
-/**
- * Sets all key-value pairs from set in the given hash table.
- * @param hash The given hash table.
- * @param set The hash table to import.
- * @return @c TRUE if successful, @c FALSE if not.
- * @ingroup Ecore_Data_Hash_ADT_Data_Group
- */
-EAPI int
-ecore_hash_hash_set(Ecore_Hash *hash, Ecore_Hash *set)
-{
- unsigned int i;
- Ecore_Hash_Node *node, *old;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
- CHECK_PARAM_POINTER_RETURN("set", set, FALSE);
-
- for (i = 0; i < ecore_prime_table[set->size]; i++)
- {
- /* Hash into a new list to avoid loops of rehashing the same nodes */
- while ((old = set->buckets[i]))
- {
- set->buckets[i] = old->next;
- old->next = NULL;
- node = _ecore_hash_node_get(hash, old->key);
- if (node)
- {
- /* This key already exists. Delete the old and add the new
- * value */
- if (hash->free_key)
- hash->free_key(node->key);
-
- if (hash->free_value)
- hash->free_key(node->value);
-
- node->key = old->key;
- node->value = old->value;
- free(old);
- }
- else
- _ecore_hash_node_add(hash, old);
- }
- }
- FREE(set->buckets);
- ecore_hash_init(set, set->hash_func, set->compare);
- return TRUE;
-}
-
-/**
- * Frees the hash table and the data contained inside it.
- * @param hash The hash table to destroy.
- * @return @c TRUE on success, @c FALSE on error.
- * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
- */
-EAPI void
-ecore_hash_destroy(Ecore_Hash *hash)
-{
- unsigned int i = 0;
-
- CHECK_PARAM_POINTER("hash", hash);
-
- if (hash->buckets)
- {
- while (i < ecore_prime_table[hash->size])
- {
- if (hash->buckets[i])
- {
- Ecore_Hash_Node *bucket;
-
- /*
- * Remove the bucket list to avoid possible recursion
- * on the free callbacks.
- */
- bucket = hash->buckets[i];
- hash->buckets[i] = NULL;
- _ecore_hash_bucket_destroy(bucket,
- hash->free_key,
- hash->free_value);
- }
-
- i++;
- }
-
- FREE(hash->buckets);
- }
-
- FREE(hash);
-
- return;
-}
-
-/**
- * @defgroup Ecore_Data_Hash_ADT_Traverse_Group Hash Traverse Functions
- *
- * Functions that iterate through hash tables.
- */
-
-/**
- * Counts the number of nodes in a hash table.
- * @param hash The hash table to count current nodes.
- * @return The number of nodes in the hash.
- * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
- */
-EAPI int
-ecore_hash_count(Ecore_Hash *hash)
-{
- CHECK_PARAM_POINTER_RETURN("hash", hash, 0);
-
- return hash->nodes;
-}
-
-/**
- * Runs the @p for_each_func function on each entry in the given hash.
- * @param hash The given hash.
- * @param for_each_func The function that each entry is passed to.
- * @param user_data a pointer passed to calls of for_each_func
- * @return TRUE on success, FALSE otherwise.
- * @ingroup Ecore_Data_Hash_ADT_Traverse_Group
- */
-EAPI int
-ecore_hash_for_each_node(Ecore_Hash *hash,
- Ecore_For_Each for_each_func,
- void *user_data)
-{
- unsigned int i = 0;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
- CHECK_PARAM_POINTER_RETURN("for_each_func", for_each_func, FALSE);
-
- while (i < ecore_prime_table[hash->size])
- {
- if (hash->buckets[i])
- {
- Ecore_Hash_Node *node;
-
- for (node = hash->buckets[i]; node; node = node->next)
- {
- for_each_func(node, user_data);
- }
- }
-
- i++;
- }
-
- return TRUE;
-}
-
-/**
- * Retrieves an ecore_list of all keys in the given hash.
- * @param hash The given hash.
- * @return new ecore_list on success, NULL otherwise
- * @ingroup Ecore_Data_Hash_ADT_Traverse_Group
- */
-EAPI Ecore_List *
-ecore_hash_keys(Ecore_Hash *hash)
-{
- unsigned int i = 0;
- Ecore_List *keys;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
-
- keys = ecore_list_new();
- while (i < ecore_prime_table[hash->size])
- {
- if (hash->buckets[i])
- {
- Ecore_Hash_Node *node;
-
- for (node = hash->buckets[i]; node; node = node->next)
- {
- ecore_list_append(keys, node->key);
- }
- }
-
- i++;
- }
- ecore_list_first_goto(keys);
-
- return keys;
-}
-
-/**
- * Prints the distribution of the given hash table for graphing.
- * @param hash The given hash table.
- */
-EAPI void
-ecore_hash_dump_graph(Ecore_Hash *hash)
-{
- unsigned int i;
-
- for (i = 0; i < ecore_prime_table[hash->size]; i++)
- if (hash->buckets[i])
- {
- int n = 0;
- Ecore_Hash_Node *node;
- for (node = hash->buckets[i]; node; node = node->next)
- n++;
- printf("%d\t%u", i, n);
- }
- else
- printf("%d\t0", i);
-
-}
-
-/**
- * Prints the distribution of the given hash table for graphing.
- * @param hash The given hash table.
- */
-EAPI void
-ecore_hash_dump_stats(Ecore_Hash *hash)
-{
- unsigned int i;
- double variance, sum_n_2 = 0, sum_n = 0;
-
- for (i = 0; i < ecore_prime_table[hash->size]; i++)
- {
- if (hash->buckets[i])
- {
- int n = 0;
- Ecore_Hash_Node *node;
- for (node = hash->buckets[i]; node; node = node->next)
- n++;
- sum_n_2 += ((double)n * (double)n);
- sum_n += (double)n;
- }
- }
- variance = (sum_n_2 - ((sum_n * sum_n) / (double)i)) / (double)i;
- printf("Average length: %f\n\tvariance^2: %f", (sum_n / (double)i),
- variance);
-}
-
-static int
-_ecore_hash_bucket_destroy(Ecore_Hash_Node *list,
- Ecore_Free_Cb keyd,
- Ecore_Free_Cb valued)
-{
- Ecore_Hash_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- for (node = list; node; node = list)
- {
- list = list->next;
- _ecore_hash_node_destroy(node, keyd, valued);
- }
-
- return TRUE;
-}
-
-/*
- * @brief Add the node to the hash table
- * @param hash: the hash table to add the key
- * @param node: the node to add to the hash table
- * @return Returns FALSE on error, TRUE on success
- */
-static int
-_ecore_hash_node_add(Ecore_Hash *hash, Ecore_Hash_Node *node)
-{
- unsigned long hash_val;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
- CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
-
- /* Check to see if the hash needs to be resized */
- if (ECORE_HASH_INCREASE(hash))
- _ecore_hash_increase(hash);
-
- /* Compute the position in the table */
- if (!hash->hash_func)
- hash_val = (unsigned long)node->key % ecore_prime_table[hash->size];
- else
- hash_val = ECORE_COMPUTE_HASH(hash, node->key);
-
- /* Prepend the node to the list at the index position */
- node->next = hash->buckets[hash_val];
- hash->buckets[hash_val] = node;
- hash->nodes++;
-
- return TRUE;
-}
-
-/**
- * Retrieves the value associated with the given key from the given hash
- * table.
- * @param hash The given hash table.
- * @param key The key to search for.
- * @return The value corresponding to key on success, @c NULL otherwise.
- * @ingroup Ecore_Data_Hash_ADT_Data_Group
- */
-EAPI void *
-ecore_hash_get(Ecore_Hash *hash, const void *key)
-{
- void *data;
- Ecore_Hash_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
-
- node = _ecore_hash_node_get(hash, key);
- if (!node)
- return NULL;
-
- data = node->value;
-
- return data;
-}
-
-/**
- * Removes the value associated with the given key in the given hash
- * table.
- * @param hash The given hash table.
- * @param key The key to search for.
- * @return The value corresponding to the key on success. @c NULL is
- * returned if there is an error.
- * @ingroup Ecore_Data_Hash_ADT_Data_Group
- */
-EAPI void *
-ecore_hash_remove(Ecore_Hash *hash, const void *key)
-{
- Ecore_Hash_Node *node = NULL;
- Ecore_Hash_Node *list;
- unsigned long hash_val;
- void *ret = NULL;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
-
- /* Compute the position in the table */
- if (!hash->hash_func)
- hash_val = (unsigned long )key % ecore_prime_table[hash->size];
- else
- hash_val = ECORE_COMPUTE_HASH(hash, key);
-
- /*
- * If their is a list that could possibly hold the key/value pair
- * traverse it and remove the hash node.
- */
- if (hash->buckets[hash_val])
- {
- list = hash->buckets[hash_val];
-
- /*
- * Traverse the list to find the specified key
- */
- node = list;
- if (hash->compare)
- while ((node) && (hash->compare(node->key, key) != 0))
- {
- list = node;
- node = node->next;
- }
- else
- while ((node) && (node->key != key))
- {
- list = node;
- node = node->next;
- }
-
- /*
- * Remove the node with the matching key and free it's memory
- */
- if (node)
- {
- if (list == node)
- hash->buckets[hash_val] = node->next;
- else
- list->next = node->next;
-
- ret = node->value;
- node->value = NULL;
- _ecore_hash_node_destroy(node, hash->free_key, NULL);
- hash->nodes--;
- }
- }
-
- if (ECORE_HASH_REDUCE(hash))
- _ecore_hash_decrease(hash);
-
- return ret;
-}
-
-/**
- * Retrieves the first value that matches
- * table.
- * @param hash The given hash table.
- * @param key The key to search for.
- * @return The value corresponding to key on success, @c NULL otherwise.
- * @ingroup Ecore_Data_Hash_ADT_Data_Group
- */
-EAPI void *
-ecore_hash_find(Ecore_Hash *hash, Ecore_Compare_Cb compare, const void *value)
-{
- unsigned int i = 0;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
- CHECK_PARAM_POINTER_RETURN("compare", compare, NULL);
- CHECK_PARAM_POINTER_RETURN("value", value, NULL);
-
- while (i < ecore_prime_table[hash->size])
- {
- if (hash->buckets[i])
- {
- Ecore_Hash_Node *node;
-
- for (node = hash->buckets[i]; node; node = node->next)
- {
- if (!compare(node->value, value))
- return node->value;
- }
- }
-
- i++;
- }
-
- return NULL;
-}
-
-/*
- * @brief Retrieve the node associated with key
- * @param hash: the hash table to search for the key
- * @param key: the key to search for in the hash table
- * @return Returns NULL on error, node corresponding to key on success
- */
-static Ecore_Hash_Node *
-_ecore_hash_node_get(Ecore_Hash *hash, const void *key)
-{
- unsigned long hash_val;
- Ecore_Hash_Node *node = NULL;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
-
- if (!hash->buckets)
- return NULL;
-
- /* Compute the position in the table */
- if (!hash->hash_func)
- hash_val = (unsigned long)key % ecore_prime_table[hash->size];
- else
- hash_val = ECORE_COMPUTE_HASH(hash, key);
-
- /* Grab the bucket at the specified position */
- if (hash->buckets[hash_val])
- {
- node = _ecore_hash_bucket_get(hash, hash->buckets[hash_val], key);
- /*
- * Move matched node to the front of the list as it's likely
- * to be searched for again soon.
- */
- if (node && node != hash->buckets[hash_val])
- {
- node->next = hash->buckets[hash_val];
- hash->buckets[hash_val] = node;
- }
- }
-
- return node;
-}
-
-/*
- * @brief Search the hash bucket for a specified key
- * @param hash: the hash table to retrieve the comparison function
- * @param bucket: the list to search for the key
- * @param key: the key to search for in the list
- * @return Returns NULL on error or not found, the found node on success
- */
-static inline Ecore_Hash_Node *
-_ecore_hash_bucket_get(Ecore_Hash *hash,
- Ecore_Hash_Node *bucket,
- const void *key)
-{
- Ecore_Hash_Node *prev = NULL;
- Ecore_Hash_Node *node = NULL;
-
- /*
- * Traverse the list to find the desired node, if the node is in the
- * list, then return the node.
- */
- if (hash->compare)
- for (node = bucket; node; node = node->next)
- {
- if (hash->compare(node->key, key) == 0)
- break;
-
- prev = node;
- }
- else
- for (node = bucket; node; node = node->next)
- {
- if (node->key == key)
- break;
-
- prev = node;
- }
-
- /*
- * Remove node from the list to replace it at the beginning.
- */
- if (node && prev)
- {
- prev->next = node->next;
- node->next = NULL;
- }
-
- return node;
-}
-
-/*
- * @brief Increase the size of the hash table by approx. 2 * current size
- * @param hash: the hash table to increase the size of
- * @return Returns TRUE on success, FALSE on error
- */
-static int
-_ecore_hash_increase(Ecore_Hash *hash)
-{
- void *old;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
-
- /* Max size reached so return FALSE */
- if ((ecore_prime_table[hash->size] == PRIME_MAX) ||
- (hash->size == PRIME_TABLE_MAX))
- return FALSE;
-
- /*
- * Increase the size of the hash and save a pointer to the old data
- */
- hash->size++;
- old = hash->buckets;
-
- /*
- * Allocate a new bucket area, of the new larger size
- */
- hash->buckets =
- calloc(ecore_prime_table[hash->size], sizeof(Ecore_Hash_Node *));
-
- /*
- * Make sure the allocation succeeded, if not replace the old data and
- * return a failure.
- */
- if (!hash->buckets)
- {
- hash->buckets = old;
- hash->size--;
- return FALSE;
- }
-
- hash->nodes = 0;
-
- /*
- * Now move all of the old data into the new bucket area
- */
- if (_ecore_hash_rehash(hash, old, hash->size - 1))
- {
- FREE(old);
- return TRUE;
- }
-
- /*
- * Free the old buckets regardless of success.
- */
- FREE(old);
-
- return FALSE;
-}
-
-/*
- * @brief Decrease the size of the hash table by < 1/2 * current size
- * @param hash: the hash table to decrease the size of
- * @return Returns TRUE on success, FALSE on error
- */
-static int
-_ecore_hash_decrease(Ecore_Hash *hash)
-{
- Ecore_Hash_Node **old;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
-
- if (ecore_prime_table[hash->size] == PRIME_MIN)
- return FALSE;
-
- /*
- * Decrease the hash size and store a pointer to the old data
- */
- hash->size--;
- old = hash->buckets;
-
- /*
- * Allocate a new area to store the data
- */
- hash->buckets = (Ecore_Hash_Node **)calloc(ecore_prime_table[hash->size],
- sizeof(Ecore_Hash_Node *));
-
- /*
- * Make sure allocation succeeded otherwise rreturn to the previous
- * state
- */
- if (!hash->buckets)
- {
- hash->buckets = old;
- hash->size++;
- return FALSE;
- }
-
- hash->nodes = 0;
-
- if (_ecore_hash_rehash(hash, old, hash->size + 1))
- {
- FREE(old);
- return TRUE;
- }
-
- return FALSE;
-}
-
-/*
- * @brief Rehash the nodes of a table into the hash table
- * @param hash: the hash to place the nodes of the table
- * @param table: the table to remove the nodes from and place in hash
- * @return Returns TRUE on success, FALSE on error
- */
-static inline int
-_ecore_hash_rehash(Ecore_Hash *hash, Ecore_Hash_Node **old_table, int old_size)
-{
- unsigned int i;
- Ecore_Hash_Node *old;
-
- CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
- CHECK_PARAM_POINTER_RETURN("old_table", old_table, FALSE);
-
- for (i = 0; i < ecore_prime_table[old_size]; i++)
- {
- /* Hash into a new list to avoid loops of rehashing the same nodes */
- while ((old = old_table[i]))
- {
- old_table[i] = old->next;
- old->next = NULL;
- _ecore_hash_node_add(hash, old);
- }
- }
-
- return TRUE;
-}
-
-/*
- * @brief Create a new hash node for key and value storage
- * @param key: the key for this node
- * @param value: the value that the key references
- * @return Returns NULL on error, a new hash node on success
- */
-static Ecore_Hash_Node *
-_ecore_hash_node_new(void *key, void *value)
-{
- Ecore_Hash_Node *node;
-
- node = (Ecore_Hash_Node *)malloc(sizeof(Ecore_Hash_Node));
- if (!node)
- return NULL;
-
- if (!_ecore_hash_node_init(node, key, value))
- {
- FREE(node);
- return NULL;
- }
-
- return node;
-}
-
-/*
- * @brief Initialize a hash node to some sane default values
- * @param node: the node to set the values
- * @param key: the key to reference this node
- * @param value: the value that key refers to
- * @return Returns TRUE on success, FALSE on error
- */
-static int
-_ecore_hash_node_init(Ecore_Hash_Node *node, void *key, void *value)
-{
- CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
-
- node->key = key;
- node->value = value;
-
- return TRUE;
-}
-
-/*
- * @brief Destroy a node and call the specified callbacks to free data
- * @param node: the node to be destroyed
- * @param keyd: the function to free the key
- * @param valued: the function to free the value
- * @return Returns TRUE on success, FALSE on error
- */
-static int
-_ecore_hash_node_destroy(Ecore_Hash_Node *node,
- Ecore_Free_Cb keyd,
- Ecore_Free_Cb valued)
-{
- CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
-
- if (keyd)
- keyd(node->key);
-
- if (valued)
- valued(node->value);
-
- FREE(node);
-
- return TRUE;
-}
-
-int
-ecore_str_compare(const void *key1, const void *key2)
-{
- const char *k1, *k2;
-
- if (!key1 || !key2)
- return ecore_direct_compare(key1, key2);
- else if (key1 == key2)
- return 0;
-
- k1 = key1;
- k2 = key2;
-
- return strcmp(k1, k2);
-}
-
-unsigned int
-ecore_str_hash(const void *key)
-{
- int i;
- unsigned int mask;
- unsigned int value = 0;
- const char *k = key;
-
- if (!k)
- return 0;
-
- mask = (sizeof(unsigned int) * 8) - 1;
-
- for (i = 0; k[i] != '\0'; i++)
- {
- value ^= ((unsigned int)k[i] << ((i * 5) & mask));
- }
-
- return value;
-}
diff --git a/src/tests/eina/ecore_list.c b/src/tests/eina/ecore_list.c
deleted file mode 100644
index 7da44178b..000000000
--- a/src/tests/eina/ecore_list.c
+++ /dev/null
@@ -1,2162 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "Ecore_Data.h"
-
-/* Some tests showed that beyond that value heap sort is faster than merge sort
- * (in this implementation). This value has to be changed or at least review
- * if someone is changing the implementation. */
-#define ECORE_MERGESORT_LIMIT 40000
-
-/* Return information about the list */
-static void * _ecore_list_current(Ecore_List *list);
-
-/* Adding functions */
-static int _ecore_list_insert(Ecore_List *list,
- Ecore_List_Node *node);
-static int _ecore_list_append_0(Ecore_List *list,
- Ecore_List_Node *node);
-static int _ecore_list_prepend_0(Ecore_List *list,
- Ecore_List_Node *node);
-
-/* Remove functions */
-static void * _ecore_list_remove_0(Ecore_List *list);
-static void * _ecore_list_first_remove(Ecore_List *list);
-static void * _ecore_list_last_remove(Ecore_List *list);
-
-/* Basic traversal functions */
-static void * _ecore_list_next(Ecore_List *list);
-static void * _ecore_list_last_goto(Ecore_List *list);
-static void * _ecore_list_first_goto(Ecore_List *list);
-static void * _ecore_list_goto(Ecore_List *list, const void *data);
-static void * _ecore_list_index_goto(Ecore_List *list, int idx);
-
-/* Iterative functions */
-static int _ecore_list_for_each(Ecore_List *list,
- Ecore_For_Each function,
- void *user_data);
-static void * _ecore_list_find(Ecore_List *list,
- Ecore_Compare_Cb function,
- const void *user_data);
-
-/* Sorting functions */
-static Ecore_List_Node *_ecore_list_node_mergesort(Ecore_List_Node *first,
- int n,
- Ecore_Compare_Cb compare,
- int order);
-static Ecore_List_Node *_ecore_list_node_merge(Ecore_List_Node *first,
- Ecore_List_Node *second,
- Ecore_Compare_Cb compare,
- int order);
-static Ecore_List_Node *_ecore_dlist_node_mergesort(Ecore_List_Node *first,
- int n,
- Ecore_Compare_Cb compare,
- int order);
-static Ecore_List_Node *_ecore_dlist_node_merge(Ecore_List_Node *first,
- Ecore_List_Node *second,
- Ecore_Compare_Cb compare,
- int order);
-
-/* Private double linked list functions */
-static void *_ecore_dlist_previous(Ecore_DList *list);
-static void *_ecore_dlist_first_remove(Ecore_DList *list);
-static void *_ecore_dlist_index_goto(Ecore_DList *list, int idx);
-
-/**
- @defgroup Ecore_Data_List_Creation_Group List Creation/Destruction Functions
-
- Functions that create, initialize and destroy Ecore_Lists.
- */
-
-/**
- * Create and initialize a new list.
- * @return A new initialized list on success, @c NULL on failure.
- * @ingroup Ecore_Data_List_Creation_Group
- */
-EAPI Ecore_List *
-ecore_list_new(void)
-{
- Ecore_List *list;
-
- list = (Ecore_List *)malloc(sizeof(Ecore_List));
- if (!list)
- return NULL;
-
- if (!ecore_list_init(list))
- {
- FREE(list);
- return NULL;
- }
-
- return list;
-}
-
-/**
- * Initialize a list to some sane starting values.
- * @param list The list to initialize.
- * @return @c TRUE if successful, @c FALSE if an error occurs.
- * @ingroup Ecore_Data_List_Creation_Group
- */
-EAPI int
-ecore_list_init(Ecore_List *list)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- memset(list, 0, sizeof(Ecore_List));
-
- return TRUE;
-}
-
-/**
- * Free a list and all of it's nodes.
- * @param list The list to be freed.
- * @ingroup Ecore_Data_List_Creation_Group
- */
-EAPI void
-ecore_list_destroy(Ecore_List *list)
-{
- void *data;
-
- CHECK_PARAM_POINTER("list", list);
-
- while (list->first)
- {
- data = _ecore_list_first_remove(list);
- if (list->free_func)
- list->free_func(data);
- }
-
- FREE(list);
-}
-
-/**
- * Set the function for freeing data.
- * @param list The list that will use this function when nodes are
- * destroyed.
- * @param free_func The function that will free the key data.
- * @return @c TRUE on successful set, @c FALSE otherwise.
- */
-EAPI int
-ecore_list_free_cb_set(Ecore_List *list, Ecore_Free_Cb free_func)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- list->free_func = free_func;
-
- return TRUE;
-}
-
-/**
- * Checks the list for any nodes.
- * @param list The list to check for nodes
- * @return @c TRUE if no nodes in list, @c FALSE if the list contains nodes
- */
-EAPI int
-ecore_list_empty_is(Ecore_List *list)
-{
- int ret = TRUE;
-
- CHECK_PARAM_POINTER_RETURN("list", list, TRUE);
-
- if (list->nodes)
- ret = FALSE;
-
- return ret;
-}
-
-/**
- * Returns the number of the current node.
- * @param list The list to return the number of the current node.
- * @return The number of the current node in the list.
- */
-EAPI int
-ecore_list_index(Ecore_List *list)
-{
- int ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- ret = list->index;
-
- return ret;
-}
-
-/**
- * Find the number of nodes in the list.
- * @param list The list to find the number of nodes
- * @return The number of nodes in the list.
- */
-EAPI int
-ecore_list_count(Ecore_List *list)
-{
- int ret = 0;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- ret = list->nodes;
-
- return ret;
-}
-
-/**
- @defgroup Ecore_Data_List_Add_Item_Group List Item Adding Functions
-
- Functions that are used to add nodes to an Ecore_List.
- */
-
-/**
- * Append data to the list.
- * @param list The list.
- * @param data The data to append.
- * @return @c FALSE if an error occurs, @c TRUE if appended successfully
- * @ingroup Ecore_Data_List_Add_Item_Group
- */
-EAPI inline int
-ecore_list_append(Ecore_List *list, void *data)
-{
- int ret;
- Ecore_List_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- node = ecore_list_node_new();
- node->data = data;
-
- ret = _ecore_list_append_0(list, node);
-
- return ret;
-}
-
-/* For adding items to the end of the list */
-static int
-_ecore_list_append_0(Ecore_List *list, Ecore_List_Node *end)
-{
- if (list->last)
- list->last->next = end;
-
- list->last = end;
-
- if (!list->first)
- {
- list->first = end;
- list->index = 0;
- list->current = NULL;
- }
-
- if (list->index >= list->nodes)
- list->index++;
-
- list->nodes++;
-
- return TRUE;
-}
-
-/**
- * Prepend data to the beginning of the list.
- * @param list The list.
- * @param data The data to prepend.
- * @return @c FALSE if an error occurs, @c TRUE if prepended successfully.
- * @ingroup Ecore_Data_List_Add_Item_Group
- */
-EAPI inline int
-ecore_list_prepend(Ecore_List *list, void *data)
-{
- int ret;
- Ecore_List_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- node = ecore_list_node_new();
- node->data = data;
-
- ret = _ecore_list_prepend_0(list, node);
-
- return ret;
-}
-
-/* For adding items to the beginning of the list */
-static int
-_ecore_list_prepend_0(Ecore_List *list, Ecore_List_Node *start)
-{
- /* Put it at the beginning of the list */
- start->next = list->first;
-
- list->first = start;
-
- /* If no last node, then the first node is the last node */
- if (!list->last)
- list->last = list->first;
-
- list->nodes++;
- list->index++;
-
- return TRUE;
-}
-
-/**
- * Insert data in front of the current point in the list.
- * @param list The list to hold the inserted @p data.
- * @param data The data to insert into @p list.
- * @return @c FALSE if there is an error, @c TRUE on success
- * @ingroup Ecore_Data_List_Add_Item_Group
- */
-EAPI inline int
-ecore_list_insert(Ecore_List *list, void *data)
-{
- int ret;
- Ecore_List_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- node = ecore_list_node_new();
- node->data = data;
-
- ret = _ecore_list_insert(list, node);
-
- return ret;
-}
-
-/* For adding items in front of the current position in the list */
-static int
-_ecore_list_insert(Ecore_List *list, Ecore_List_Node *new_node)
-{
- /*
- * If the current point is at the beginning of the list, then it's the
- * same as prepending it to the list.
- */
- if (list->current == list->first)
- return _ecore_list_prepend_0(list, new_node);
-
- if (!list->current)
- {
- int ret_value;
-
- ret_value = _ecore_list_append_0(list, new_node);
- list->current = list->last;
-
- return ret_value;
- }
-
- /* Setup the fields of the new node */
- new_node->next = list->current;
-
- /* And hook the node into the list */
- _ecore_list_index_goto(list, ecore_list_index(list) - 1);
-
- list->current->next = new_node;
-
- /* Now move the current item to the inserted item */
- list->current = new_node;
- list->nodes++;
-
- return TRUE;
-}
-/**
- * Append a list to the list.
- * @param list The list.
- * @param append The list to append.
- * @return @c FALSE if an error occurs, @c TRUE if appended successfully
- * @ingroup Ecore_Data_List_Add_Item_Group
- */
-
-EAPI int
-ecore_list_append_list(Ecore_List *list, Ecore_List *append)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
- CHECK_PARAM_POINTER_RETURN("append", append, FALSE);
-
- if (ecore_list_empty_is(append))
- return TRUE;
-
- if (ecore_list_empty_is(list))
- {
- list->first = append->first;
- list->current = list->first;
- list->last = append->last;
- list->nodes = append->nodes;
- }
- else
- {
- list->last->next = append->first;
- list->last = append->last;
- list->nodes += append->nodes;
- }
-
- ecore_list_init(append);
- return TRUE;
-}
-
-/**
- * Prepend a list to the beginning of the list.
- * @param list The list.
- * @param prepend The list to prepend.
- * @return @c FALSE if an error occurs, @c TRUE if prepended successfully.
- * @ingroup Ecore_Data_List_Add_Item_Group
- */
-EAPI int
-ecore_list_prepend_list(Ecore_List *list, Ecore_List *prepend)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
- CHECK_PARAM_POINTER_RETURN("prepend", prepend, FALSE);
-
- if (ecore_list_empty_is(prepend))
- return TRUE;
-
- if (ecore_list_empty_is(list))
- {
- list->first = prepend->first;
- list->current = NULL;
- list->last = prepend->last;
- list->nodes = prepend->nodes;
- }
- else
- {
- prepend->last->next = list->first;
- list->first = prepend->first;
- list->nodes += prepend->nodes;
- list->index += prepend->nodes;
- }
-
- ecore_list_init(prepend);
- return TRUE;
-}
-
-/**
- @defgroup Ecore_Data_List_Remove_Item_Group List Item Removing Functions
-
- Functions that remove nodes from an Ecore_List.
- */
-
-/**
- * Remove the current item from the list.
- * @param list The list to remove the current item
- * @return A pointer to the removed data on success, @c NULL on failure.
- * @ingroup Ecore_Data_List_Remove_Item_Group
- */
-EAPI inline void *
-ecore_list_remove(Ecore_List *list)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_remove_0(list);
-
- return ret;
-}
-
-/* Remove the current item from the list */
-static void *
-_ecore_list_remove_0(Ecore_List *list)
-{
- void *ret = NULL;
- Ecore_List_Node *old;
-
- if (!list)
- return NULL;
-
- if (ecore_list_empty_is(list))
- return NULL;
-
- if (!list->current)
- return NULL;
-
- if (list->current == list->first)
- return _ecore_list_first_remove(list);
-
- if (list->current == list->last)
- return _ecore_list_last_remove(list);
-
- old = list->current;
-
- _ecore_list_index_goto(list, list->index - 1);
-
- list->current->next = old->next;
- old->next = NULL;
- ret = old->data;
- old->data = NULL;
-
- _ecore_list_next(list);
-
- ecore_list_node_destroy(old, NULL);
- list->nodes--;
-
- return ret;
-}
-
-/**
- * Remove and free the data in lists current position.
- * @param list The list to remove and free the current item.
- * @return @c TRUE on success, @c FALSE on error
- * @ingroup Ecore_Data_List_Remove_Item_Group
- */
-EAPI int
-ecore_list_remove_destroy(Ecore_List *list)
-{
- void *data;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- data = _ecore_list_remove_0(list);
- if (list->free_func)
- list->free_func(data);
-
- return TRUE;
-}
-
-/**
- * Remove the first item from the list.
- * @param list The list to remove the current item
- * @return Returns a pointer to the removed data on success, @c NULL on
- * failure.
- * @ingroup Ecore_Data_List_Remove_Item_Group
- */
-EAPI inline void *
-ecore_list_first_remove(Ecore_List *list)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_first_remove(list);
-
- return ret;
-}
-
-/* Remove the first item from the list */
-static void *
-_ecore_list_first_remove(Ecore_List *list)
-{
- void *ret = NULL;
- Ecore_List_Node *old;
-
- if (!list)
- return NULL;
-
- if (ecore_list_empty_is(list))
- return NULL;
-
- old = list->first;
-
- list->first = list->first->next;
-
- if (list->current == old)
- list->current = list->first;
- else
- (list->index ? list->index-- : 0);
-
- if (list->last == old)
- list->last = list->first;
-
- ret = old->data;
- old->data = NULL;
-
- ecore_list_node_destroy(old, NULL);
- list->nodes--;
-
- return ret;
-}
-
-/**
- * Remove the last item from the list.
- * @param list The list to remove the last node from
- * @return A pointer to the removed data on success, @c NULL on failure.
- * @ingroup Ecore_Data_List_Remove_Item_Group
- */
-EAPI inline void *
-ecore_list_last_remove(Ecore_List *list)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_last_remove(list);
-
- return ret;
-}
-
-/* Remove the last item from the list */
-static void *
-_ecore_list_last_remove(Ecore_List *list)
-{
- void *ret = NULL;
- Ecore_List_Node *old, *prev;
-
- if (!list)
- return NULL;
-
- if (ecore_list_empty_is(list))
- return NULL;
-
- old = list->last;
- if (list->current == old)
- list->current = NULL;
-
- if (list->first == old)
- list->first = NULL;
-
- for (prev = list->first; prev && prev->next != old; prev = prev->next) ;
- list->last = prev;
- if (prev)
- prev->next = NULL;
-
- old->next = NULL;
- ret = old->data;
- old->data = NULL;
-
- ecore_list_node_destroy(old, NULL);
- list->nodes--;
-
- return ret;
-}
-
-/**
- @defgroup Ecore_Data_List_Traverse_Group List Traversal Functions
-
- Functions that can be used to traverse an Ecore_List.
- */
-
-/**
- * Make the current item the item with the given index number.
- * @param list The list.
- * @param idx The position to move the current item.
- * @return A pointer to new current item on success, @c NULL on failure.
- * @ingroup Ecore_Data_List_Traverse_Group
- */
-EAPI inline void *
-ecore_list_index_goto(Ecore_List *list, int idx)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_index_goto(list, idx);
-
- return ret;
-}
-
-/* This is the non-threadsafe version, use this inside internal functions that
- * already lock the list */
-static void *
-_ecore_list_index_goto(Ecore_List *list, int idx)
-{
- int i;
-
- if (!list)
- return NULL;
-
- if (ecore_list_empty_is(list))
- return NULL;
-
- if (idx > ecore_list_count(list) || idx < 0)
- return NULL;
-
- if (idx < list->index)
- {
- _ecore_list_first_goto(list);
- i = 0;
- }
- else
- i = list->index;
-
- for (; i < idx && _ecore_list_next(list); i++) ;
-
- if (i >= list->nodes)
- return NULL;
-
- list->index = i;
-
- return list->current->data;
-}
-
-/**
- * Make the current item the node that contains @p data.
- * @param list The list.
- * @param data The data to find.
- * @return A pointer to @p data on success, @c NULL on failure.
- * @ingroup Ecore_Data_List_Traverse_Group
- */
-EAPI inline void *
-ecore_list_goto(Ecore_List *list, const void *data)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_goto(list, data);
-
- return ret;
-}
-
-/* Set the current position to the node containing data */
-static void *
-_ecore_list_goto(Ecore_List *list, const void *data)
-{
- int idx;
- Ecore_List_Node *node;
-
- if (!list)
- return NULL;
-
- idx = 0;
-
- node = list->first;
- while (node && node->data)
- {
- Ecore_List_Node *next;
-
- if (node->data == data)
- break;
-
- next = node->next;
-
- node = next;
-
- idx++;
- }
-
- if (!node)
- return NULL;
-
- list->current = node;
- list->index = idx;
-
- return list->current->data;
-}
-
-/**
- * Make the current item the first item in the list
- * @param list The list.
- * @return A pointer to the first item on success, @c NULL on failure
- * @ingroup Ecore_Data_List_Traverse_Group
- */
-EAPI inline void *
-ecore_list_first_goto(Ecore_List *list)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_first_goto(list);
-
- return ret;
-}
-
-/* Set the current position to the start of the list */
-static void *
-_ecore_list_first_goto(Ecore_List *list)
-{
- if (!list || !list->first)
- return NULL;
-
- list->current = list->first;
- list->index = 0;
-
- return list->current->data;
-}
-
-/**
- * Make the current item the last item in the list.
- * @param list The list.
- * @return A pointer to the last item on success, @c NULL on failure.
- * @ingroup Ecore_Data_List_Traverse_Group
- */
-EAPI inline void *
-ecore_list_last_goto(Ecore_List *list)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_last_goto(list);
-
- return ret;
-}
-
-/* Set the current position to the end of the list */
-static void *
-_ecore_list_last_goto(Ecore_List *list)
-{
- if (!list || !list->last)
- return NULL;
-
- list->current = list->last;
- list->index = (list->nodes - 1);
-
- return list->current->data;
-}
-
-/**
- * Retrieve the data pointed to by the current item in @p list.
- * @param list The list.
- * @return Returns the data at current position, can be @c NULL.
- */
-EAPI inline void *
-ecore_list_current(Ecore_List *list)
-{
- void *ret;
-
- ret = _ecore_list_current(list);
-
- return ret;
-}
-
-/**
- * Retrieve the data pointed to by the first item in @p list.
- * @param list The list.
- * @return Returns the data at current position, can be @c NULL.
- */
-EAPI inline void *
-ecore_list_first(Ecore_List *list)
-{
- void *ret;
-
- if (!list->first)
- return NULL;
-
- ret = list->first->data;
-
- return ret;
-}
-
-/**
- * Retrieve the data pointed to by the last item in @p list.
- * @param list The list.
- * @return Returns the data at current position, can be @c NULL.
- */
-EAPI inline void *
-ecore_list_last(Ecore_List *list)
-{
- void *ret;
-
- if (!list->last)
- return NULL;
-
- ret = list->last->data;
-
- return ret;
-}
-
-/* Return the data of the current node without incrementing */
-static void *
-_ecore_list_current(Ecore_List *list)
-{
- void *ret;
-
- if (!list->current)
- return NULL;
-
- ret = list->current->data;
-
- return ret;
-}
-
-/**
- * Retrieve the data pointed to by the current item, and make the next item
- * the current item.
- * @param list The list to retrieve data from.
- * @return The current item in the list on success, @c NULL on failure.
- */
-EAPI inline void *
-ecore_list_next(Ecore_List *list)
-{
- void *data;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- data = _ecore_list_next(list);
-
- return data;
-}
-
-/* Return the data contained in the current node and go to the next node */
-static void *
-_ecore_list_next(Ecore_List *list)
-{
- void *data;
- Ecore_List_Node *ret;
- Ecore_List_Node *next;
-
- if (!list->current)
- return NULL;
-
- ret = list->current;
- next = list->current->next;
-
- list->current = next;
- list->index++;
-
- data = ret->data;
-
- return data;
-}
-
-/**
- * Remove all nodes from @p list.
- * @param list The list.
- * @return Returns @c TRUE on success, @c FALSE on error.
- * @note The data for each item on the list is not freed by
- * @c ecore_list_clear().
- */
-EAPI int
-ecore_list_clear(Ecore_List *list)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- while (!ecore_list_empty_is(list))
- _ecore_list_first_remove(list);
-
- return TRUE;
-}
-
-/**
- * Execute function for each node in @p list.
- * @param list The list.
- * @param function The function to pass each node from @p list to.
- * @return Returns @c TRUE on success, @c FALSE on failure.
- * @ingroup Ecore_Data_List_Traverse_Group
- */
-EAPI int
-ecore_list_for_each(Ecore_List *list, Ecore_For_Each function, void *user_data)
-{
- int ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- ret = _ecore_list_for_each(list, function, user_data);
-
- return ret;
-}
-
-/* The real meat of executing the function for each data node */
-static int
-_ecore_list_for_each(Ecore_List *list, Ecore_For_Each function, void *user_data)
-{
- void *value;
-
- if (!list || !function)
- return FALSE;
-
- _ecore_list_first_goto(list);
- while ((value = _ecore_list_next(list)))
- function(value, user_data);
-
- return TRUE;
-}
-
-/**
- * Find data in @p list using the compare function @p func
- * @param list The list.
- * @param function The function to test each node of @p list with
- * @param user_data Data to match against (used by @p function)
- * @return the first matching data node, or NULL if none match
- */
-EAPI void *
-ecore_list_find(Ecore_List *list,
- Ecore_Compare_Cb function,
- const void *user_data)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- return _ecore_list_find(list, function, user_data);
-}
-
-/* The real meat of finding a node via a compare cb */
-static void *
-_ecore_list_find(Ecore_List *list,
- Ecore_Compare_Cb function,
- const void *user_data)
-{
- void *value;
- if (!list || !function)
- return NULL;
-
- _ecore_list_first_goto(list);
- while ((value = _ecore_list_current(list)))
- {
- if (!function(value, user_data))
- return value;
-
- ecore_list_next(list);
- }
-
- return NULL;
-}
-
-/**
- * Sort data in @p list using the compare function @p compare
- * @param list The list.
- * @param compare The function to compare the data of @p list
- * @param order The sort direction, possible values are ECORE_SORT_MIN and
- * ECORE_SORT_MAX
- * @return true on success
- *
- * This is a wrapper function for mergesort and heapsort. It
- * tries to choose the fastest algorithm depending on the
- * number of notes. Note: The sort may be unstable.
- */
-EAPI int
-ecore_list_sort(Ecore_List *list, Ecore_Compare_Cb compare, char order)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, 0);
-
- if (list->nodes < 2)
- return 1;
-
- if (list->nodes < ECORE_MERGESORT_LIMIT)
- return ecore_list_mergesort(list, compare, order);
-
- if (!ecore_list_heapsort(list, compare, order))
- return ecore_list_mergesort(list, compare, order);
-
- return 1;
-}
-
-/**
- * Sort data in @p list using the compare function @p compare
- * @param list The list.
- * @param compare The function to compare the data of @p list
- * @param order The sort direction, possible values are ECORE_SORT_MIN and
- * ECORE_SORT_MAX
- * @return true on success
- *
- * Mergesort is a stable, in-place sorting algorithm
- */
-EAPI int
-ecore_list_mergesort(Ecore_List *list, Ecore_Compare_Cb compare, char order)
-{
- Ecore_List_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, 0);
- if (list->nodes < 2)
- return 1;
-
- if (order == ECORE_SORT_MIN)
- order = 1;
- else
- order = -1;
-
- node = _ecore_list_node_mergesort(list->first, list->nodes, compare, order);
- list->first = node;
-
- /* maybe there is a better way to do that but our last node has changed */
- while (node->next)
- node = node->next;
- list->last = node;
-
- _ecore_list_first_goto(list);
-
- return 1;
-}
-
-/**
- * Merge the @p l2 into the @p list using the compare function @p compare.
- * Both lists need to be sorted else a corrupt list could be the result.
- * @param list The list.
- * @param l2 The second list, this list will be empty after the merge
- * @param compare The function to compare the data of @p list and @p l2
- * @param order The sort direction, possible values are ECORE_SORT_MIN and
- * ECORE_SORT_MAX
- */
-EAPI void
-ecore_list_merge(Ecore_List *list,
- Ecore_List *l2,
- Ecore_Compare_Cb compare,
- char order)
-{
- CHECK_PARAM_POINTER("list", list);
- CHECK_PARAM_POINTER("l2", l2);
-
- if (ecore_list_empty_is(l2))
- return;
-
- if (ecore_list_empty_is(list))
- {
- ecore_list_append_list(list, l2);
- return;
- }
-
- if (order == ECORE_SORT_MIN)
- order = 1;
- else
- order = -1;
-
- list->first = _ecore_list_node_merge(list->first, l2->first, compare, order);
-
- if ((order * compare(list->last->data, l2->last->data)) < 0)
- list->last = l2->last;
-
- list->nodes += l2->nodes;
- ecore_list_init(l2);
-}
-
-/* this is the internal recrusive function for the merge sort */
-static Ecore_List_Node *
-_ecore_list_node_mergesort(Ecore_List_Node *first, int n,
- Ecore_Compare_Cb compare, int order)
-{
- Ecore_List_Node *middle;
- Ecore_List_Node *premid;
- int mid;
- int i;
-
- mid = n / 2;
-
- if (n < 2)
- return first;
- else if (n == 2)
- {
- if (compare(first->data, first->next->data) * order > 0)
- {
- /* swap the data */
- void *data;
- data = first->next->data;
- first->next->data = first->data;
- first->data = data;
- }
-
- return first;
- }
-
- /* first find the premiddle node*/
- for (premid = first, i = 0; i < mid - 1; i++)
- premid = premid->next;
-
- /* split the list */
- middle = premid->next;
- premid->next = NULL;
-
- /* sort the the partial lists */
- first = _ecore_list_node_mergesort(first, mid, compare, order);
- middle = _ecore_list_node_mergesort(middle, n - mid, compare, order);
-
- return _ecore_list_node_merge(first, middle, compare, order);
-}
-
-/* this function is used to merge the partial sorted lists */
-static Ecore_List_Node *
-_ecore_list_node_merge(Ecore_List_Node *first, Ecore_List_Node *second,
- Ecore_Compare_Cb compare, int order)
-{
- Ecore_List_Node *list;
- Ecore_List_Node *l;
-
- /* select the first node outside the loop, because we need to keep
- * a pointer to it */
- if (compare(first->data, second->data) * order > 0)
- {
- list = l = second;
- second = second->next;
- }
- else
- {
- list = l = first;
- first = first->next;
- }
-
- /* and now start the merging */
- while (first && second)
- {
- if (compare(first->data, second->data) * order > 0)
- {
- l = l->next = second;
- second = second->next;
- }
- else
- {
- l = l->next = first;
- first = first->next;
- }
- }
-
- /* append the rest or set it to NULL */
- if (first)
- l->next = first;
- else if (second)
- l->next = second;
- else
- l->next = NULL;
-
- return list;
-}
-
-/**
- * Sort data in @p list using the compare function @p compare
- * @param list The list.
- * @param compare The function to compare the data of @p list
- * @param order The sort direction, possible values are ECORE_SORT_MIN and
- * ECORE_SORT_MAX
- * @return true on success
- *
- * Heapsort is a unstable sorting algorithm, it needs to allocate extra memomry,
- * but there for it is for a great number of nodes faster than mergesort
- */
-EAPI int
-ecore_list_heapsort(Ecore_List *list, Ecore_Compare_Cb compare, char order)
-{
- Ecore_Sheap *heap;
- Ecore_List_Node *node;
- void *data;
-
- CHECK_PARAM_POINTER_RETURN("list", list, 0);
- /*
- * Push the data into a heap.
- */
- heap = ecore_sheap_new(compare, list->nodes);
- if (!heap)
- return 0;
-
- ecore_sheap_order_set(heap, order);
- _ecore_list_first_goto(list);
- while ((data = _ecore_list_next(list)))
- {
- ecore_sheap_insert(heap, data);
- }
-
- /*
- * Extract in sorted order.
- */
- node = list->first;
- while (node)
- {
- node->data = ecore_sheap_extract(heap);
- node = node->next;
- }
-
- ecore_sheap_destroy(heap);
-
- _ecore_list_first_goto(list);
- return 1;
-}
-
-/* Initialize a node to starting values */
-EAPI int
-ecore_list_node_init(Ecore_List_Node *node)
-{
- CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
-
- node->next = NULL;
- node->data = NULL;
-
- return TRUE;
-}
-
-/**
- @defgroup Ecore_Data_List_Node_Group List Node Functions
-
- Functions that are used in the creation, maintenance and destruction of
- Ecore_List nodes.
- */
-
-/**
- * Allocates and initializes a new list node.
- * @return A new Ecore_List_Node on success, @c NULL otherwise.
- * @ingroup Ecore_Data_List_Node_Group
- */
-EAPI Ecore_List_Node *
-ecore_list_node_new()
-{
- Ecore_List_Node *new_node;
-
- new_node = malloc(sizeof(Ecore_List_Node));
-
- if (!ecore_list_node_init(new_node))
- {
- FREE(new_node);
- return NULL;
- }
-
- return new_node;
-}
-
-/**
- * Calls the function to free the data and the node.
- * @param node Node to destroy.
- * @param free_func Function to call if @p node points to data to free.
- * @return @c TRUE.
- * @ingroup Ecore_Data_List_Node_Group
- */
-EAPI int
-ecore_list_node_destroy(Ecore_List_Node *node, Ecore_Free_Cb free_func)
-{
- CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
-
- if (free_func && node->data)
- free_func(node->data);
-
- FREE(node);
-
- return TRUE;
-}
-
-/**
- * @defgroup Ecore_Data_DList_Creation_Group Doubly Linked List Creation/Destruction Functions
- *
- * Functions used to create, initialize and destroy @c Ecore_DLists.
- */
-
-/**
- * Creates and initialises a new doubly linked list.
- * @return A new initialised doubly linked list on success, @c NULL
- * on failure.
- * @ingroup Ecore_Data_DList_Creation_Group
- */
-EAPI Ecore_DList *
-ecore_dlist_new()
-{
- Ecore_DList *list = NULL;
-
- list = (Ecore_DList *)malloc(sizeof(Ecore_DList));
- if (!list)
- return NULL;
-
- if (!ecore_dlist_init(list))
- {
- IF_FREE(list);
- return NULL;
- }
-
- return list;
-}
-
-/**
- * Initialises a list to some sane starting values.
- * @param list The doubly linked list to initialise.
- * @return @c TRUE if successful, @c FALSE if an error occurs.
- * @ingroup Ecore_Data_DList_Creation_Group
- */
-EAPI int
-ecore_dlist_init(Ecore_DList *list)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- memset(list, 0, sizeof(Ecore_DList));
-
- return TRUE;
-}
-
-/**
- * Frees a doubly linked list and all of its nodes.
- * @param list The doubly linked list to be freed.
- * @ingroup Ecore_Data_DList_Creation_Group
- */
-EAPI void
-ecore_dlist_destroy(Ecore_DList *list)
-{
- void *data;
- CHECK_PARAM_POINTER("list", list);
-
- while (list->first)
- {
- data = _ecore_dlist_first_remove(list);
- if (list->free_func)
- list->free_func(data);
- }
-
- FREE(list);
-}
-
-/**
- * Sets the function used for freeing data stored in a doubly linked list.
- * @param list The doubly linked list that will use this function when
- * nodes are destroyed.
- * @param free_func The function that will free the key data
- * @return @c TRUE on success, @c FALSE on failure.
- * @ingroup Ecore_Data_DList_Creation_Group
- */
-EAPI int
-ecore_dlist_free_cb_set(Ecore_DList *list, Ecore_Free_Cb free_func)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- return ecore_list_free_cb_set(ECORE_LIST(list), free_func);
-}
-
-/**
- * Returns whether there is anything in the given doubly linked list.
- * @param list The given doubly linked list.
- * @return @c TRUE if there are nodes, @c FALSE otherwise.
- */
-EAPI int
-ecore_dlist_empty_is(Ecore_DList *list)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- return ecore_list_empty_is(ECORE_LIST(list));
-}
-
-/**
- * Retrieves the index of the current node of the given doubly linked list.
- * @param list The given doubly linked list.
- * @return The index of the current node.
- */
-EAPI inline int
-ecore_dlist_index(Ecore_DList *list)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- return ecore_list_index(ECORE_LIST(list));
-}
-
-/**
- * @defgroup Ecore_Data_DList_Add_Item_Group Doubly Linked List Adding Functions
- *
- * Functions that are used to add nodes to an Ecore_DList.
- */
-
-/**
- * Appends data to the given doubly linked list.
- * @param list The given doubly linked list.
- * @param data The data to append.
- * @return @c TRUE if the data is successfully appended, @c FALSE otherwise.
- * @ingroup Ecore_Data_DList_Add_Item_Group
- */
-EAPI int
-ecore_dlist_append(Ecore_DList *list, void *data)
-{
- int ret;
- Ecore_DList_Node *prev;
- Ecore_DList_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- node = ecore_dlist_node_new();
- ECORE_LIST_NODE(node)->data = data;
-
- prev = ECORE_DLIST_NODE(ECORE_LIST(list)->last);
- ret = _ecore_list_append_0(ECORE_LIST(list), ECORE_LIST_NODE(node));
- if (ret)
- node->previous = prev;
-
- return ret;
-}
-
-/**
- * Adds data to the very beginning of the given doubly linked list.
- * @param list The given doubly linked list.
- * @param data The data to prepend.
- * @return @c TRUE if the data is successfully prepended, @c FALSE otherwise.
- * @ingroup Ecore_Data_DList_Add_Item_Group
- */
-EAPI int
-ecore_dlist_prepend(Ecore_DList *list, void *data)
-{
- int ret;
- Ecore_DList_Node *prev;
- Ecore_DList_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- node = ecore_dlist_node_new();
- ECORE_LIST_NODE(node)->data = data;
-
- prev = ECORE_DLIST_NODE(ECORE_LIST(list)->first);
- ret = _ecore_list_prepend_0(ECORE_LIST(list), ECORE_LIST_NODE(node));
- if (ret && prev)
- prev->previous = node;
-
- return ret;
-}
-
-/**
- * Inserts data at the current point in the given doubly linked list.
- * @param list The given doubly linked list.
- * @param data The data to be inserted.
- * @return @c TRUE on success, @c FALSE otherwise.
- * @ingroup Ecore_Data_DList_Add_Item_Group
- */
-EAPI int
-ecore_dlist_insert(Ecore_DList *list, void *data)
-{
- int ret = TRUE;
- Ecore_DList_Node *prev;
- Ecore_DList_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- /*
- * Identify and shortcut the end cases.
- */
- if (!ECORE_LIST(list)->current)
- return ecore_dlist_append(list, data);
-
- if (ECORE_LIST(list)->current == ECORE_LIST(list)->first)
- return ecore_dlist_prepend(list, data);
-
- node = ecore_dlist_node_new();
- ECORE_LIST_NODE(node)->data = data;
-
- /* Setup the fields of the new node */
- ECORE_LIST_NODE(node)->next = ECORE_LIST(list)->current;
-
- /* And hook the node into the list */
- prev = ECORE_DLIST_NODE(ECORE_LIST(list)->current)->previous;
- ECORE_LIST_NODE(prev)->next = ECORE_LIST_NODE(node);
- ECORE_DLIST_NODE(ECORE_LIST(list)->current)->previous = node;
- node->previous = prev;
-
- /* Now move the current item to the inserted item */
- ECORE_LIST(list)->current = ECORE_LIST_NODE(node);
- ECORE_LIST(list)->nodes++;
-
- return ret;
-}
-
-/**
- * Appends a list to the given doubly linked list.
- * @param list The given doubly linked list.
- * @param append The list to append.
- * @return @c TRUE if the data is successfully appended, @c FALSE otherwise.
- * @ingroup Ecore_Data_DList_Add_Item_Group
- */
-EAPI int
-ecore_dlist_append_list(Ecore_DList *list, Ecore_DList *append)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
- CHECK_PARAM_POINTER_RETURN("append", append, FALSE);
-
- if (ecore_dlist_empty_is(append))
- return TRUE;
-
- if (ecore_dlist_empty_is(list))
- {
- list->first = append->first;
- list->current = NULL;
- list->last = append->last;
- list->nodes = append->nodes;
- }
- else
- {
- list->last->next = append->first;
- ECORE_DLIST_NODE(append->first)->previous = ECORE_DLIST_NODE(list->last);
- list->last = append->last;
- list->nodes += append->nodes;
- }
-
- ecore_dlist_init(append);
- return TRUE;
-}
-
-/**
- * Adds a list to the very beginning of the given doubly linked list.
- * @param list The given doubly linked list.
- * @param prepend The list to prepend.
- * @return @c TRUE if the data is successfully prepended, @c FALSE otherwise.
- * @ingroup Ecore_Data_DList_Add_Item_Group
- */
-EAPI int
-ecore_dlist_prepend_list(Ecore_DList *list, Ecore_DList *prepend)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
- CHECK_PARAM_POINTER_RETURN("prepend", prepend, FALSE);
-
- if (ecore_dlist_empty_is(prepend))
- return TRUE;
-
- if (ecore_dlist_empty_is(list))
- {
- list->first = prepend->first;
- list->current = NULL;
- list->last = prepend->last;
- list->nodes = prepend->nodes;
- }
- else
- {
- prepend->last->next = list->first;
- ECORE_DLIST_NODE(list->first)->previous = ECORE_DLIST_NODE(
- prepend->last);
- list->first = prepend->first;
- list->nodes += prepend->nodes;
- list->index += prepend->nodes;
- }
-
- ecore_dlist_init(prepend);
- return TRUE;
-}
-
-/**
- * @defgroup Ecore_Data_DList_Remove_Item_Group Doubly Linked List Removing Functions
- *
- * Functions that remove nodes from an @c Ecore_DList.
- */
-
-/**
- * Removes the current item from the given doubly linked list.
- * @param list The given doubly linked list.
- * @return A pointer to the removed data on success, @c NULL otherwise.
- * @ingroup Ecore_Data_DList_Remove_Item_Group
- */
-EAPI void *
-ecore_dlist_remove(Ecore_DList *list)
-{
- void *ret;
- Ecore_List *l2 = ECORE_LIST(list);
- Ecore_DList_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- if (l2->current)
- {
- node = ECORE_DLIST_NODE(list->current->next);
- if (node)
- node->previous = ECORE_DLIST_NODE(l2->current)->previous;
- }
-
- ret = _ecore_list_remove_0(list);
-
- return ret;
-}
-
-/**
- * Removes the first item from the given doubly linked list.
- * @param list The given doubly linked list.
- * @return A pointer to the removed data on success, @c NULL on failure.
- * @ingroup Ecore_Data_DList_Remove_Item_Group
- */
-EAPI void *
-ecore_dlist_first_remove(Ecore_DList *list)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_dlist_first_remove(list);
-
- return ret;
-}
-
-/**
- * Removes and frees the data at the current position in the given doubly
- * linked list.
- * @param list The given doubly linked list.
- * @return @c TRUE on success, @c FALSE otherwise.
- * @ingroup Ecore_Data_DList_Remove_Item_Group
- */
-EAPI int
-ecore_dlist_remove_destroy(Ecore_DList *list)
-{
- void *data;
-
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- data = ecore_dlist_remove(list);
- if (!data)
- return FALSE;
-
- if (list->free_func)
- list->free_func(data);
-
- return TRUE;
-}
-
-static void *
-_ecore_dlist_first_remove(Ecore_DList *list)
-{
- void *ret;
-
- if (!list)
- return NULL;
-
- ret = _ecore_list_first_remove(list);
- if (ret && ECORE_LIST(list)->first)
- ECORE_DLIST_NODE(ECORE_LIST(list)->first)->previous = NULL;
-
- return ret;
-}
-
-/**
- * Removes the last item from the given doubly linked list.
- * @param list The given doubly linked list.
- * @return A pointer to the removed data on success, @c NULL otherwise.
- * @ingroup Ecore_Data_DList_Remove_Item_Group
- */
-EAPI void *
-ecore_dlist_last_remove(Ecore_DList *list)
-{
- void *ret;
- Ecore_List_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- if (ecore_list_empty_is(list))
- return NULL;
-
- node = list->last;
- list->last = ECORE_LIST_NODE(ECORE_DLIST_NODE(node)->previous);
- if (list->last)
- list->last->next = NULL;
-
- if (list->first == node)
- list->first = NULL;
-
- if (list->current == node)
- list->current = NULL;
-
- ret = node->data;
- ecore_list_node_destroy(node, NULL);
-
- list->nodes--;
- if (list->index >= list->nodes)
- list->index--;
-
- return ret;
-}
-
-/**
- * Moves the current item to the index number in the given doubly linked list.
- * @param list The given doubly linked list.
- * @param idx The position to move the current item
- * @return The node at specified index on success, @c NULL on error.
- */
-EAPI void *
-ecore_dlist_index_goto(Ecore_DList *list, int idx)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_dlist_index_goto(list, idx);
-
- return ret;
-}
-
-/* This is the non-threadsafe version, use this inside internal functions that
- * already lock the list */
-static void *
-_ecore_dlist_index_goto(Ecore_DList *list, int idx)
-{
- int i, increment;
-
- if (!list)
- return NULL;
-
- if (ecore_list_empty_is(ECORE_LIST(list)))
- return NULL;
-
- if (idx > ecore_list_count(ECORE_LIST(list)) || idx < 0)
- return NULL;
-
- if (ECORE_LIST(list)->index >= ECORE_LIST(list)->nodes)
- _ecore_list_last_goto(ECORE_LIST(list));
-
- if (idx < ECORE_LIST(list)->index)
- increment = -1;
- else
- increment = 1;
-
- for (i = ECORE_LIST(list)->index; i != idx; i += increment)
- {
- if (increment > 0)
- _ecore_list_next(list);
- else
- _ecore_dlist_previous(list);
- }
-
- return _ecore_list_current(list);
-}
-
-/**
- * @brief Move the current item to the node that contains data
- * @param list: the list to move the current item in
- * @param data: the data to find and set the current item to
- *
- * @return Returns specified data on success, NULL on error
- */
-EAPI void *
-ecore_dlist_goto(Ecore_DList *list, void *data)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_goto(ECORE_LIST(list), data);
-
- return ret;
-}
-
-/**
- * @brief Move the current pointer to the first item in the list
- * @param list: the list to change the current to the first item
- *
- * @return Returns a pointer to the first item on success, NULL on failure.
- */
-EAPI void *
-ecore_dlist_first_goto(Ecore_DList *list)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_first_goto(list);
-
- return ret;
-}
-
-/**
- * @brief Move the pointer to the current item to the last item
- * @param list: the list to move the current item pointer to the last
- * @return Returns a pointer to the last item in the list , NULL if empty.
- */
-EAPI void *
-ecore_dlist_last_goto(Ecore_DList *list)
-{
- void *ret;
-
- CHECK_PARAM_POINTER_RETURN("list", list, NULL);
-
- ret = _ecore_list_last_goto(ECORE_LIST(list));
-
- return ret;
-}
-
-/**
- * @brief Return the data in the current list item
- * @param list: the list to the return the current data
- * @return Returns value of the current data item, NULL if no current item
- */
-EAPI void *
-ecore_dlist_current(Ecore_DList *list)
-{
- void *ret;
-
- ret = _ecore_list_current(ECORE_LIST(list));
-
- return ret;
-}
-
-/**
- * @brief Move to the next item in the list and return current item
- * @param list: the list to move to the next item in.
- * @return Returns data in the current list node, or NULL on error
- */
-EAPI void *
-ecore_dlist_next(Ecore_DList *list)
-{
- void *data;
-
- data = _ecore_list_next(list);
-
- return data;
-}
-
-/**
- * @brief Move to the previous item and return current item
- * @param list: the list to move to the previous item in.
- * @return Returns data in the current list node, or NULL on error
- */
-EAPI void *
-ecore_dlist_previous(Ecore_DList *list)
-{
- void *data;
-
- data = _ecore_dlist_previous(list);
-
- return data;
-}
-
-static void *
-_ecore_dlist_previous(Ecore_DList *list)
-{
- void *data = NULL;
-
- if (!list)
- return NULL;
-
- if (ECORE_LIST(list)->current)
- {
- data = ECORE_LIST(list)->current->data;
- ECORE_LIST(list)->
- current = ECORE_LIST_NODE(ECORE_DLIST_NODE(
- ECORE_LIST(list)->
- current)->previous);
- ECORE_LIST(list)->index
- --;
- }
- else
- _ecore_list_last_goto(
- ECORE_LIST(list));
-
- return data;
-}
-
-/**
- * @brief Remove all nodes from the list.
- * @param list: the list to remove all nodes from
- *
- * @return Returns TRUE on success, FALSE on errors
- */
-EAPI int
-ecore_dlist_clear(Ecore_DList *list)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
-
- ecore_list_clear(ECORE_LIST(list));
-
- return TRUE;
-}
-
-/**
- * Sort data in @p list using the compare function @p compare
- * @param list The list.
- * @param compare The function to compare the data of @p list
- * @param order The sort direction, possible values are ECORE_SORT_MIN and
- * ECORE_SORT_MAX
- * @return true on success
- *
- * This is a wrapper function for mergesort and heapsort. It
- * tries to choose the fastest algorithm depending on the
- * number of notes. Note: The sort may be unstable.
- */
-EAPI int
-ecore_dlist_sort(Ecore_List *list, Ecore_Compare_Cb compare, char order)
-{
- CHECK_PARAM_POINTER_RETURN("list", list, 0);
-
- if (list->nodes < 2)
- return 1;
-
- if (list->nodes < ECORE_MERGESORT_LIMIT)
- return ecore_dlist_mergesort(list, compare, order);
-
- if (!ecore_dlist_heapsort(list, compare, order))
- return ecore_dlist_mergesort(list, compare, order);
-
- return 1;
-}
-
-/**
- * Sort data in @p list using the compare function @p compare
- * @param list The list.
- * @param compare The function to compare the data of @p list
- * @param order The sort direction, possible values are ECORE_SORT_MIN and
- * ECORE_SORT_MAX
- * @return true on success
- *
- * Mergesort is a stable, in-place sorting algorithm
- */
-EAPI int
-ecore_dlist_mergesort(Ecore_DList *list, Ecore_Compare_Cb compare, char order)
-{
- Ecore_List_Node *node;
-
- CHECK_PARAM_POINTER_RETURN("list", list, 0);
- if (list->nodes < 2)
- return 1;
-
- if (order == ECORE_SORT_MIN)
- order = 1;
- else
- order = -1;
-
- node = _ecore_dlist_node_mergesort(list->first, list->nodes, compare, order);
- list->first = node;
-
- /* maybe there is a better way to do that but our last node has changed */
- while (node->next)
- node = node->next;
- list->last = node;
-
- _ecore_list_first_goto(list);
-
- return 1;
-}
-
-/**
- * Merge the @p l2 into the @p list using the compare function @p compare.
- * Both lists need to be sorted else a corrupt list could be the result.
- * @param list The list.
- * @param l2 The second list, this list will be empty after the merge
- * @param compare The function to compare the data of @p list and @p l2
- * @param order The sort direction, possible values are ECORE_SORT_MIN and
- * ECORE_SORT_MAX
- */
-EAPI void
-ecore_dlist_merge(Ecore_DList *list,
- Ecore_DList *l2,
- Ecore_Compare_Cb compare,
- char order)
-{
- CHECK_PARAM_POINTER("list", list);
- CHECK_PARAM_POINTER("l2", l2);
-
- if (ecore_dlist_empty_is(l2))
- return;
-
- if (ecore_dlist_empty_is(list))
- {
- ecore_dlist_append_list(list, l2);
- return;
- }
-
- if (order == ECORE_SORT_MIN)
- order = 1;
- else
- order = -1;
-
- list->first = _ecore_dlist_node_merge(list->first, l2->first, compare, order);
-
- if ((order * compare(list->last->data, l2->last->data)) < 0)
- list->last = l2->last;
-
- list->nodes += l2->nodes;
- ecore_dlist_init(l2);
-}
-
-/* this is the internal recrusive function for the merge sort */
-static Ecore_List_Node *
-_ecore_dlist_node_mergesort(Ecore_List_Node *first, int n,
- Ecore_Compare_Cb compare, int order)
-{
- Ecore_List_Node *middle;
- Ecore_List_Node *premid;
- int mid;
- int i;
-
- mid = n / 2;
-
- if (n < 2)
- return first;
- else if (n == 2)
- {
- if (compare(first->data, first->next->data) * order > 0)
- {
- /* swap the data */
- void *data;
- data = first->next->data;
- first->next->data = first->data;
- first->data = data;
- }
-
- return first;
- }
-
- /* first find the premiddle node*/
- for (premid = first, i = 0; i < mid - 1; i++)
- premid = premid->next;
-
- /* split the list */
- middle = premid->next;
- premid->next = NULL;
- ECORE_DLIST_NODE(middle)->previous = NULL;
-
- /* sort the the partial lists */
- first = _ecore_dlist_node_mergesort(first, mid, compare, order);
- middle = _ecore_dlist_node_mergesort(middle, n - mid, compare, order);
-
- return _ecore_dlist_node_merge(first, middle, compare, order);
-}
-
-/* this function is used to merge the partial sorted lists */
-static Ecore_List_Node *
-_ecore_dlist_node_merge(Ecore_List_Node *first, Ecore_List_Node *second,
- Ecore_Compare_Cb compare, int order)
-{
- Ecore_List_Node *list;
- Ecore_List_Node *l;
-
- /* select the first node outside the loop, because we need to keep
- * a pointer to it */
- if (compare(first->data, second->data) * order > 0)
- {
- list = l = second;
- second = second->next;
- }
- else
- {
- list = l = first;
- first = first->next;
- }
-
- /* and now start the merging */
- while (first && second)
- {
- if (compare(first->data, second->data) * order > 0)
- {
- ECORE_DLIST_NODE(second)->previous = ECORE_DLIST_NODE(l);
- l = l->next = second;
- second = second->next;
- }
- else
- {
- ECORE_DLIST_NODE(first)->previous = ECORE_DLIST_NODE(l);
- l = l->next = first;
- first = first->next;
- }
- }
-
- /* append the rest or set it to NULL */
- if (first)
- {
- ECORE_DLIST_NODE(first)->previous = ECORE_DLIST_NODE(l);
- l->next = first;
- }
- else if (second)
- {
- ECORE_DLIST_NODE(second)->previous = ECORE_DLIST_NODE(l);
- l->next = second;
- }
- else
- l->next = NULL;
-
- return list;
-}
-
-/*
- * @brief Initialize a node to sane starting values
- * @param node: the node to initialize
- * @return Returns TRUE on success, FALSE on errors
- */
-EAPI int
-ecore_dlist_node_init(Ecore_DList_Node *node)
-{
- int ret;
-
- CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
-
- ret = ecore_list_node_init(ECORE_LIST_NODE(node));
- if (ret)
- node->previous = NULL;
-
- return ret;
-}
-
-/*
- * @brief Allocate and initialize a new list node
- * @return Returns NULL on error, new list node on success
- */
-EAPI Ecore_DList_Node *
-ecore_dlist_node_new()
-{
- Ecore_DList_Node *new_node;
-
- new_node = malloc(sizeof(Ecore_DList_Node));
-
- if (!new_node)
- return NULL;
-
- if (!ecore_dlist_node_init(new_node))
- {
- FREE(new_node);
- return NULL;
- }
-
- return new_node;
-}
-
-/*
- * @brief Call the data's free callback function, then free the node
- * @param node: the node to be freed
- * @param free_func: the callback function to execute on the data
- * @return Returns TRUE on success, FALSE on error
- */
-EAPI int
-ecore_dlist_node_destroy(Ecore_DList_Node *node, Ecore_Free_Cb free_func)
-{
- CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
-
- return ecore_list_node_destroy(ECORE_LIST_NODE(node), free_func);
-}
diff --git a/src/tests/eina/ecore_sheap.c b/src/tests/eina/ecore_sheap.c
deleted file mode 100644
index 448be9791..000000000
--- a/src/tests/eina/ecore_sheap.c
+++ /dev/null
@@ -1,467 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "Ecore_Data.h"
-
-#define HEAP_INCREMENT 4096
-
-#define PARENT(i) (i / 2)
-#define LEFT(i) (2 * i)
-#define RIGHT(i) (2 * i + 1)
-
-static void _ecore_sheap_heapify(Ecore_Sheap *heap, int i);
-static void _ecore_sheap_update_data(Ecore_Sheap *heap);
-
-/**
- * Allocate and initialize a new binary heap
- * @param compare The function for comparing keys, NULL for direct comparison
- * @param size The number of elements to allow in the heap
- * @return A pointer to the newly allocated binary heap on success, NULL on
- * failure.
- */
-EAPI Ecore_Sheap *
-ecore_sheap_new(Ecore_Compare_Cb compare, int size)
-{
- Ecore_Sheap *heap = NULL;
-
- heap = (Ecore_Sheap *)malloc(sizeof(Ecore_Sheap));
- if (!heap)
- return NULL;
-
- memset(heap, 0, sizeof(Ecore_Sheap));
-
- if (!ecore_sheap_init(heap, compare, size))
- {
- FREE(heap);
- return NULL;
- }
-
- return heap;
-}
-
-/**
- * Initialize a binary heap to default values
- * @param heap The heap to initialize
- * @param compare The function for comparing keys, NULL for direct comparison
- * @param size The number of elements to allow in the heap
- * @return TRUE on success, FALSE on failure
- */
-EAPI int
-ecore_sheap_init(Ecore_Sheap *heap, Ecore_Compare_Cb compare, int size)
-{
- CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
-
- heap->space = size;
- if (!compare)
- heap->compare = ecore_direct_compare;
- else
- heap->compare = compare;
-
- heap->order = ECORE_SORT_MIN;
-
- heap->data = (void **)malloc(heap->space * sizeof(void *));
- if (!heap->data)
- return FALSE;
-
- memset(heap->data, 0, heap->space * sizeof(void *));
-
- return TRUE;
-}
-
-/**
- * Free up the memory used by the heap
- *
- * Frees the memory used by @a heap, calls the destroy function on each data
- * item if necessary.
- *
- * @param heap The heap to be freed
- */
-EAPI void
-ecore_sheap_destroy(Ecore_Sheap *heap)
-{
- int i;
-
- CHECK_PARAM_POINTER("heap", heap);
-
- /*
- * Free data in heap
- */
- if (heap->free_func)
- for (i = 0; i < heap->size; i++)
- heap->free_func(heap->data[i]);
-
- FREE(heap->data);
-
- FREE(heap);
-}
-
-/**
- * Set the function for freeing data.
- * @param heap The heap that will use this function when nodes are
- * destroyed.
- * @param free_func The function that will free the key data.
- * @return @c TRUE on successful set, @c FALSE otherwise.
- */
-EAPI int
-ecore_sheap_free_cb_set(Ecore_Sheap *heap, Ecore_Free_Cb free_func)
-{
- CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
-
- heap->free_func = free_func;
-
- return TRUE;
-}
-
-/**
- * Insert new data into the heap.
- * @param heap The heap to insert @a data.
- * @param data The data to add to @a heap.
- * @return TRUE on success, NULL on failure. Increases the size of the heap if
- * it becomes larger than available space.
- */
-EAPI int
-ecore_sheap_insert(Ecore_Sheap *heap, void *data)
-{
- int i;
- void *temp;
- int parent;
- int position;
-
- CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
-
- /*
- * Increase the size of the allocated data area if there isn't enough
- * space available to add this data
- */
- if (heap->size >= heap->space)
- return FALSE;
-
- heap->sorted = FALSE;
-
- /*
- * Place the data at the end of the heap initially. Then determine the
- * parent and position in the array of it's parent.
- */
- heap->data[heap->size] = data;
- position = heap->size;
- heap->size++;
- i = heap->size;
- parent = PARENT(i) - 1;
-
- /*
- * Check the order of the heap to decide where to place the inserted
- * data. The loop is placed inside the if statement to reduce the
- * number of branching decisions that must be predicted.
- */
- if (heap->order == ECORE_SORT_MIN)
- while ((position > 0) && heap->compare(heap->data[parent],
- heap->data[position]) > 0)
- {
-
- /*
- * Swap the data with it's parents to move it up in
- * the heap.
- */
- temp = heap->data[position];
- heap->data[position] = heap->data[parent];
- heap->data[parent] = temp;
-
- /*
- * Now determine the new position for the next
- * iteration of the loop, as well as it's parents
- * position.
- */
- i = PARENT(i);
- position = i - 1;
- parent = PARENT(i) - 1;
- }
- else
- while ((position > 0) && heap->compare(heap->data[parent],
- heap->data[position]) < 0)
- {
-
- /*
- * Swap the data with it's parents to move it up in
- * the heap.
- */
- temp = heap->data[position];
- heap->data[position] = heap->data[PARENT(i) - 1];
- heap->data[PARENT(i) - 1] = temp;
-
- /*
- * Now determine the new position for the next
- * iteration of the loop, as well as it's parents
- * position.
- */
- i = PARENT(i);
- position = i - 1;
- parent = PARENT(i) - 1;
- }
-
- return TRUE;
-}
-
-/**
- * Extract the item at the top of the heap
- * @param heap The heap to remove the top item
- * @return The top item of the heap on success, NULL on failure.
- * @note The extract function maintains the heap properties after the
- * extract.
- */
-EAPI void *
-ecore_sheap_extract(Ecore_Sheap *heap)
-{
- void *extreme;
-
- if (heap->size < 1)
- return NULL;
-
- heap->sorted = FALSE;
-
- extreme = heap->data[0];
- heap->size--;
- heap->data[0] = heap->data[heap->size];
-
- _ecore_sheap_heapify(heap, 1);
-
- return extreme;
-}
-
-/**
- * Examine the item at the top of the heap
- * @param heap The heap to examine the top item
- * @return The top item of the heap on success, NULL on failure.
- * @note The function does not alter the heap.
- */
-EAPI void *
-ecore_sheap_extreme(Ecore_Sheap *heap)
-{
- if (heap->size < 1)
- return NULL;
-
- return heap->data[0];
-}
-
-/**
- * Change the value of the specified item in the heap
- * @param heap The heap to search for the item to change
- * @param item The item in the heap to change
- * @param newval The new value assigned to the item in the heap
- * @return TRUE on success, FALSE on failure.
- * @note The heap does not free the old data since it must be passed
- * in, so the caller can perform the free if desired.
- */
-EAPI int
-ecore_sheap_change(Ecore_Sheap *heap, void *item, void *newval)
-{
- int i;
-
- CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
-
- for (i = 0; i < heap->size && heap->compare(heap->data[i], item); i++) ;
-
- if (i < heap->size)
- heap->data[i] = newval;
- else
- return FALSE;
-
- /*
- * FIXME: This is not the correct procedure when a change occurs.
- */
- _ecore_sheap_heapify(heap, 1);
-
- return TRUE;
-}
-
-/**
- * Change the comparison function for the heap
- * @param heap The heap to change comparison function
- * @param compare The new function for comparing nodes
- * @return TRUE on success, FALSE on failure.
- *
- * The comparison function is changed to @compare and the heap is heapified
- * by the new comparison.
- */
-EAPI int
-ecore_sheap_compare_set(Ecore_Sheap *heap, Ecore_Compare_Cb compare)
-{
- CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
-
- if (!compare)
- heap->compare = ecore_direct_compare;
- else
- heap->compare = compare;
-
- _ecore_sheap_update_data(heap);
-
- return TRUE;
-}
-
-/**
- * Change the order of the heap
- * @param heap The heap to change the order
- * @param order The new order of the heap
- *
- * Changes the heap order of @heap and re-heapifies the data to this new
- * order. The default order is a min heap.
- */
-EAPI void
-ecore_sheap_order_set(Ecore_Sheap *heap, char order)
-{
- CHECK_PARAM_POINTER("heap", heap);
-
- heap->order = order;
-
- _ecore_sheap_update_data(heap);
-}
-
-/**
- * Sort the data in the heap
- * @param heap The heap to be sorted
- *
- * Sorts the data in the heap into the order that is used for the heap's
- * data.
- */
-EAPI void
-ecore_sheap_sort(Ecore_Sheap *heap)
-{
- int i = 0;
- void **new_data;
-
- CHECK_PARAM_POINTER("heap", heap);
-
- new_data = (void **)malloc(heap->size * sizeof(void *));
-
- /*
- * Extract the heap and insert into the new data array in order.
- */
- while (heap->size > 0)
- new_data[i++] = ecore_sheap_extract(heap);
-
- /*
- * Free the old data array and update the heap with the new data, also
- * mark as sorted.
- */
- FREE(heap->data);
- heap->data = new_data;
- heap->size = i;
- heap->sorted = TRUE;
-}
-
-/*
- * Access the item at the ith position in the heap
- * @param heap The heap to access the internal data
- * @param i The index of the data within the heap
- * @return The data located at the ith position within @heap on success,
- * NULL on failure.
- * @note The data is guaranteed to be in sorted order.
- */
-EAPI inline void *
-ecore_sheap_item(Ecore_Sheap *heap, int i)
-{
- if (i >= heap->size)
- return NULL;
-
- /*
- * Make sure the data is sorted so we return the correct value.
- */
- if (!heap->sorted)
- ecore_sheap_sort(heap);
-
- return heap->data[i];
-}
-
-/*
- * Regain the heap properties starting at position i
- * @param heap The heap to regain heap properties
- * @param i The position to start heapifying
- */
-static void
-_ecore_sheap_heapify(Ecore_Sheap *heap, int i)
-{
- int extreme;
- int left = LEFT(i);
- int right = RIGHT(i);
-
- if (heap->order == ECORE_SORT_MIN)
- {
- if (left <= heap->size && heap->compare(heap->data[left - 1],
- heap->data[i - 1]) < 0)
- extreme = left;
- else
- extreme = i;
-
- if (right <= heap->size && heap->compare(heap->data[right - 1],
- heap->data[extreme - 1]) < 0)
- extreme = right;
- }
- else
- {
- if (left <= heap->size && heap->compare(heap->data[left - 1],
- heap->data[i - 1]) > 0)
- extreme = left;
- else
- extreme = i;
-
- if (right <= heap->size && heap->compare(heap->data[right - 1],
- heap->data[extreme - 1]) > 0)
- extreme = right;
- }
-
- /*
- * If the data needs to be swapped down the heap, recurse on
- * heapifying it's new placement.
- */
- if (extreme != i)
- {
- void *temp;
-
- temp = heap->data[extreme - 1];
- heap->data[extreme - 1] = heap->data[i - 1];
- heap->data[i - 1] = temp;
-
- _ecore_sheap_heapify(heap, extreme);
- }
-}
-
-static void
-_ecore_sheap_update_data(Ecore_Sheap *heap)
-{
- int i, old_size;
- void **data;
-
- /*
- * Track the old values from the heap
- */
- old_size = heap->size;
- data = heap->data;
-
- heap->size = 0;
- heap->data = malloc(heap->space * sizeof(void *));
-
- for (i = 0; i < old_size; i++)
- ecore_sheap_insert(heap, data[i]);
-
- FREE(data);
-}
-
-int
-ecore_direct_compare(const void *key1, const void *key2)
-{
- unsigned long k1, k2;
-
- k1 = (unsigned long)key1;
- k2 = (unsigned long)key2;
-
- if (k1 > k2)
- return 1;
-
- if (k1 < k2)
- return -1;
-
- return 0;
-}
diff --git a/src/tests/eina/ecore_strings.c b/src/tests/eina/ecore_strings.c
deleted file mode 100644
index d76e4c5f5..000000000
--- a/src/tests/eina/ecore_strings.c
+++ /dev/null
@@ -1,160 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-
-#include "Ecore_Data.h"
-
-static void ecore_string_free_cb(void *data);
-
-static Ecore_Hash *ecore_strings = NULL;
-static int ecore_string_init_count = 0;
-
-/**
- * @defgroup Ecore_String_Group String Instance Functions
- *
- * These functions allow you to store one copy of a string, and use it
- * throughout your program.
- *
- * This is a method to reduce the number of duplicated strings kept in
- * memory. It's pretty common for the same strings to be dynamically
- * allocated repeatedly between applications and libraries, especially in
- * circumstances where you could have multiple copies of a structure that
- * allocates the string. So rather than duplicating and freeing these
- * strings, you request a read-only pointer to an existing string and
- * only incur the overhead of a hash lookup.
- *
- * It sounds like micro-optimizing, but profiling has shown this can have
- * a significant impact as you scale the number of copies up. It improves
- * string creation/destruction speed, reduces memory use and decreases
- * memory fragmentation, so a win all-around.
- */
-
-/**
- * Initialize the ecore string internal structure.
- * @return Zero on failure, non-zero on successful initialization.
- */
-EAPI int
-ecore_string_init()
-{
- /*
- * No strings have been loaded at this point, so create the hash
- * table for storing string info for later.
- */
- if (!ecore_string_init_count)
- {
- ecore_strings = ecore_hash_new(ecore_str_hash, ecore_str_compare);
- if (!ecore_strings)
- return 0;
-
- ecore_hash_free_value_cb_set(ecore_strings, ecore_string_free_cb);
- }
-
- ecore_string_init_count++;
-
- return 1;
-}
-
-/**
- * Retrieves an instance of a string for use in an ecore program.
- * @param string The string to retrieve an instance of.
- * @return A pointer to an instance of the string on success.
- * @c NULL on failure.
- * @ingroup Ecore_String_Group
- */
-EAPI const char *
-ecore_string_instance(const char *string)
-{
- Ecore_String *str;
-
- CHECK_PARAM_POINTER_RETURN("string", string, NULL);
-
- /*
- * Check for a previous instance of the string, if not found, create
- * it.
- */
- str = ecore_hash_get(ecore_strings, string);
- if (!str)
- {
- int length;
-
- /*
- * Allocate and initialize a new string reference.
- */
- length = strlen(string) + 1;
-
- str =
- (Ecore_String *)malloc(sizeof(Ecore_String) + length * sizeof(char));
-
- str->string = (char *)(str + 1);
- str->references = 0;
-
- memcpy(str->string, string, length);
-
- ecore_hash_set(ecore_strings, str->string, str);
- }
-
- str->references++;
-
- return str->string;
-}
-
-/**
- * Notes that the given string has lost an instance.
- *
- * It will free the string if no other instances are left.
- *
- * @param string The given string.
- * @ingroup Ecore_String_Group
- */
-EAPI void
-ecore_string_release(const char *string)
-{
- Ecore_String *str;
-
- CHECK_PARAM_POINTER("string", string);
-
- str = ecore_hash_get(ecore_strings, (char *)string);
- if (!str)
- return;
-
- str->references--;
- if (str->references < 1)
- {
- ecore_hash_remove(ecore_strings, (char *)string);
- FREE(str);
- }
-}
-
-EAPI void
-ecore_string_hash_dump_graph(void)
-{
- ecore_hash_dump_graph(ecore_strings);
-}
-
-EAPI void
-ecore_string_hash_dump_stats(void)
-{
- ecore_hash_dump_stats(ecore_strings);
-}
-
-/**
- * Shutdown the ecore string internal structures
- */
-EAPI void
-ecore_string_shutdown()
-{
- --ecore_string_init_count;
- if (!ecore_string_init_count)
- {
- ecore_hash_destroy(ecore_strings);
- ecore_strings = NULL;
- }
-}
-
-static void
-ecore_string_free_cb(void *data)
-{
- Ecore_String *str;
-
- str = data;
- FREE(str);
-}
diff --git a/src/tests/eina/eina_bench.c b/src/tests/eina/eina_bench.c
deleted file mode 100644
index 03aaaf941..000000000
--- a/src/tests/eina/eina_bench.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <limits.h>
-
-#include "eina_bench.h"
-#include "Eina.h"
-
-typedef struct _Eina_Benchmark_Case Eina_Benchmark_Case;
-struct _Eina_Benchmark_Case
-{
- const char *bench_case;
- void (*build)(Eina_Benchmark *bench);
-};
-
-static const Eina_Benchmark_Case etc[] = {
- { "Hash", eina_bench_hash },
- /* { "Array vs List vs Inlist", eina_bench_array }, */
- /* { "Stringshare", eina_bench_stringshare }, */
- /* { "Convert", eina_bench_convert }, */
- /* { "Sort", eina_bench_sort }, */
- /* { "Mempool", eina_bench_mempool }, */
- /* { "Rectangle_Pool", eina_bench_rectangle_pool }, */
- // { "Render Loop", eina_bench_quadtree },
- { NULL, NULL }
-};
-
-/* FIXME this is a copy from eina_test_mempool
- * we should remove the duplication
- */
-static Eina_Array *_modules;
-static void _mempool_init(void)
-{
- eina_init();
- /* force modules to be loaded in case they are not installed */
- _modules = eina_module_list_get(NULL,
- PACKAGE_BUILD_DIR "/src/modules",
- EINA_TRUE,
- NULL,
- NULL);
- eina_module_list_load(_modules);
-}
-
-static void _mempool_shutdown(void)
-{
- eina_module_list_free(_modules);
- /* TODO delete the list */
- eina_shutdown();
-}
-
-int
-main(int argc, char **argv)
-{
- Eina_Benchmark *test;
- unsigned int i;
-
- if (argc != 2)
- return -1;
-
- _mempool_init();
-
- eina_init();
-
- for (i = 0; etc[i].bench_case; ++i)
- {
- test = eina_benchmark_new(etc[i].bench_case, argv[1]);
- if (!test)
- continue;
-
- etc[i].build(test);
-
- eina_benchmark_run(test);
-
- eina_benchmark_free(test);
- }
-
- eina_bench_e17();
-
- eina_shutdown();
-
- _mempool_shutdown();
- return 0;
-}
diff --git a/src/tests/eina/eina_bench.h b/src/tests/eina/eina_bench.h
deleted file mode 100644
index d575822b5..000000000
--- a/src/tests/eina/eina_bench.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef EINA_BENCH_H_
-#define EINA_BENCH_H_
-
-#include "eina_benchmark.h"
-
-void eina_bench_hash(Eina_Benchmark *bench);
-void eina_bench_array(Eina_Benchmark *bench);
-void eina_bench_stringshare(Eina_Benchmark *bench);
-void eina_bench_convert(Eina_Benchmark *bench);
-void eina_bench_sort(Eina_Benchmark *bench);
-void eina_bench_mempool(Eina_Benchmark *bench);
-void eina_bench_rectangle_pool(Eina_Benchmark *bench);
-void eina_bench_quadtree(Eina_Benchmark *bench);
-
-/* Specific benchmark. */
-void eina_bench_e17(void);
-
-#endif
diff --git a/src/tests/eina/eina_bench_array.c b/src/tests/eina/eina_bench_array.c
deleted file mode 100644
index 425eddd94..000000000
--- a/src/tests/eina/eina_bench_array.c
+++ /dev/null
@@ -1,699 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-
-#ifdef EINA_BENCH_HAVE_GLIB
-# include <glib.h>
-#endif
-
-#include "Evas_Data.h"
-#include "Ecore_Data.h"
-
-#include "eina_bench.h"
-#include "eina_array.h"
-#include "eina_list.h"
-#include "eina_inlist.h"
-#include "eina_main.h"
-
-typedef struct _Eina_Bench_Object Eina_Bench_Object;
-struct _Eina_Bench_Object
-{
- EINA_INLIST;
-
- void *somewhere;
- int data;
- Eina_Bool keep;
-};
-
-static Eina_Bool keep(void *data, __UNUSED__ void *gdata)
-{
- Eina_Bench_Object *bo = data;
-
- if (bo->keep == EINA_TRUE)
- return EINA_TRUE;
-
- free(bo);
- return EINA_FALSE;
-}
-
-static void
-eina_bench_array_4evas_render_inline(int request)
-{
- Eina_Array *array;
- Eina_Bench_Object *ebo;
- Eina_Array_Iterator it;
- unsigned int i;
- unsigned int j;
-
- srand(time(NULL));
-
- eina_init();
-
- array = eina_array_new(64);
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < (unsigned int)request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- eina_array_push(array, ebo);
- }
-
- if (i == 500)
- {
- EINA_ARRAY_ITER_NEXT(array, j, ebo, it)
- free(ebo);
-
- eina_array_clean(array);
- }
- else if (i % 30 == 0)
- eina_array_remove(array, keep, NULL);
-
- EINA_ARRAY_ITER_NEXT(array, j, ebo, it)
- ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
- }
-
- EINA_ARRAY_ITER_NEXT(array, j, ebo, it)
- free(ebo);
-
- eina_array_free(array);
-
- eina_shutdown();
-}
-
-static Eina_Bool
-eina_iterator_ebo_free(__UNUSED__ const Eina_Array *array,
- Eina_Bench_Object *ebo, __UNUSED__ void *fdata)
-{
- free(ebo);
- return EINA_TRUE;
-}
-
-static Eina_Bool
-eina_iterator_ebo_rand(__UNUSED__ const void *container,
- Eina_Bench_Object *ebo, __UNUSED__ void *fdata)
-{
- ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
- return EINA_TRUE;
-}
-
-static void
-eina_bench_array_4evas_render_iterator(int request)
-{
- Eina_Array *array;
- Eina_Bench_Object *ebo;
- Eina_Iterator *it;
- unsigned int i;
- unsigned int j;
-
- srand(time(NULL));
-
- eina_init();
-
- array = eina_array_new(64);
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < (unsigned int)request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- eina_array_push(array, ebo);
- }
-
- if (i == 500)
- {
- it = eina_array_iterator_new(array);
- eina_iterator_foreach(it, EINA_EACH_CB(eina_iterator_ebo_free), NULL);
- eina_iterator_free(it);
-
- eina_array_clean(array);
- }
- else if (i % 30 == 0)
- eina_array_remove(array, keep, NULL);
-
- it = eina_array_iterator_new(array);
- eina_iterator_foreach(it, EINA_EACH_CB(eina_iterator_ebo_rand), NULL);
- eina_iterator_free(it);
- }
-
- it = eina_array_iterator_new(array);
- eina_iterator_foreach(it, EINA_EACH_CB(eina_iterator_ebo_free), NULL);
- eina_iterator_free(it);
-
- eina_array_free(array);
-
- eina_shutdown();
-}
-
-static void
-eina_bench_list_4evas_render(int request)
-{
- Eina_List *list = NULL;
- Eina_List *tmp;
- Eina_Bench_Object *ebo;
- int i;
- int j;
-
- eina_init();
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- list = eina_list_prepend(list, ebo);
- }
-
- if (i == 500)
- while (list)
- {
- free(eina_list_data_get(list));
- list = eina_list_remove_list(list, list);
- }
- else if (i % 30 == 0)
- {
- tmp = list;
- while (tmp)
- {
- Eina_List *reminder = tmp;
-
- ebo = eina_list_data_get(reminder);
- tmp = eina_list_next(tmp);
-
- if (ebo->keep == EINA_FALSE)
- {
- list = eina_list_remove_list(list, reminder);
- free(ebo);
- }
- }
- }
-
- for (tmp = list; tmp; tmp = eina_list_next(tmp))
- {
- ebo = eina_list_data_get(tmp);
-
- ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
- }
- }
-
- while (list)
- {
- free(eina_list_data_get(list));
- list = eina_list_remove_list(list, list);
- }
-
- eina_shutdown();
-}
-
-static void
-eina_bench_list_4evas_render_iterator(int request)
-{
- Eina_List *list = NULL;
- Eina_List *tmp;
- Eina_Bench_Object *ebo;
- Eina_Iterator *it;
- int i;
- int j;
-
- eina_init();
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- list = eina_list_prepend(list, ebo);
- }
-
- if (i == 500)
- while (list)
- {
- free(eina_list_data_get(list));
- list = eina_list_remove_list(list, list);
- }
- else if (i % 30 == 0)
- {
- tmp = list;
- while (tmp)
- {
- Eina_List *reminder = tmp;
-
- ebo = eina_list_data_get(reminder);
- tmp = eina_list_next(tmp);
-
- if (ebo->keep == EINA_FALSE)
- {
- list = eina_list_remove_list(list, reminder);
- free(ebo);
- }
- }
- }
-
- it = eina_list_iterator_new(list);
- eina_iterator_foreach(it, EINA_EACH_CB(eina_iterator_ebo_rand), NULL);
- eina_iterator_free(it);
- }
-
- while (list)
- {
- free(eina_list_data_get(list));
- list = eina_list_remove_list(list, list);
- }
-
- eina_shutdown();
-}
-
-static void
-eina_bench_inlist_4evas_render(int request)
-{
- Eina_Inlist *head = NULL;
- Eina_Inlist *tmp;
- Eina_Bench_Object *ebo;
- int i;
- int j;
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- head = eina_inlist_prepend(head, EINA_INLIST_GET(ebo));
- }
-
- if (i == 500)
- while (head)
- {
- tmp = head;
- head = head->next;
- free(tmp);
- }
- else if (i % 30 == 0)
- {
- tmp = head;
- while(tmp)
- {
- ebo = (Eina_Bench_Object *)tmp;
-
- tmp = tmp->next;
- if (ebo->keep == EINA_FALSE)
- {
- head = eina_inlist_remove(head, EINA_INLIST_GET(ebo));
- free(ebo);
- }
- }
- }
-
- EINA_INLIST_FOREACH(head, ebo)
- ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
- }
-
- while (head)
- {
- tmp = head;
- head = head->next;
- free(tmp);
- }
-}
-
-static void
-eina_bench_inlist_4evas_render_iterator(int request)
-{
- Eina_Inlist *head = NULL;
- Eina_Inlist *tmp;
- Eina_Bench_Object *ebo;
- Eina_Iterator *it;
- int i;
- int j;
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- head = eina_inlist_prepend(head, EINA_INLIST_GET(ebo));
- }
-
- if (i == 500)
- while (head)
- {
- tmp = head;
- head = head->next;
- free(tmp);
- }
- else if (i % 30 == 0)
- {
- tmp = head;
- while(tmp)
- {
- ebo = (Eina_Bench_Object *)tmp;
-
- tmp = tmp->next;
- if (ebo->keep == EINA_FALSE)
- {
- head = eina_inlist_remove(head, EINA_INLIST_GET(ebo));
- free(ebo);
- }
- }
- }
-
- it = eina_inlist_iterator_new(head);
- eina_iterator_foreach(it, EINA_EACH_CB(eina_iterator_ebo_rand), NULL);
- eina_iterator_free(it);
- }
-
- while (head)
- {
- tmp = head;
- head = head->next;
- free(tmp);
- }
-}
-
-#ifdef EINA_BENCH_HAVE_GLIB
-static void
-eina_bench_glist_4evas_render(int request)
-{
- GList *list = NULL;
- GList *tmp;
- Eina_Bench_Object *ebo;
- int i;
- int j;
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- list = g_list_prepend(list, ebo);
- }
-
- if (i == 500)
- while (list)
- {
- free(list->data);
- list = g_list_delete_link(list, list);
- }
- else if (i % 30 == 0)
- {
- tmp = list;
- while (tmp)
- {
- GList *reminder = tmp;
-
- ebo = reminder->data;
- tmp = g_list_next(tmp);
-
- if (ebo->keep == EINA_FALSE)
- {
- list = g_list_delete_link(list, reminder);
- free(ebo);
- }
- }
- }
-
- for (tmp = list; tmp; tmp = g_list_next(tmp))
- {
- ebo = tmp->data;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
- }
- }
-
- while (list)
- {
- free(list->data);
- list = g_list_delete_link(list, list);
- }
-}
-
-static void
-eina_bench_gptrarray_4evas_render(int request)
-{
- GPtrArray *array = NULL;
- Eina_Bench_Object *ebo;
- unsigned int j;
- int i;
-
- array = g_ptr_array_new();
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < (unsigned int)request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- g_ptr_array_add(array, ebo);
- }
-
- if (i == 500)
- {
- for (j = 0; j < array->len; ++j)
- free(g_ptr_array_index(array, j));
- g_ptr_array_remove_range(array, 0, array->len);
- }
- else if (i % 30 == 0)
- for (j = 0; j < array->len; )
- {
- ebo = g_ptr_array_index(array, j);
-
- if (ebo->keep == EINA_FALSE)
- free(g_ptr_array_remove_index_fast(array, j));
- else
- j++;
- }
-
- for (j = 0; j < array->len; ++j)
- {
- ebo = g_ptr_array_index(array, j);
-
- ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
- }
- }
-
- for (j = 0; j < array->len; ++j)
- free(g_ptr_array_index(array, j));
- g_ptr_array_free(array, TRUE);
-}
-#endif
-
-static void
-eina_bench_evas_list_4evas_render(int request)
-{
- Evas_List *list = NULL;
- Evas_List *tmp;
- Eina_Bench_Object *ebo;
- int i;
- int j;
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- list = evas_list_prepend(list, ebo);
- }
-
- if (i == 500)
- while (list)
- {
- free(evas_list_data(list));
- list = evas_list_remove_list(list, list);
- }
- else if (i % 30 == 0)
- {
- tmp = list;
- while (tmp)
- {
- Evas_List *reminder = tmp;
-
- ebo = evas_list_data(reminder);
- tmp = evas_list_next(tmp);
-
- if (ebo->keep == EINA_FALSE)
- {
- list = evas_list_remove_list(list, reminder);
- free(ebo);
- }
- }
- }
-
- for (tmp = list; tmp; tmp = evas_list_next(tmp))
- {
- ebo = evas_list_data(tmp);
-
- ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
- }
- }
-
- while (list)
- {
- free(evas_list_data(list));
- list = evas_list_remove_list(list, list);
- }
-}
-
-static void
-_eina_ecore_for_each_remove(void *value, void *user_data)
-{
- Eina_Bench_Object *ebo = value;
- Ecore_List *list = user_data;
-
- if (ebo->keep == EINA_FALSE)
- ecore_list_remove_destroy(list);
-}
-
-static void
-_eina_ecore_for_each_rand(void *value, __UNUSED__ void *user_data)
-{
- Eina_Bench_Object *ebo = value;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE;
-}
-
-static void
-eina_bench_ecore_list_4evas_render(int request)
-{
- Ecore_List *list = NULL;
- Eina_Bench_Object *ebo;
- int i;
- int j;
-
- list = ecore_list_new();
- ecore_list_free_cb_set(list, free);
-
- for (i = 0; i < 1000; ++i)
- {
- for (j = 0; j < request; ++j)
- {
- ebo = malloc(sizeof (Eina_Bench_Object));
- if (!ebo)
- continue;
-
- ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE;
-
- ecore_list_prepend(list, ebo);
- }
-
- if (i == 500)
- ecore_list_clear(list);
- else if (i % 30 == 0)
- ecore_list_for_each(list, _eina_ecore_for_each_remove, list);
-
- ecore_list_for_each(list, _eina_ecore_for_each_rand, list);
- }
-
- ecore_list_destroy(list);
-}
-
-void eina_bench_array(Eina_Benchmark *bench)
-{
- eina_benchmark_register(bench, "array-inline",
- EINA_BENCHMARK(
- eina_bench_array_4evas_render_inline), 200,
- 4000, 100);
- eina_benchmark_register(bench, "array-iterator",
- EINA_BENCHMARK(
- eina_bench_array_4evas_render_iterator), 200,
- 4000, 100);
- eina_benchmark_register(bench, "list",
- EINA_BENCHMARK(
- eina_bench_list_4evas_render), 200,
- 4000, 100);
- eina_benchmark_register(bench, "list-iterator",
- EINA_BENCHMARK(
- eina_bench_list_4evas_render_iterator), 200,
- 4000, 100);
- eina_benchmark_register(bench, "inlist",
- EINA_BENCHMARK(
- eina_bench_inlist_4evas_render), 200,
- 4000, 100);
- eina_benchmark_register(bench, "inlist-iterator",
- EINA_BENCHMARK(
- eina_bench_inlist_4evas_render_iterator), 200,
- 4000, 100);
-#ifdef EINA_BENCH_HAVE_GLIB
- eina_benchmark_register(bench, "glist",
- EINA_BENCHMARK(
- eina_bench_glist_4evas_render), 200,
- 4000, 100);
- eina_benchmark_register(bench, "gptrarray",
- EINA_BENCHMARK(
- eina_bench_gptrarray_4evas_render), 200,
- 4000, 100);
-#endif
- eina_benchmark_register(bench, "evas",
- EINA_BENCHMARK(
- eina_bench_evas_list_4evas_render), 200,
- 4000, 100);
- eina_benchmark_register(bench, "ecore",
- EINA_BENCHMARK(
- eina_bench_ecore_list_4evas_render), 200,
- 500, 100);
-}
-
diff --git a/src/tests/eina/eina_bench_convert.c b/src/tests/eina/eina_bench_convert.c
deleted file mode 100644
index aafe9ea3b..000000000
--- a/src/tests/eina/eina_bench_convert.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <math.h>
-
-#ifdef EINA_BENCH_HAVE_GLIB
-# include <glib.h>
-#endif
-
-#include "eina_bench.h"
-#include "eina_convert.h"
-
-static void
-eina_bench_convert_itoa_10(int request)
-{
- char tmp[128];
- int i;
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- eina_convert_itoa(rand(), tmp);
- }
-}
-
-static void
-eina_bench_convert_itoa_16(int request)
-{
- char tmp[128];
- int i;
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- eina_convert_xtoa(rand(), tmp);
- }
-}
-
-static void
-eina_bench_convert_snprintf_10(int request)
-{
- char tmp[128];
- int i;
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- snprintf(tmp, 128, "%i", rand());
- }
-}
-
-static void
-eina_bench_convert_snprintf_x(int request)
-{
- char tmp[128];
- int i;
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- snprintf(tmp, 128, "%x", rand());
- }
-}
-
-static void
-eina_bench_convert_snprintf_a(int request)
-{
- char tmp[128];
- double r;
- int i;
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- r = 10000 * (rand() / ((double)RAND_MAX + 1));
- snprintf(tmp, 128, "%a", r);
- sscanf(tmp, "%la", &r);
- }
-}
-
-static void
-eina_bench_convert_dtoa(int request)
-{
- char tmp[128];
- long long m;
- long e;
- double r;
- int i;
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- r = 10000 * (rand() / ((double)RAND_MAX + 1));
- eina_convert_dtoa(r, tmp);
- eina_convert_atod(tmp, 128, &m, &e);
- r = ldexp((double)m, e);
- }
-}
-
-#ifdef EINA_BENCH_HAVE_GLIB
-static void
-eina_bench_convert_gstrtod(int request)
-{
- char tmp[128];
- double r;
- int i;
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- r = 10000 * (rand() / ((double)RAND_MAX + 1));
- g_ascii_dtostr(tmp, 128, r);
- r = g_ascii_strtod(tmp, NULL);
- }
-}
-#endif
-
-void eina_bench_convert(Eina_Benchmark *bench)
-{
- eina_benchmark_register(bench, "itoa 10",
- EINA_BENCHMARK(
- eina_bench_convert_itoa_10), 1000, 200000,
- 500);
- eina_benchmark_register(bench, "itoa 16",
- EINA_BENCHMARK(
- eina_bench_convert_itoa_16), 1000, 200000,
- 500);
- eina_benchmark_register(bench, "snprintf 10",
- EINA_BENCHMARK(
- eina_bench_convert_snprintf_10), 1000, 200000,
- 500);
- eina_benchmark_register(bench, "snprintf 16",
- EINA_BENCHMARK(
- eina_bench_convert_snprintf_x), 1000, 200000,
- 500);
- eina_benchmark_register(bench, "snprintf a",
- EINA_BENCHMARK(
- eina_bench_convert_snprintf_a), 1000, 200000,
- 500);
- eina_benchmark_register(bench, "dtoa",
- EINA_BENCHMARK(
- eina_bench_convert_dtoa), 1000, 200000,
- 500);
-#ifdef EINA_BENCH_HAVE_GLIB
- eina_benchmark_register(bench, "gstrtod",
- EINA_BENCHMARK(
- eina_bench_convert_gstrtod), 1000, 200000,
- 500);
-#endif
-}
-
-
-
-
diff --git a/src/tests/eina/eina_bench_hash.c b/src/tests/eina/eina_bench_hash.c
deleted file mode 100644
index 0429097c7..000000000
--- a/src/tests/eina/eina_bench_hash.c
+++ /dev/null
@@ -1,547 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-
-#ifdef EINA_BENCH_HAVE_GLIB
-# include <glib.h>
-#endif
-
-#include "Evas_Data.h"
-#include "Ecore_Data.h"
-
-#include "eina_hash.h"
-#include "eina_array.h"
-#include "eina_bench.h"
-#include "eina_rbtree.h"
-#include "eina_convert.h"
-
-#ifdef CITYHASH_BENCH
-// Hash function for a byte array.
-uint64_t CityHash64(const char *buf, size_t len);
-
-static unsigned int
-_eina_string_key_length(const char *key)
-{
- if (!key)
- return 0;
-
- return (int)strlen(key) + 1;
-}
-
-static int
-_eina_string_key_cmp(const char *key1, __UNUSED__ int key1_length,
- const char *key2, __UNUSED__ int key2_length)
-{
- return strcmp(key1, key2);
-}
-#endif
-
-
-typedef struct _Eina_Bench_Rbtree Eina_Bench_Rbtree;
-struct _Eina_Bench_Rbtree
-{
- Eina_Rbtree node;
- char key[10];
- int value;
-};
-
-static Eina_Rbtree_Direction
-_eina_bench_rbtree_cmp(const Eina_Bench_Rbtree *left,
- const Eina_Bench_Rbtree *right,
- __UNUSED__ void *data)
-{
- if (!left)
- return EINA_RBTREE_RIGHT;
-
- if (!right)
- return EINA_RBTREE_LEFT;
-
- return strcmp(left->key,
- right->key) < 0 ? EINA_RBTREE_LEFT : EINA_RBTREE_RIGHT;
-}
-
-static inline int
-_eina_bench_rbtree_key(const Eina_Bench_Rbtree *node,
- const char *key,
- int length,
- __UNUSED__ void *data)
-{
- return strncmp(node->key, key, length);
-}
-
-static void
-_eina_bench_rbtree_free(Eina_Rbtree *node, __UNUSED__ void *data)
-{
- free(node);
-}
-
-static void
-eina_bench_lookup_rbtree(int request)
-{
- Eina_Rbtree *root = NULL;
- int i;
- int j;
-
- for (i = 0; i < request; ++i)
- {
- Eina_Bench_Rbtree *tmp;
-
- tmp = malloc(sizeof (Eina_Bench_Rbtree));
- if (!tmp)
- continue;
-
- tmp->value = i;
- eina_convert_itoa(i, tmp->key);
-
- root = eina_rbtree_inline_insert(root,
- &tmp->node,
- EINA_RBTREE_CMP_NODE_CB(
- _eina_bench_rbtree_cmp),
- NULL);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < request; ++i)
- {
- Eina_Rbtree *tmp;
- char tmp_key[10];
-
- eina_convert_itoa(rand() % request, tmp_key);
-
- tmp = eina_rbtree_inline_lookup(root,
- tmp_key,
- 10,
- EINA_RBTREE_CMP_KEY_CB(
- _eina_bench_rbtree_key),
- NULL);
- /* Suppress warnings as we really don't want to do anything. */
- (void) tmp;
- }
-
- eina_rbtree_delete(root, EINA_RBTREE_FREE_CB(_eina_bench_rbtree_free), NULL);
-}
-
-static void
-eina_bench_lookup_murmur(int request)
-{
- Eina_Hash *hash = NULL;
- int *tmp_val;
- unsigned int i;
- unsigned int j;
-
- hash = eina_hash_new(EINA_KEY_LENGTH(_eina_string_key_length),
- EINA_KEY_CMP(_eina_string_key_cmp),
- EINA_KEY_HASH(eina_hash_murmur3),
- free,
- 8);
-
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- tmp_val = malloc(sizeof (int));
-
- if (!tmp_val)
- continue;
-
- eina_convert_itoa(i, tmp_key);
- *tmp_val = i;
-
- eina_hash_add(hash, tmp_key, tmp_val);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- eina_convert_itoa(rand() % request, tmp_key);
- tmp_val = eina_hash_find(hash, tmp_key);
- }
-
- eina_hash_free(hash);
-}
-
-#ifdef CITYHASH_BENCH
-static void
-eina_bench_lookup_cityhash(int request)
-{
- Eina_Hash *hash = NULL;
- int *tmp_val;
- unsigned int i;
- unsigned int j;
-
- hash = eina_hash_new(EINA_KEY_LENGTH(_eina_string_key_length),
- EINA_KEY_CMP(_eina_string_key_cmp),
- EINA_KEY_HASH(CityHash64),
- free,
- 8);
-
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- tmp_val = malloc(sizeof (int));
-
- if (!tmp_val)
- continue;
-
- eina_convert_itoa(i, tmp_key);
- *tmp_val = i;
-
- eina_hash_add(hash, tmp_key, tmp_val);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- eina_convert_itoa(rand() % request, tmp_key);
- tmp_val = eina_hash_find(hash, tmp_key);
- }
-
- eina_hash_free(hash);
-}
-#endif
-
-static void
-eina_bench_lookup_superfast(int request)
-{
- Eina_Hash *hash = NULL;
- int *tmp_val;
- unsigned int i;
- unsigned int j;
-
- hash = eina_hash_string_superfast_new(free);
-
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- tmp_val = malloc(sizeof (int));
-
- if (!tmp_val)
- continue;
-
- eina_convert_itoa(i, tmp_key);
- *tmp_val = i;
-
- eina_hash_add(hash, tmp_key, tmp_val);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- eina_convert_itoa(rand() % request, tmp_key);
- tmp_val = eina_hash_find(hash, tmp_key);
- }
-
- eina_hash_free(hash);
-}
-
-static void
-eina_bench_lookup_djb2(int request)
-{
- Eina_Hash *hash = NULL;
- int *tmp_val;
- unsigned int i;
- unsigned int j;
-
- hash = eina_hash_string_djb2_new(free);
-
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- tmp_val = malloc(sizeof (int));
-
- if (!tmp_val)
- continue;
-
- eina_convert_itoa(i, tmp_key);
- *tmp_val = i;
-
- eina_hash_add(hash, tmp_key, tmp_val);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- eina_convert_itoa(rand() % request, tmp_key);
-
- tmp_val = eina_hash_find(hash, tmp_key);
- }
-
- eina_hash_free(hash);
-}
-
-typedef struct _Eina_Bench_DJB2 Eina_Bench_DJB2;
-struct _Eina_Bench_DJB2
-{
- char *key;
- int value;
-};
-
-static void
-eina_bench_lookup_djb2_inline(int request)
-{
- Eina_Hash *hash = NULL;
- Eina_Bench_DJB2 *elm;
- unsigned int i;
- unsigned int j;
-
- hash = eina_hash_string_djb2_new(free);
-
- for (i = 0; i < (unsigned int)request; ++i)
- {
- int length;
-
- elm = malloc(sizeof (Eina_Bench_DJB2) + 10);
- if (!elm)
- continue;
-
- elm->key = (char *)(elm + 1);
-
- length = eina_convert_itoa(i, elm->key) + 1;
- elm->value = i;
-
- eina_hash_direct_add_by_hash(hash, elm->key, length,
- eina_hash_djb2(elm->key, length), elm);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
- int length = 6;
-
- length = eina_convert_itoa(rand() % request, tmp_key) + 1;
-
- elm =
- eina_hash_find_by_hash(hash, tmp_key, length,
- eina_hash_djb2(tmp_key, length));
- }
-
- eina_hash_free(hash);
-}
-
-#ifdef EINA_BENCH_HAVE_GLIB
-typedef struct _Eina_Bench_Glib Eina_Bench_Glib;
-struct _Eina_Bench_Glib
-{
- char *key;
- int value;
-};
-
-static void
-eina_bench_lookup_ghash(int request)
-{
- Eina_Bench_Glib *elm;
- GHashTable *hash;
- unsigned int i;
- unsigned int j;
-
- hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, free);
-
- for (i = 0; i < (unsigned int)request; ++i)
- {
- elm = malloc(sizeof (Eina_Bench_Glib) + 10);
- if (!elm)
- continue;
-
- elm->key = (char *)(elm + 1);
-
- eina_convert_itoa(i, elm->key);
- elm->value = i;
-
- g_hash_table_insert(hash, elm->key, elm);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- eina_convert_itoa(rand() % request, tmp_key);
-
- elm = g_hash_table_lookup(hash, tmp_key);
- }
-
- g_hash_table_destroy(hash);
-}
-#endif
-
-static void
-eina_bench_lookup_evas(int request)
-{
- Evas_Hash *hash = NULL;
- Eina_Array *array = NULL;
- int *tmp_val;
- Eina_Array_Iterator it;
- unsigned int i;
- unsigned int j;
-
- array = eina_array_new(10000);
-
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- tmp_val = malloc(sizeof (int));
-
- if (!tmp_val)
- continue;
-
- eina_convert_itoa(i, tmp_key);
- *tmp_val = i;
-
- hash = evas_hash_add(hash, tmp_key, tmp_val);
-
- eina_array_push(array, tmp_val);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- eina_convert_itoa(rand() % request, tmp_key);
-
- tmp_val = evas_hash_find(hash, tmp_key);
- }
-
- evas_hash_free(hash);
-
- EINA_ARRAY_ITER_NEXT(array, i, tmp_val, it)
- free(tmp_val);
-
- eina_array_free(array);
-}
-
-typedef struct _Eina_Bench_Ecore Eina_Bench_Ecore;
-struct _Eina_Bench_Ecore
-{
- char *key;
- int value;
-};
-
-static void
-eina_bench_lookup_ecore(int request)
-{
- Ecore_Hash *hash = NULL;
- Eina_Bench_Ecore *elm;
- unsigned int i;
- unsigned int j;
-
- hash = ecore_hash_new(ecore_str_hash, ecore_str_compare);
-
- ecore_hash_free_key_cb_set(hash, NULL);
- ecore_hash_free_value_cb_set(hash, free);
-
- for (i = 0; i < (unsigned int)request; ++i)
- {
- elm = malloc(sizeof (Eina_Bench_Ecore) + 10);
- if (!elm)
- continue;
-
- elm->key = (char *)(elm + 1);
- eina_convert_itoa(i, elm->key);
- elm->value = i;
-
- ecore_hash_set(hash, elm->key, elm);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < (unsigned int)request; ++i)
- {
- char tmp_key[10];
-
- eina_convert_itoa(rand() % request, tmp_key);
-
- elm = ecore_hash_get(hash, tmp_key);
- }
-
- ecore_hash_destroy(hash);
-}
-
-void eina_bench_hash(Eina_Benchmark *bench)
-{
- eina_benchmark_register(bench, "superfast-lookup",
- EINA_BENCHMARK(
- eina_bench_lookup_superfast), 10, 10000, 10);
- eina_benchmark_register(bench, "djb2-lookup",
- EINA_BENCHMARK(
- eina_bench_lookup_djb2), 10, 10000, 10);
- eina_benchmark_register(bench, "djb2-lookup-inline",
- EINA_BENCHMARK(
- eina_bench_lookup_djb2_inline), 10, 10000, 10);
- eina_benchmark_register(bench, "murmur",
- EINA_BENCHMARK(
- eina_bench_lookup_murmur), 10, 10000, 10);
-#ifdef CITYHASH_BENCH
- eina_benchmark_register(bench, "cityhash",
- EINA_BENCHMARK(
- eina_bench_lookup_cityhash), 10, 10000, 10);
-#endif
- eina_benchmark_register(bench, "rbtree",
- EINA_BENCHMARK(
- eina_bench_lookup_rbtree), 10, 10000, 10);
-#ifdef EINA_BENCH_HAVE_GLIB
- eina_benchmark_register(bench, "ghash-lookup",
- EINA_BENCHMARK(
- eina_bench_lookup_ghash), 10, 10000, 10);
-#endif
- eina_benchmark_register(bench, "evas-lookup",
- EINA_BENCHMARK(
- eina_bench_lookup_evas), 10, 10000, 10);
- eina_benchmark_register(bench, "ecore-lookup",
- EINA_BENCHMARK(
- eina_bench_lookup_ecore), 10, 10000, 10);
-
-}
diff --git a/src/tests/eina/eina_bench_mempool.c b/src/tests/eina/eina_bench_mempool.c
deleted file mode 100644
index d7e2c62ad..000000000
--- a/src/tests/eina/eina_bench_mempool.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifdef EINA_BENCH_HAVE_GLIB
-# include <glib.h>
-#endif
-
-#include "eina_bench.h"
-#include "Eina.h"
-
-static void
-_eina_mempool_bench(Eina_Mempool *mp, int request)
-{
- Eina_Array *array;
- int i;
- int j;
-
- eina_init();
- array = eina_array_new(32);
-
- for (i = 0; i < 100; ++i)
- {
- for (j = 0; j < request; ++j)
- {
- eina_array_push(array, eina_mempool_malloc(mp, sizeof (int)));
- }
-
- for (j = 0; j < request; ++j)
- {
- eina_mempool_free(mp, eina_array_pop(array));
- }
- }
-
- eina_array_free(array);
- eina_shutdown();
-}
-
-#ifdef EINA_BUILD_CHAINED_POOL
-static void
-eina_mempool_chained_mempool(int request)
-{
- Eina_Mempool *mp;
-
- mp = eina_mempool_add("chained_mempool", "test", NULL, sizeof (int), 256);
- _eina_mempool_bench(mp, request);
- eina_mempool_del(mp);
-}
-#endif
-
-#ifdef EINA_BUILD_PASS_THROUGH
-static void
-eina_mempool_pass_through(int request)
-{
- Eina_Mempool *mp;
-
- mp = eina_mempool_add("pass_through", "test", NULL, sizeof (int), 8, 0);
- _eina_mempool_bench(mp, request);
- eina_mempool_del(mp);
-}
-#endif
-
-#ifdef EINA_BUILD_FIXED_BITMAP
-static void
-eina_mempool_fixed_bitmap(int request)
-{
- Eina_Mempool *mp;
-
- mp = eina_mempool_add("fixed_bitmap", "test", NULL, sizeof (int));
- _eina_mempool_bench(mp, request);
- eina_mempool_del(mp);
-}
-#endif
-
-#ifdef EINA_BUILD_EMEMOA_FIXED
-static void
-eina_mempool_ememoa_fixed(int request)
-{
- Eina_Mempool *mp;
-
- mp = eina_mempool_add("ememoa_fixed", "test", NULL, sizeof (int), 8, 0);
- _eina_mempool_bench(mp, request);
- eina_mempool_del(mp);
-}
-#endif
-
-#ifdef EINA_BUILD_EMEMOA_UNKNOWN
-static void
-eina_mempool_ememoa_unknown(int request)
-{
- Eina_Mempool *mp;
-
- mp = eina_mempool_add("ememoa_unknown",
- "test",
- NULL,
- 0,
- 2,
- sizeof (int),
- 8,
- sizeof (int) * 2,
- 8);
- _eina_mempool_bench(mp, request);
- eina_mempool_del(mp);
-}
-#endif
-
-#ifdef EINA_BENCH_HAVE_GLIB
-static void
-eina_mempool_glib(int request)
-{
- Eina_Array *array;
- int i;
- int j;
-
- eina_init();
- array = eina_array_new(32);
-
- for (i = 0; i < 100; ++i)
- {
- for (j = 0; j < request; ++j)
- {
- eina_array_push(array, g_slice_alloc(sizeof (int)));
- }
-
- for (j = 0; j < request; ++j)
- {
- g_slice_free1(sizeof (int), eina_array_pop(array));
- }
- }
-
- eina_array_free(array);
- eina_shutdown();
-
-}
-#endif
-
-void
-eina_bench_mempool(Eina_Benchmark *bench)
-{
-#ifdef EINA_BUILD_CHAINED_POOL
- eina_benchmark_register(bench, "chained mempool",
- EINA_BENCHMARK(
- eina_mempool_chained_mempool), 10, 10000, 10);
-#endif
-#ifdef EINA_BUILD_PASS_THROUGH
- eina_benchmark_register(bench, "pass through",
- EINA_BENCHMARK(
- eina_mempool_pass_through), 10, 10000, 10);
-#endif
-#ifdef EINA_BUILD_FIXED_BITMAP
- eina_benchmark_register(bench, "fixed bitmap",
- EINA_BENCHMARK(
- eina_mempool_fixed_bitmap), 10, 10000, 10);
-#endif
-#ifdef EINA_BUILD_EMEMOA_FIXED
- eina_benchmark_register(bench, "ememoa fixed",
- EINA_BENCHMARK(
- eina_mempool_ememoa_fixed), 10, 10000, 10);
-#endif
-#ifdef EINA_BUILD_EMEMOA_UNKNOWN
- eina_benchmark_register(bench, "ememoa unknown",
- EINA_BENCHMARK(
- eina_mempool_ememoa_unknown), 10, 10000, 10);
-#endif
-#ifdef EINA_BENCH_HAVE_GLIB
- eina_benchmark_register(bench, "gslice",
- EINA_BENCHMARK(
- eina_mempool_glib), 10, 10000, 10);
-#endif
-}
diff --git a/src/tests/eina/eina_bench_quad.c b/src/tests/eina/eina_bench_quad.c
deleted file mode 100644
index 8401fd476..000000000
--- a/src/tests/eina/eina_bench_quad.c
+++ /dev/null
@@ -1,320 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2010 Cedric BAIL
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#define WIDTH 720
-#define HEIGHT 576
-
-#include <stdlib.h>
-
-#include "eina_main.h"
-#include "eina_mempool.h"
-#include "eina_rectangle.h"
-#include "eina_quadtree.h"
-#include "eina_list.h"
-#include "eina_bench.h"
-
-static void
-eina_bench_render_loop(int request)
-{
- Eina_List *objects = NULL;
- Eina_Rectangle *r;
- int i;
- int j;
-
- eina_init();
-
- for (i = 0; i < request; ++i)
- objects = eina_list_append(objects,
- eina_rectangle_new((rand() * WIDTH) / RAND_MAX,
- (rand() *
- HEIGHT) / RAND_MAX,
- (rand() * WIDTH /
- 2) / RAND_MAX,
- (rand() * HEIGHT /
- 2) / RAND_MAX));
-
- for (j = 0; j < 100; ++j)
- {
- Eina_Rectangle *collide;
- Eina_List *collided = NULL;
- Eina_List *changed = NULL;
- Eina_List *l;
-
- /* Delete 25% of all objects */
- i = request * 25 / 100;
- for (; i > 0; --i)
- {
- eina_rectangle_free(eina_list_data_get(objects));
- objects = eina_list_remove_list(objects, objects);
- }
-
- /* Add them back */
- i = request * 25 / 100;
- for (; i > 0; --i)
- {
- r = eina_rectangle_new((rand() * WIDTH) / RAND_MAX,
- (rand() * HEIGHT) / RAND_MAX,
- (rand() * WIDTH / 3) / RAND_MAX,
- (rand() * HEIGHT / 3) / RAND_MAX);
- objects = eina_list_prepend(objects, r);
- changed = eina_list_append(changed, r);
- }
-
- /* Do one collide search */
- collide = eina_rectangle_new((rand() * WIDTH) / RAND_MAX,
- (rand() * HEIGHT) / RAND_MAX,
- (rand() * WIDTH / 4) / RAND_MAX,
- (rand() * HEIGHT / 4) / RAND_MAX);
- EINA_LIST_FOREACH(objects, l, r)
- if (eina_rectangles_intersect(r, collide))
- collided = eina_list_append(collided, r);
-
- collided = eina_list_free(collided);
- eina_rectangle_free(collide);
-
- /* Modify 50% of all objects */
- i = request * 50 / 100;
- for (; i > 0; --i)
- {
- r = eina_list_data_get(eina_list_last(objects));
- objects = eina_list_remove_list(objects, eina_list_last(objects));
-
- r->x = (rand() * WIDTH) / RAND_MAX;
- r->y = (rand() * HEIGHT) / RAND_MAX;
- r->w = (rand() * WIDTH / 3) / RAND_MAX;
- r->h = (rand() * HEIGHT / 3) / RAND_MAX;
-
- objects = eina_list_prepend(objects, r);
- changed = eina_list_append(changed, r);
- }
-
- /* Emulating the render loop by colliding all modified
- object with all intersecting object */
- EINA_LIST_FREE(changed, r)
- {
- EINA_LIST_FOREACH(objects, l, collide)
- if (r != collide && eina_rectangles_intersect(collide, r))
- collided = eina_list_append(collided, collide);
-
- collided = eina_list_append(collided, r);
- }
-
- /* Ok, we compute it, now it's done */
- collided = eina_list_free(collided);
- }
-
- EINA_LIST_FREE(objects, r)
- eina_rectangle_free(r);
-
- eina_shutdown();
-}
-
-typedef struct _Eina_Bench_Quad Eina_Bench_Quad;
-struct _Eina_Bench_Quad
-{
- Eina_Rectangle r;
- Eina_QuadTree_Item *item;
-};
-
-static Eina_Quad_Direction
-_eina_bench_quadtree_vertical(const void *object, size_t middle)
-{
- const Eina_Bench_Quad *b = object;
- size_t y;
-
- y = b->r.y < 0 ? 0 : (size_t)b->r.y;
-
- if (y + b->r.h < middle)
- return EINA_QUAD_LEFT;
-
- if (y > middle)
- return EINA_QUAD_RIGHT;
-
- return EINA_QUAD_BOTH;
-}
-
-static Eina_Quad_Direction
-_eina_bench_quadtree_horizontal(const void *object, size_t middle)
-{
- const Eina_Bench_Quad *b = object;
- size_t x;
-
- x = b->r.x < 0 ? 0 : (size_t)b->r.x;
-
- if (x + b->r.w < middle)
- return EINA_QUAD_LEFT;
-
- if (x > middle)
- return EINA_QUAD_RIGHT;
-
- return EINA_QUAD_BOTH;
-}
-
-static void
-eina_bench_quadtree_render_loop(int request)
-{
- Eina_List *objects = NULL;
- Eina_Inlist *possibility;
- Eina_Bench_Quad *b;
- Eina_QuadTree *q;
- Eina_Mempool *mp;
- int i;
- int j;
-
- eina_init();
-
- mp = eina_mempool_add("chained_mempool", "bench-quad", NULL,
- sizeof (Eina_Bench_Quad), 320);
-
- q = eina_quadtree_new(WIDTH, HEIGHT,
- _eina_bench_quadtree_vertical,
- _eina_bench_quadtree_horizontal);
-
- /* Create requested object */
- for (i = 0; i < request; ++i)
- {
- b = eina_mempool_malloc(mp, sizeof (Eina_Bench_Quad));
- EINA_RECTANGLE_SET(&b->r,
- (rand() * WIDTH) / RAND_MAX,
- (rand() * HEIGHT) / RAND_MAX,
- (rand() * WIDTH / 2) / RAND_MAX,
- (rand() * HEIGHT / 2) / RAND_MAX);
- b->item = eina_quadtree_add(q, b);
-
- objects = eina_list_append(objects, b);
- }
-
- for (j = 0; j < 100; ++j)
- {
- Eina_Bench_Quad *collide;
- Eina_List *changed = NULL;
- Eina_List *collided = NULL;
-
- /* Delete 25% of all objects */
- i = request * 25 / 100;
- for (; i > 0; --i)
- {
- b = eina_list_data_get(objects);
- eina_quadtree_del(b->item);
- eina_mempool_free(mp, b);
-
- objects = eina_list_remove_list(objects, objects);
- }
-
- /* Add them back */
- i = request * 25 / 100;
- for (; i > 0; --i)
- {
- b = eina_mempool_malloc(mp, sizeof (Eina_Bench_Quad));
- EINA_RECTANGLE_SET(&b->r,
- (rand() * WIDTH) / RAND_MAX,
- (rand() * HEIGHT) / RAND_MAX,
- (rand() * WIDTH / 3) / RAND_MAX,
- (rand() * HEIGHT / 3) / RAND_MAX);
- b->item = eina_quadtree_add(q, b);
-
- objects = eina_list_prepend(objects, b);
- changed = eina_list_append(changed, b);
- }
-
- /* Do one collide search */
- collide = eina_mempool_malloc(mp, sizeof (Eina_Bench_Quad));
- EINA_RECTANGLE_SET(&collide->r,
- (rand() * WIDTH) / RAND_MAX,
- (rand() * HEIGHT) / RAND_MAX,
- (rand() * WIDTH / 4) / RAND_MAX,
- (rand() * HEIGHT / 4) / RAND_MAX);
- possibility = eina_quadtree_collide(q,
- collide->r.x, collide->r.y,
- collide->r.w, collide->r.h);
- while (possibility)
- {
- b = eina_quadtree_object(possibility);
- possibility = possibility->next;
-
- if (eina_rectangles_intersect(&b->r, &collide->r))
- collided = eina_list_append(collided, b);
- }
-
- collided = eina_list_free(collided);
- eina_mempool_free(mp, collide);
-
- /* Modify 50% of all objects */
- i = request * 50 / 100;
- for (; i > 0; --i)
- {
- b = eina_list_data_get(eina_list_last(objects));
- objects = eina_list_remove_list(objects, eina_list_last(objects));
-
- b->r.x = (rand() * WIDTH) / RAND_MAX;
- b->r.y = (rand() * HEIGHT) / RAND_MAX;
- b->r.w = (rand() * WIDTH / 3) / RAND_MAX;
- b->r.h = (rand() * HEIGHT / 3) / RAND_MAX;
-
- eina_quadtree_change(b->item);
-
- objects = eina_list_prepend(objects, b);
- changed = eina_list_append(changed, b);
- }
-
- /* Emulating the render loop by colliding all modified
- object with all intersecting object */
- EINA_LIST_FREE(changed, b)
- {
- possibility = eina_quadtree_collide(q,
- b->r.x, b->r.y, b->r.w, b->r.h);
- while (possibility)
- {
- collide = eina_quadtree_object(possibility);
- possibility = possibility->next;
-
- if (collide != b &&
- eina_rectangles_intersect(&b->r, &collide->r))
- collided = eina_list_append(collided, collide);
- }
-
- collided = eina_list_append(collided, b);
- }
-
- /* Ok, we compute it, now it's done */
- collided = eina_list_free(collided);
- }
-
- EINA_LIST_FREE(objects, b)
- {
- eina_quadtree_del(b->item);
- eina_mempool_free(mp, b);
- }
-
- eina_mempool_del(mp);
-
- eina_quadtree_free(q);
-
- eina_shutdown();
-}
-
-void
-eina_bench_quadtree(Eina_Benchmark *bench)
-{
- eina_benchmark_register(bench, "collide-all",
- EINA_BENCHMARK(eina_bench_render_loop),
- 100, 1500, 50);
- eina_benchmark_register(bench, "collide-quad-tree",
- EINA_BENCHMARK(eina_bench_quadtree_render_loop),
- 100, 1500, 50);
-}
diff --git a/src/tests/eina/eina_bench_rectangle_pool.c b/src/tests/eina/eina_bench_rectangle_pool.c
deleted file mode 100644
index 96d4b1bf0..000000000
--- a/src/tests/eina/eina_bench_rectangle_pool.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include "eina_bench.h"
-#include "Eina.h"
-
-static void
-eina_bench_eina_rectangle_pool(int request)
-{
- Eina_Rectangle_Pool *pool;
- Eina_Rectangle *rect;
- Eina_List *list = NULL;
- int i;
-
- eina_init();
- eina_init();
-
- pool = eina_rectangle_pool_new(2048, 2048);
- if (!pool)
- return;
-
- for (i = 0; i < request; ++i)
- {
- rect = NULL;
-
- while (!rect)
- {
- rect = eina_rectangle_pool_request(pool, i & 0xFF, 256 - (i & 0xFF));
- if (!rect)
- {
- rect = eina_list_data_get(list);
- list = eina_list_remove_list(list, list);
- if (rect)
- eina_rectangle_pool_release(rect);
- }
- else
- list = eina_list_append(list, rect);
-
- if (!(i & 0xFF))
- break;
- }
- }
-
- eina_rectangle_pool_free(pool);
- eina_list_free(list);
-
- eina_shutdown();
-}
-
-void eina_bench_rectangle_pool(Eina_Benchmark *bench)
-{
- eina_benchmark_register(bench, "eina",
- EINA_BENCHMARK(
- eina_bench_eina_rectangle_pool), 10, 4000, 100);
-}
-
-
diff --git a/src/tests/eina/eina_bench_sort.c b/src/tests/eina/eina_bench_sort.c
deleted file mode 100644
index c3c9d9ff9..000000000
--- a/src/tests/eina/eina_bench_sort.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef EINA_BENCH_HAVE_GLIB
-# include <glib.h>
-#endif
-
-#include "Evas_Data.h"
-#include "Ecore_Data.h"
-
-#include "eina_bench.h"
-#include "eina_convert.h"
-#include "eina_list.h"
-#include "eina_main.h"
-
-static int
-_eina_cmp_str(const char *a, const char *b)
-{
- return strcmp(a, b);
-}
-
-static void
-eina_bench_sort_eina(int request)
-{
- Eina_List *list = NULL;
- int i;
-
- eina_init();
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- char buffer[10];
-
- eina_convert_itoa(rand() % request, buffer);
-
- list = eina_list_prepend(list, strdup(buffer));
- }
-
- list = eina_list_sort(list, -1, EINA_COMPARE_CB(_eina_cmp_str));
-
- while (list)
- {
- free(eina_list_data_get(list));
- list = eina_list_remove_list(list, list);
- }
-
- eina_shutdown();
-}
-
-static void
-eina_bench_sort_evas(int request)
-{
- Evas_List *list = NULL;
- int i;
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- char buffer[10];
-
- eina_convert_itoa(rand() % request, buffer);
-
- list = evas_list_prepend(list, strdup(buffer));
- }
-
- list = evas_list_sort(list, -1, (void *)_eina_cmp_str);
-
- while (list)
- {
- free(evas_list_data(list));
- list = evas_list_remove_list(list, list);
- }
-}
-
-#ifdef EINA_BENCH_HAVE_GLIB
-static void
-eina_bench_sort_glist(int request)
-{
- GList *list = NULL;
- int i;
-
- srand(time(NULL));
-
- for (i = 0; i < request; ++i)
- {
- char buffer[10];
-
- eina_convert_itoa(rand() % request, buffer);
-
- list = g_list_prepend(list, strdup(buffer));
- }
-
- list = g_list_sort(list, (void *)_eina_cmp_str);
-
- while (list)
- {
- free(list->data);
- list = g_list_delete_link(list, list);
- }
-}
-#endif
-
-static void
-eina_bench_sort_ecore_default(int request)
-{
- Ecore_List *list = NULL;
- int i;
-
- list = ecore_list_new();
- ecore_list_free_cb_set(list, free);
-
- for (i = 0; i < request; ++i)
- {
- char buffer[10];
-
- eina_convert_itoa(rand() % request, buffer);
-
- ecore_list_prepend(list, strdup(buffer));
- }
-
- ecore_list_sort(list, ECORE_COMPARE_CB(_eina_cmp_str), 0);
-
- ecore_list_destroy(list);
-}
-
-static void
-eina_bench_sort_ecore_merge(int request)
-{
- Ecore_List *list = NULL;
- int i;
-
- list = ecore_list_new();
- ecore_list_free_cb_set(list, free);
-
- for (i = 0; i < request; ++i)
- {
- char buffer[10];
-
- eina_convert_itoa(rand() % request, buffer);
-
- ecore_list_prepend(list, strdup(buffer));
- }
-
- ecore_list_mergesort(list, ECORE_COMPARE_CB(_eina_cmp_str), 0);
-
- ecore_list_destroy(list);
-}
-
-static void
-eina_bench_sort_ecore_heap(int request)
-{
- Ecore_List *list = NULL;
- int i;
-
- list = ecore_list_new();
- ecore_list_free_cb_set(list, free);
-
- for (i = 0; i < request; ++i)
- {
- char buffer[10];
-
- eina_convert_itoa(rand() % request, buffer);
-
- ecore_list_prepend(list, strdup(buffer));
- }
-
- ecore_list_heapsort(list, ECORE_COMPARE_CB(_eina_cmp_str), 0);
-
- ecore_list_destroy(list);
-}
-
-void eina_bench_sort(Eina_Benchmark *bench)
-{
- eina_benchmark_register(bench, "eina",
- EINA_BENCHMARK(
- eina_bench_sort_eina), 10, 10000, 100);
-#ifdef EINA_BENCH_HAVE_GLIB
- eina_benchmark_register(bench, "glist",
- EINA_BENCHMARK(
- eina_bench_sort_glist), 10, 10000, 100);
-#endif
- eina_benchmark_register(bench, "ecore",
- EINA_BENCHMARK(
- eina_bench_sort_ecore_default), 10, 10000, 100);
- eina_benchmark_register(bench, "ecore-merge",
- EINA_BENCHMARK(
- eina_bench_sort_ecore_merge), 10, 10000, 100);
- eina_benchmark_register(bench, "ecore-heap",
- EINA_BENCHMARK(
- eina_bench_sort_ecore_heap), 10, 10000, 100);
- eina_benchmark_register(bench, "evas",
- EINA_BENCHMARK(
- eina_bench_sort_evas), 10, 10000, 100);
-}
-
-
-
diff --git a/src/tests/eina/eina_bench_stringshare.c b/src/tests/eina/eina_bench_stringshare.c
deleted file mode 100644
index 22d18fa48..000000000
--- a/src/tests/eina/eina_bench_stringshare.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-
-#ifdef EINA_BENCH_HAVE_GLIB
-# include <glib.h>
-#endif
-
-#include "Evas_Data.h"
-#include "Ecore_Data.h"
-
-#include "eina_stringshare.h"
-#include "eina_bench.h"
-#include "eina_convert.h"
-#include "eina_main.h"
-
-static void
-eina_bench_stringshare_job(int request)
-{
- const char *tmp;
- unsigned int j;
- int i;
-
- eina_init();
-
- for (i = 0; i < request; ++i)
- {
- char build[64] = "string_";
-
- eina_convert_xtoa(i, build + 7);
- tmp = eina_stringshare_add(build);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < request; ++i)
- {
- char build[64] = "string_";
-
- eina_convert_xtoa(rand() % request, build + 7);
- tmp = eina_stringshare_add(build);
- }
-
- /* Suppress warnings as we really don't want to do anything. */
- (void) tmp;
- eina_shutdown();
-}
-
-#ifdef EINA_BENCH_HAVE_GLIB
-static void
-eina_bench_stringchunk_job(int request)
-{
- GStringChunk *chunk;
- unsigned int j;
- int i;
-
- chunk = g_string_chunk_new(4096);
-
- for (i = 0; i < request; ++i)
- {
- char build[64] = "string_";
-
- eina_convert_xtoa(i, build + 7);
- g_string_chunk_insert_const(chunk, build);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < request; ++i)
- {
- char build[64] = "string_";
-
- eina_convert_xtoa(rand() % request, build + 7);
- g_string_chunk_insert_const(chunk, build);
- }
-
- g_string_chunk_free(chunk);
-}
-#endif
-
-static void
-eina_bench_evas_job(int request)
-{
- const char *tmp;
- unsigned int j;
- int i;
-
- for (i = 0; i < request; ++i)
- {
- char build[64] = "string_";
-
- eina_convert_xtoa(i, build + 7);
- tmp = evas_stringshare_add(build);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < request; ++i)
- {
- char build[64] = "string_";
-
- eina_convert_xtoa(rand() % request, build + 7);
- tmp = evas_stringshare_add(build);
- }
-
- /* Suppress warnings as we really don't want to do anything. */
- (void) tmp;
-}
-
-static void
-eina_bench_ecore_job(int request)
-{
- const char *tmp;
- unsigned int j;
- int i;
-
- ecore_string_init();
-
- for (i = 0; i < request; ++i)
- {
- char build[64] = "string_";
-
- eina_convert_xtoa(i, build + 7);
- tmp = ecore_string_instance(build);
- }
-
- srand(time(NULL));
-
- for (j = 0; j < 200; ++j)
- for (i = 0; i < request; ++i)
- {
- char build[64] = "string_";
-
- eina_convert_xtoa(rand() % request, build + 7);
- tmp = ecore_string_instance(build);
- }
-
- /* Suppress warnings as we really don't want to do anything. */
- (void) tmp;
-
- ecore_string_shutdown();
-}
-
-void eina_bench_stringshare(Eina_Benchmark *bench)
-{
- eina_benchmark_register(bench, "stringshare",
- EINA_BENCHMARK(
- eina_bench_stringshare_job), 100, 20100, 500);
-#ifdef EINA_BENCH_HAVE_GLIB
- eina_benchmark_register(bench, "stringchunk (glib)",
- EINA_BENCHMARK(
- eina_bench_stringchunk_job), 100, 20100, 500);
-#endif
- eina_benchmark_register(bench, "stringshare (evas)",
- EINA_BENCHMARK(
- eina_bench_evas_job), 100, 20100, 500);
- eina_benchmark_register(bench, "stringshare (ecore)",
- EINA_BENCHMARK(
- eina_bench_ecore_job), 100, 20100, 500);
-}
diff --git a/src/tests/eina/eina_bench_stringshare_e17.c b/src/tests/eina/eina_bench_stringshare_e17.c
deleted file mode 100644
index 6ab0a807e..000000000
--- a/src/tests/eina/eina_bench_stringshare_e17.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/* EINA - EFL data type library
- * Copyright (C) 2008 Cedric Bail
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library;
- * if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-
-#ifdef EINA_BENCH_HAVE_GLIB
-# include <glib.h>
-#endif
-
-#include "Evas_Data.h"
-#include "Ecore_Data.h"
-
-#include "Eina.h"
-
-#if EINA_ENABLE_BENCH_E17
-
-typedef struct _Eina_Stringshare_Test Eina_Stringshare_Test;
-struct _Eina_Stringshare_Test
-{
- const char *name;
-
- int (*init)(void);
- const char *(*add)(const char *str);
- void (*del)(const char *str);
- int (*shutdown)(void);
-};
-
-static const char *strings[30000];
-static Eina_Stringshare_Test eina_str = {
- "eina",
- eina_init,
- eina_stringshare_add,
- eina_stringshare_del,
- eina_shutdown
-};
-
-static Eina_Stringshare_Test evas_str = {
- "evas",
-/* evas_stringshare_init, */
- evas_stringshare_add,
- evas_stringshare_del
-/* evas_stringshare_shutdown */
-};
-
-static Eina_Stringshare_Test ecore_str = {
- "ecore",
- ecore_string_init,
- ecore_string_instance,
- ecore_string_release,
- ecore_string_shutdown
-};
-
-static Eina_Stringshare_Test *str[] = {
- &eina_str,
- &evas_str,
- &ecore_str,
- NULL
-};
-
-static void
-eina_bench_e17_stringshare(Eina_Stringshare_Test *str)
-{
- Eina_Counter *cnt;
-
- cnt = eina_counter_new(str->name);
-
- eina_counter_start(cnt);
-
- str->init();
-
-#include "strlog"
-
- str->shutdown();
-
- eina_counter_stop(cnt, 1);
-
- fprintf(stderr, "For `%s`:\n", str->name);
- eina_counter_dump(cnt);
-
- eina_counter_free(cnt);
-}
-#endif
-
-void
-eina_bench_e17(void)
-{
-#if EINA_ENABLE_BENCH_E17
- int i;
-
- eina_init();
-
- for (i = 0; str[i]; ++i)
- eina_bench_e17_stringshare(str[i]);
-
- eina_shutdown();
-#endif
-}
diff --git a/src/tests/eina/evas_hash.c b/src/tests/eina/evas_hash.c
deleted file mode 100644
index 33615afa7..000000000
--- a/src/tests/eina/evas_hash.c
+++ /dev/null
@@ -1,536 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "Evas_Data.h"
-
-typedef struct _Evas_Hash_El Evas_Hash_El;
-
-struct _Evas_Hash_El
-{
- Evas_Object_List _list_data;
- const char *key;
- void *data;
-};
-
-static inline int _evas_hash_gen(const char *key);
-
-static int _evas_hash_alloc_error = 0;
-
-static inline int
-_evas_hash_gen(const char *key)
-{
- unsigned int hash_num = 5381;
- const unsigned char *ptr;
-
- if (!key)
- return 0;
-
- for (ptr = (unsigned char *)key; *ptr; ptr++)
- hash_num = (hash_num * 33) ^ *ptr;
-
- hash_num &= 0xff;
- return (int)hash_num;
-}
-
-/**
- * @defgroup Evas_Hash_Data Hash Data Functions
- *
- * Functions that add, access or remove data from hashes.
- *
- * The following example shows how to add and then access data in a
- * hash table:
- * @code
- * Evas_Hash *hash = NULL;
- * extern void *my_data;
- *
- * hash = evas_hash_add(hash, "My Data", my_data);
- * if (evas_hash_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. Hash allocation failed.\n");
- * exit(-1);
- * }
- * if (evas_hash_find(hash, "My Data") == my_data)
- * {
- * printf("My Data inserted and successfully found.\n");
- * }
- * @endcode
- *
- * What follows is another example, showing how the @ref evas_hash_del
- * function is used:
- * @code
- * extern Evas_Hash *hash;
- * extern void *data;
- *
- * printf("Insert some data...\n");
- * hash = evas_hash_add(hash, "My Data", my_data);
- * printf("Removing by key...\n");
- * hash = evas_hash_del(hash, "My Data", NULL);
- * printf("Insert some more data as a NULL key...\n");
- * hash = evas_hash_add(hash, NULL, my_data);
- * printf("Removing by data as a NULL key...\n");
- * hash = evas_hash_del(hash, NULL, my_data);
- * @endcode
- */
-
-/**
- * Adds an entry to the given hash table.
- *
- * @p key is expected to be a unique string within the hash table.
- * Otherwise, you cannot be sure which inserted data pointer will be
- * accessed with @ref evas_hash_find , and removed with
- * @ref evas_hash_del .
- *
- * Key strings are case sensitive.
- *
- * @ref evas_hash_alloc_error should be used to determine if an
- * allocation error occurred during this function.
- *
- * @param hash The given hash table. Can be @c NULL, in which case a
- * new hash table is allocated and returned.
- * @param key A unique string. Can be @c NULL.
- * @param data Data to associate with the string given by @p key.
- * @return Either the given hash table, or if the given value for @p
- * hash is @c NULL, then a new one. @c NULL will be returned
- * if memory could not be allocated for a new table.
- * @ingroup Evas_Hash_Data
- */
-EAPI Evas_Hash *
-evas_hash_add(Evas_Hash *hash, const char *key, const void *data)
-{
- int hash_num;
- Evas_Hash_El *el;
-
- if ((!key) || (!data))
- return hash;
-
- _evas_hash_alloc_error = 0;
- if (!hash)
- {
- hash = calloc(1, sizeof(struct _Evas_Hash));
- if (!hash)
- {
- _evas_hash_alloc_error = 1;
- return NULL;
- }
- }
-
- if (!(el = malloc(sizeof(struct _Evas_Hash_El) + strlen(key) + 1)))
- {
- if (hash->population <= 0)
- {
- free(hash);
- hash = NULL;
- }
-
- _evas_hash_alloc_error = 1;
- return hash;
- }
-
- el->key = ((char *)el) + sizeof(struct _Evas_Hash_El);
- strcpy((char *)el->key, key);
- el->data = (void *)data;
- hash_num = _evas_hash_gen(key);
- hash->buckets[hash_num] = evas_object_list_prepend(hash->buckets[hash_num],
- el);
- hash->population++;
- return hash;
-}
-
-/**
- * Adds an entry to the given hash table and does not duplicate the string key.
- *
- * @p key is expected to be a unique string within the hash table.
- * Otherwise, you cannot be sure which inserted data pointer will be
- * accessed with @ref evas_hash_find , and removed with
- * @ref evas_hash_del . This call does not make a copy of the key so it must
- * be a string constant or stored elsewhere (in the object being added) etc.
- *
- * Key strings are case sensitive.
- *
- * @ref evas_hash_alloc_error should be used to determine if an
- * allocation error occurred during this function.
- *
- * @param hash The given hash table. Can be @c NULL, in which case a
- * new hash table is allocated and returned.
- * @param key A unique string. Can be @c NULL.
- * @param data Data to associate with the string given by @p key.
- * @return Either the given hash table, or if the given value for @p
- * hash is @c NULL, then a new one. @c NULL will be returned
- * if memory could not be allocated for a new table.
- * @ingroup Evas_Hash_Data
- */
-EAPI Evas_Hash *
-evas_hash_direct_add(Evas_Hash *hash, const char *key, const void *data)
-{
- int hash_num;
- Evas_Hash_El *el;
-
- if ((!key) || (!data))
- return hash;
-
- _evas_hash_alloc_error = 0;
- if (!hash)
- {
- hash = calloc(1, sizeof(struct _Evas_Hash));
- if (!hash)
- {
- _evas_hash_alloc_error = 1;
- return NULL;
- }
- }
-
- if (!(el = malloc(sizeof(struct _Evas_Hash_El))))
- {
- if (hash->population <= 0)
- {
- free(hash);
- hash = NULL;
- }
-
- _evas_hash_alloc_error = 1;
- return hash;
- }
-
- el->key = key;
- el->data = (void *)data;
- hash_num = _evas_hash_gen(key);
- hash->buckets[hash_num] = evas_object_list_prepend(hash->buckets[hash_num],
- el);
- hash->population++;
- return hash;
-}
-
-/**
- * Removes the entry identified by @p key or @p data from the given
- * hash table.
- *
- * If @p key is @c NULL, then @p data is used to find a match to
- * remove.
- *
- * @param hash The given hash table.
- * @param key The key string. Can be @c NULL.
- * @param data The data pointer to remove if @p key is @c NULL.
- * Otherwise, not required and can be @c NULL.
- * @return The modified hash table. If there are no entries left, the
- * hash table will be freed and @c NULL will be returned.
- * @ingroup Evas_Hash_Data
- */
-EAPI Evas_Hash *
-evas_hash_del(Evas_Hash *hash, const char *key, const void *data)
-{
- int hash_num;
- Evas_Hash_El *el;
- Evas_Object_List *l;
-
- if (!hash)
- return NULL;
-
- if (!key)
- for (hash_num = 0; hash_num < 256; hash_num++)
- {
- for (l = hash->buckets[hash_num]; l; l = l->next)
- {
- el = (Evas_Hash_El *)l;
- if (el->data == data)
- {
- hash->buckets[hash_num] = evas_object_list_remove(
- hash->buckets[hash_num],
- el);
- free(el);
- hash->population--;
- if (hash->population <= 0)
- {
- free(hash);
- hash = NULL;
- }
-
- return hash;
- }
- }
- }
- else
- {
- hash_num = _evas_hash_gen(key);
- for (l = hash->buckets[hash_num]; l; l = l->next)
- {
- el = (Evas_Hash_El *)l;
- if (!strcmp(el->key, key))
- if ((!data) || (el->data == data))
- {
- hash->buckets[hash_num] = evas_object_list_remove(
- hash->buckets[hash_num],
- el);
- free(el);
- hash->population--;
- if (hash->population <= 0)
- {
- free(hash);
- hash = NULL;
- }
-
- return hash;
- }
-
- }
- }
-
- return hash;
-}
-
-/**
- * Retrieves a specific entry in the given hash table.
- * @param hash The given hash table.
- * @param key The key string of the entry to find.
- * @return The data pointer for the stored entry, or @c NULL if not
- * found.
- * @ingroup Evas_Hash_Data
- */
-EAPI void *
-evas_hash_find(const Evas_Hash *hash, const char *key)
-{
- int hash_num;
- Evas_Hash_El *el;
- Evas_Object_List *l;
-
- _evas_hash_alloc_error = 0;
- if ((!hash) || (!key))
- return NULL;
-
- hash_num = _evas_hash_gen(key);
- for (l = hash->buckets[hash_num]; l; l = l->next)
- {
- el = (Evas_Hash_El *)l;
- if (!strcmp(el->key, key))
- {
- if (l != hash->buckets[hash_num])
- {
- Evas_Object_List *bucket;
-
- bucket = hash->buckets[hash_num];
- bucket = evas_object_list_remove(bucket, el);
- bucket = evas_object_list_prepend(bucket, el);
- ((Evas_Hash *)hash)->buckets[hash_num] = bucket;
- }
-
- return el->data;
- }
- }
- return NULL;
-}
-
-/**
- * Modifies the entry pointer at the specified key and returns the old entry
- * @param hash The given hash table.
- * @param key The key string of the entry to modify.
- * @param data The data to replace the old entry, if it exists.
- * @return The data pointer for the old stored entry, or @c NULL if not
- * found. If an existing entry is not found, nothing is added to the
- * hash.
- * @ingroup Evas_Hash_Data
- */
-EAPI void *
-evas_hash_modify(Evas_Hash *hash, const char *key, const void *data)
-{
- int hash_num;
- Evas_Hash_El *el;
- Evas_Object_List *l;
-
- _evas_hash_alloc_error = 0;
- if (!hash)
- return NULL;
-
- hash_num = _evas_hash_gen(key);
- for (l = hash->buckets[hash_num]; l; l = l->next)
- {
- el = (Evas_Hash_El *)l;
- if ((key) && (!strcmp(el->key, key)))
- {
- void *old_data;
-
- if (l != hash->buckets[hash_num])
- {
- hash->buckets[hash_num] = evas_object_list_remove(
- hash->buckets[hash_num],
- el);
- hash->buckets[hash_num] = evas_object_list_prepend(
- hash->buckets[hash_num],
- el);
- }
-
- old_data = el->data;
- el->data = (void *)data;
- return old_data;
- }
- }
- return NULL;
-}
-
-/**
- * @defgroup Evas_Hash_General_Group Hash General Functions
- *
- * Miscellaneous functions that operate on hash objects.
- */
-
-/**
- * Retrieves the number of buckets available in the given hash table.
- * @param hash The given hash table.
- * @return @c 256 if @p hash is not @c NULL. @c 0 otherwise.
- * @ingroup Evas_Hash_General_Group
- */
-EAPI int
-evas_hash_size(const Evas_Hash *hash)
-{
- if (!hash)
- return 0;
-
- return 256;
-}
-
-/**
- * @todo Complete polishing documentation for evas_hash.c. The
- * functions' docs may be grouped, but they need some simplification.
- */
-
-/**
- * Free an entire hash table
- * @param hash The hash table to be freed
- *
- * This function frees up all the memory allocated to storing the specified
- * hash tale pointed to by @p hash. Any entries in the table that the program
- * has no more pointers for elsewhere may now be lost, so this should only be
- * called if the program has lready freed any allocated data in the hash table
- * or has the pointers for data in the table stored elswehere as well.
- *
- * Example:
- * @code
- * extern Evas_Hash *hash;
- *
- * evas_hash_free(hash);
- * hash = NULL;
- * @endcode
- * @ingroup Evas_Hash_General_Group
- */
-EAPI void
-evas_hash_free(Evas_Hash *hash)
-{
- int i, size;
-
- if (!hash)
- return;
-
- size = evas_hash_size(hash);
- for (i = 0; i < size; i++)
- {
- while (hash->buckets[i])
- {
- Evas_Hash_El *el;
-
- el = (Evas_Hash_El *)hash->buckets[i];
- hash->buckets[i] = evas_object_list_remove(hash->buckets[i], el);
- free(el);
- }
- }
- free(hash);
-}
-
-/**
- * Call a function on every member stored in the hash table
- * @param hash The hash table whose members will be walked
- * @param func The function to call on each parameter
- * @param fdata The data pointer to pass to the function being called
- *
- * This function goes through every entry in the hash table @p hash and calls
- * the function @p func on each member. The function should NOT modify the
- * hash table contents if it returns 1. IF the hash table contents are
- * modified by this function or the function wishes to stop processing it must
- * return 0, otherwise return 1 to keep processing.
- *
- * Example:
- * @code
- * extern Evas_Hash *hash;
- *
- * Evas_Bool hash_fn(Evas_Hash *hash, const char *key, void *data, void *fdata)
- * {
- * printf("Func data: %s, Hash entry: %s / %p\n", fdata, key, data);
- * return 1;
- * }
- *
- * int main(int argc, char **argv)
- * {
- * char *hash_fn_data;
- *
- * hash_fn_data = strdup("Hello World");
- * evas_hash_foreach(hash, hash_fn, hash_fn_data);
- * free(hash_fn_data);
- * }
- * @endcode
- * @ingroup Evas_Hash_General_Group
- */
-EAPI void
-evas_hash_foreach(const Evas_Hash *hash, Evas_Bool (*func)(
- const Evas_Hash *hash,
- const char *key,
- void *data,
- void *fdata), const void *fdata)
-{
- int i, size;
-
- if (!hash)
- return;
-
- size = evas_hash_size(hash);
- for (i = 0; i < size; i++)
- {
- Evas_Object_List *l, *next_l;
-
- for (l = hash->buckets[i]; l; )
- {
- Evas_Hash_El *el;
-
- next_l = l->next;
- el = (Evas_Hash_El *)l;
- if (!func(hash, el->key, el->data, (void *)fdata))
- return;
-
- l = next_l;
- }
- }
-}
-
-/**
- * Return memory allocation failure flag after an function requiring allocation
- * @return The state of the allocation flag
- *
- * This function returns the state of the memory allocation flag. This flag is
- * set if memory allocations fail during evas_hash_add() calls. If they do, 1
- * will be returned, otherwise 0 will be returned. The flag will remain in its
- * current state until the next call that requires allocation is called, and
- * is then reset.
- *
- * Example:
- * @code
- * Evas_Hash *hash = NULL;
- * extern void *my_data;
- *
- * hash = evas_hash_add(hash, "My Data", my_data);
- * if (evas_hash_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. Hash allocation failed.\n");
- * exit(-1);
- * }
- * if (evas_hash_find(hash, "My Data") == my_data)
- * {
- * printf("My Data inserted and successfully found.\n");
- * }
- * @endcode
- * @ingroup Evas_Hash_General_Group
- */
-EAPI int
-evas_hash_alloc_error(void)
-{
- return _evas_hash_alloc_error;
-}
diff --git a/src/tests/eina/evas_list.c b/src/tests/eina/evas_list.c
deleted file mode 100644
index 3df15eda8..000000000
--- a/src/tests/eina/evas_list.c
+++ /dev/null
@@ -1,1093 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-
-#include "Evas_Data.h"
-#include <evas_mempool.h>
-
-typedef struct _Evas_List_Accounting Evas_List_Accounting;
-
-struct _Evas_List_Accounting
-{
- Evas_List *last;
- int count;
-};
-
-static int _evas_list_alloc_error = 0;
-
-static Evas_Mempool _evas_list_mempool =
-{
- sizeof(Evas_List),
- 320,
- 0, NULL, NULL
-};
-static Evas_Mempool _evas_list_accounting_mempool =
-{
- sizeof(Evas_List_Accounting),
- 80,
- 0, NULL, NULL
-};
-
-/**
- * @defgroup Evas_List_Data_Group Linked List Creation Functions
- *
- * Functions that add data to an Evas_List.
- */
-
-/**
- * Appends the given data to the given linked list.
- *
- * The following example code demonstrates how to ensure that the
- * given data has been successfully appended.
- *
- * @code
- * Evas_List *list = NULL;
- * extern void *my_data;
- *
- * list = evas_list_append(list, my_data);
- * if (evas_list_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
- * exit(-1);
- * }
- * @endcode
- *
- * @param list The given list. If @c NULL is given, then a new list
- * is created.
- * @param data The data to append.
- * @return A new list pointer that should be used in place of the one
- * given to this function if successful. Otherwise, the old
- * pointer is returned.
- * @ingroup Evas_List_Data_Group
- */
-EAPI Evas_List *
-evas_list_append(Evas_List *list, const void *data)
-{
- Evas_List *l, *new_l;
-
- _evas_list_alloc_error = 0;
- new_l = evas_mempool_malloc(&_evas_list_mempool, sizeof(Evas_List));
- if (!new_l)
- {
- _evas_list_alloc_error = 1;
- return list;
- }
-
- new_l->next = NULL;
- new_l->data = (void *)data;
- if (!list)
- {
- new_l->prev = NULL;
- new_l->accounting = evas_mempool_malloc(&_evas_list_accounting_mempool,
- sizeof(Evas_List_Accounting));
- if (!new_l->accounting)
- {
- _evas_list_alloc_error = 1;
- evas_mempool_free(&_evas_list_mempool, new_l);
- return list;
- }
-
- new_l->accounting->last = new_l;
- new_l->accounting->count = 1;
- return new_l;
- }
-
- l = list->accounting->last;
- l->next = new_l;
- new_l->prev = l;
- new_l->accounting = list->accounting;
- list->accounting->last = new_l;
- list->accounting->count++;
- return list;
-}
-
-/**
- * Prepends the given data to the given linked list.
- *
- * The following example code demonstrates how to ensure that the
- * given data has been successfully prepended.
- *
- * Example:
- * @code
- * Evas_List *list = NULL;
- * extern void *my_data;
- *
- * list = evas_list_prepend(list, my_data);
- * if (evas_list_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
- * exit(-1);
- * }
- * @endcode
- *
- * @param list The given list.
- * @param data The given data.
- * @return A new list pointer that should be used in place of the one
- * given to this function, if successful. Otherwise, the old
- * pointer is returned.
- * @ingroup Evas_List_Data_Group
- */
-EAPI Evas_List *
-evas_list_prepend(Evas_List *list, const void *data)
-{
- Evas_List *new_l;
-
- _evas_list_alloc_error = 0;
- new_l = evas_mempool_malloc(&_evas_list_mempool, sizeof(Evas_List));
- if (!new_l)
- {
- _evas_list_alloc_error = 1;
- return list;
- }
-
- new_l->prev = NULL;
- new_l->data = (void *)data;
- if (!list)
- {
- new_l->next = NULL;
- new_l->accounting = evas_mempool_malloc(&_evas_list_accounting_mempool,
- sizeof(Evas_List_Accounting));
- if (!new_l->accounting)
- {
- _evas_list_alloc_error = 1;
- evas_mempool_free(&_evas_list_mempool, new_l);
- return list;
- }
-
- new_l->accounting->last = new_l;
- new_l->accounting->count = 1;
- return new_l;
- }
-
- new_l->next = list;
- list->prev = new_l;
- new_l->accounting = list->accounting;
- list->accounting->count++;
- return new_l;
-}
-
-/**
- * Inserts the given data into the given linked list after the specified data.
- *
- * If @p relative is not in the list, @p data is appended to the end of the
- * list. If there are multiple instances of @p relative in the list,
- * @p data is inserted after the first instance.
- *
- * The following example code demonstrates how to ensure that the
- * given data has been successfully inserted.
- *
- * @code
- * Evas_List *list = NULL;
- * extern void *my_data;
- * extern void *relative_member;
- *
- * list = evas_list_append(list, relative_member);
- * if (evas_list_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
- * exit(-1);
- * }
- * list = evas_list_append_relative(list, my_data, relative_member);
- * if (evas_list_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
- * exit(-1);
- * }
- * @endcode
- *
- * @param list The given linked list.
- * @param data The given data.
- * @param relative The data to insert after.
- * @return A new list pointer that should be used in place of the one
- * given to this function if successful. Otherwise, the old pointer
- * is returned.
- * @ingroup Evas_List_Data_Group
- */
-EAPI Evas_List *
-evas_list_append_relative(Evas_List *list,
- const void *data,
- const void *relative)
-{
- Evas_List *l;
-
- for (l = list; l; l = l->next)
- {
- if (l->data == relative)
- return evas_list_append_relative_list(list, data, l);
- }
- return evas_list_append(list, data);
-}
-
-EAPI Evas_List *
-evas_list_append_relative_list(Evas_List *list,
- const void *data,
- Evas_List *relative)
-{
- Evas_List *new_l;
-
- if ((!list) || (!relative))
- return evas_list_append(list, data);
-
- _evas_list_alloc_error = 0;
- new_l = evas_mempool_malloc(&_evas_list_mempool, sizeof(Evas_List));
- if (!new_l)
- {
- _evas_list_alloc_error = 1;
- return list;
- }
-
- new_l->data = (void *)data;
- if (relative->next)
- {
- new_l->next = relative->next;
- relative->next->prev = new_l;
- }
- else
- new_l->next = NULL;
-
- relative->next = new_l;
- new_l->prev = relative;
- new_l->accounting = list->accounting;
- list->accounting->count++;
- if (!new_l->next)
- new_l->accounting->last = new_l;
-
- return list;
-}
-
-/**
- * Prepend a data pointer to a linked list before the member specified
- * @param list The list handle to prepend @p data too
- * @param data The data pointer to prepend to list @p list before @p relative
- * @param relative The data pointer before which to insert @p data
- * @return A new list handle to replace the old one
-
- * Inserts the given data into the given linked list before the member
- * specified.
- *
- * If @p relative is not in the list, @p data is prepended to the
- * start of the list. If there are multiple instances of @p relative
- * in the list, @p data is inserted before the first instance.
- *
- * The following code example demonstrates how to ensure that the
- * given data has been successfully inserted.
- *
- * @code
- * Evas_List *list = NULL;
- * extern void *my_data;
- * extern void *relative_member;
- *
- * list = evas_list_append(list, relative_member);
- * if (evas_list_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
- * exit(-1);
- * }
- * list = evas_list_prepend_relative(list, my_data, relative_member);
- * if (evas_list_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
- * exit(-1);
- * }
- * @endcode
- *
- * @param list The given linked list.
- * @param data The given data.
- * @param relative The data to insert before.
- * @return A new list pointer that should be used in place of the one
- * given to this function if successful. Otherwise the old pointer
- * is returned.
- * @ingroup Evas_List_Data_Group
- */
-EAPI Evas_List *
-evas_list_prepend_relative(Evas_List *list,
- const void *data,
- const void *relative)
-{
- Evas_List *l;
-
- _evas_list_alloc_error = 0;
- for (l = list; l; l = l->next)
- {
- if (l->data == relative)
- return evas_list_prepend_relative_list(list, data, l);
- }
- return evas_list_prepend(list, data);
-}
-
-EAPI Evas_List *
-evas_list_prepend_relative_list(Evas_List *list,
- const void *data,
- Evas_List *relative)
-{
- Evas_List *new_l;
-
- if ((!list) || (!relative))
- return evas_list_prepend(list, data);
-
- _evas_list_alloc_error = 0;
- new_l = evas_mempool_malloc(&_evas_list_mempool, sizeof(Evas_List));
- if (!new_l)
- {
- _evas_list_alloc_error = 1;
- return list;
- }
-
- new_l->data = (void *)data;
- new_l->prev = relative->prev;
- new_l->next = relative;
- if (relative->prev)
- relative->prev->next = new_l;
-
- relative->prev = new_l;
- new_l->accounting = list->accounting;
- list->accounting->count++;
- if (new_l->prev)
- return list;
-
- return new_l;
-}
-
-/**
- * @defgroup Evas_List_Remove_Group Linked List Remove Functions
- *
- * Functions that remove data from linked lists.
- */
-
-/**
- * Removes the first instance of the specified data from the given list.
- *
- * If the specified data is not in the given list, nothing is done.
- *
- * @param list The given list.
- * @param data The specified data.
- * @return A new list pointer that should be used in place of the one
- * passed to this functions.
- * @ingroup Evas_List_Remove_Group
- */
-EAPI Evas_List *
-evas_list_remove(Evas_List *list, const void *data)
-{
- Evas_List *l;
-
- for (l = list; l; l = l->next)
- {
- if (l->data == data)
- return evas_list_remove_list(list, l);
- }
- return list;
-}
-
-/**
- * Removes the specified data
- *
- * Remove a specified member from a list
- * @param list The list handle to remove @p remove_list from
- * @param remove_list The list node which is to be removed
- * @return A new list handle to replace the old one
- *
- * Calling this function takes the list node @p remove_list and removes it
- * from the list @p list, freeing the list node structure @p remove_list.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * Evas_List *l;
- * extern void *my_data;
- *
- * for (l = list; l; l= l->next)
- * {
- * if (l->data == my_data)
- * {
- * list = evas_list_remove_list(list, l);
- * break;
- * }
- * }
- * @endcode
- * @ingroup Evas_List_Remove_Group
- */
-EAPI Evas_List *
-evas_list_remove_list(Evas_List *list, Evas_List *remove_list)
-{
- Evas_List *return_l;
-
- if (!list)
- return NULL;
-
- if (!remove_list)
- return list;
-
- if (remove_list->next)
- remove_list->next->prev = remove_list->prev;
-
- if (remove_list->prev)
- {
- remove_list->prev->next = remove_list->next;
- return_l = list;
- }
- else
- return_l = remove_list->next;
-
- if (remove_list == list->accounting->last)
- list->accounting->last = remove_list->prev;
-
- list->accounting->count--;
- if (list->accounting->count == 0)
- evas_mempool_free(&_evas_list_accounting_mempool, list->accounting);
-
- evas_mempool_free(&_evas_list_mempool, remove_list);
- return return_l;
-}
-
-/**
- * Moves the specified data to the head of the list
- *
- * Move a specified member to the head of the list
- * @param list The list handle to move @p inside
- * @param move_list The list node which is to be moved
- * @return A new list handle to replace the old one
- *
- * Calling this function takes the list node @p move_list and moves it
- * to the front of the @p list.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * Evas_List *l;
- * extern void *my_data;
- *
- * for (l = list; l; l= l->next)
- * {
- * if (l->data == my_data)
- * {
- * list = evas_list_promote_list(list, l);
- * break;
- * }
- * }
- * @endcode
- * @ingroup Evas_List_Promote_Group
- */
-EAPI Evas_List *
-evas_list_promote_list(Evas_List *list, Evas_List *move_list)
-{
- Evas_List *return_l;
-
- if (!list)
- return NULL;
-
- if (!move_list)
- return list;
-
- if (move_list == list)
- return list;
-
- if (move_list->next)
- move_list->next->prev = move_list->prev;
-
- if (move_list->prev)
- {
- move_list->prev->next = move_list->next;
- return_l = list;
- }
- else
- return_l = move_list->next;
-
- if (move_list == list->accounting->last)
- list->accounting->last = move_list->prev;
-
- move_list->prev = return_l->prev;
- if (return_l->prev)
- return_l->prev->next = move_list;
-
- return_l->prev = move_list;
- move_list->next = return_l;
- return move_list;
-}
-
-
-
-/**
- * @defgroup Evas_List_Find_Group Linked List Find Functions
- *
- * Functions that find specified data in a linked list.
- */
-
-/**
- * Find a member of a list and return the member
- * @param list The list handle to search for @p data
- * @param data The data pointer to find in the list @p list
- * @return The found member data pointer
- *
- * A call to this function will search the list @p list from beginning to end
- * for the first member whose data pointer is @p data. If it is found, @p data
- * will be returned, otherwise NULL will be returned.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * extern void *my_data;
- *
- * if (evas_list_find(list, my_data) == my_data)
- * {
- * printf("Found member %p\n", my_data);
- * }
- * @endcode
- * @ingroup Evas_List_Find_Group
- */
-EAPI void *
-evas_list_find(const Evas_List *list, const void *data)
-{
- const Evas_List *l;
-
- for (l = list; l; l = l->next)
- {
- if (l->data == data)
- return (void *)data;
- }
- return NULL;
-}
-
-/**
- * Find a member of a list and return the list node containing that member
- * @param list The list handle to search for @p data
- * @param data The data pointer to find in the list @p list
- * @return The found members list node
- *
- * A call to this function will search the list @p list from beginning to end
- * for the first member whose data pointer is @p data. If it is found, the
- * list node containing the specified member will be returned, otherwise NULL
- * will be returned.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * extern void *my_data;
- * Evas_List *found_node;
- *
- * found_node = evas_list_find_list(list, my_data);
- * if (found_node)
- * {
- * printf("Found member %p\n", found_node->data);
- * }
- * @endcode
- * @ingroup Evas_List_Find_Group
- */
-EAPI Evas_List *
-evas_list_find_list(const Evas_List *list, const void *data)
-{
- const Evas_List *l;
-
- for (l = list; l; l = l->next)
- {
- if (l->data == data)
- return (Evas_List *)l;
- }
- return NULL;
-}
-
-/**
- * Free an entire list and all the nodes, ignoring the data contained
- * @param list The list to free
- * @return A NULL pointer
- *
- * This function will free all the list nodes in list specified by @p list.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- *
- * list = evas_list_free(list);
- * @endcode
- * @ingroup Evas_List_Remove_Group
- */
-EAPI Evas_List *
-evas_list_free(Evas_List *list)
-{
- Evas_List *l, *free_l;
-
- if (!list)
- return NULL;
-
- evas_mempool_free(&_evas_list_accounting_mempool, list->accounting);
- for (l = list; l; )
- {
- free_l = l;
- l = l->next;
- evas_mempool_free(&_evas_list_mempool, free_l);
- }
- return NULL;
-}
-
-/**
- * @defgroup Evas_List_Traverse_Group Linked List Traverse Functions
- *
- * Functions that you can use to traverse a linked list.
- */
-
-/**
- * Get the last list node in the list
- * @param list The list to get the last list node from
- * @return The last list node in the list @p list
- *
- * This function will return the last list node in the list (or NULL if the
- * list is empty).
- *
- * NB: This is a order-1 operation (it takes the same short time regardless of
- * the length of the list).
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * Evas_List *last, *l;
- *
- * last = evas_list_last(list);
- * printf("The list in reverse:\n");
- * for (l = last; l; l = l->prev)
- * {
- * printf("%p\n", l->data);
- * }
- * @endcode
- * @ingroup Evas_List_Traverse_Group
- */
-EAPI Evas_List *
-evas_list_last(const Evas_List *list)
-{
- if (!list)
- return NULL;
-
- return list->accounting->last;
-}
-
-/**
- * Get the next list node after the specified list node
- * @param list The list node to get the next list node from
- * @return The next list node, or NULL if no next list node exists
- *
- * This function returns the next list node after the current one. It is
- * equivalent to list->next.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * Evas_List *l;
- *
- * printf("The list:\n");
- * for (l = list; l; l = evas_list_next(l))
- * {
- * printf("%p\n", l->data);
- * }
- * @endcode
- * @ingroup Evas_List_Traverse_Group
- */
-EAPI Evas_List *
-evas_list_next(const Evas_List *list)
-{
- if (!list)
- return NULL;
-
- return list->next;
-}
-
-/**
- * Get the previous list node before the specified list node
- * @param list The list node to get the previous list node from
- * @return The previous list node, or NULL if no previous list node exists
- *
- * This function returns the previous list node before the current one. It is
- * equivalent to list->prev.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * Evas_List *last, *l;
- *
- * last = evas_list_last(list);
- * printf("The list in reverse:\n");
- * for (l = last; l; l = evas_list_prev(l))
- * {
- * printf("%p\n", l->data);
- * }
- * @endcode
- * @ingroup Evas_List_Traverse_Group
- */
-EAPI Evas_List *
-evas_list_prev(const Evas_List *list)
-{
- if (!list)
- return NULL;
-
- return list->prev;
-}
-
-/**
- * @defgroup Evas_List_General_Group Linked List General Functions
- *
- * Miscellaneous functions that work on linked lists.
- */
-
-/**
- * Get the list node data member
- * @param list The list node to get the data member of
- * @return The data member from the list node @p list
- *
- * This function returns the data member of the specified list node @p list.
- * It is equivalent to list->data.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * Evas_List *l;
- *
- * printf("The list:\n");
- * for (l = list; l; l = evas_list_next(l))
- * {
- * printf("%p\n", evas_list_data(l));
- * }
- * @endcode
- * @ingroup Evas_List_General_Group
- */
-EAPI void *
-evas_list_data(const Evas_List *list)
-{
- if (!list)
- return NULL;
-
- return list->data;
-}
-
-/**
- * Get the count of the number of items in a list
- * @param list The list whose count to return
- * @return The number of members in the list @p list
- *
- * This function returns how many members in the specified list: @p list. If
- * the list is empty (NULL), 0 is returned.
- *
- * NB: This is an order-1 operation and takes the same time regardless of the
- * length of the list.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- *
- * printf("The list has %i members\n", evas_list_count(list));
- * @endcode
- * @ingroup Evas_List_General_Group
- */
-EAPI int
-evas_list_count(const Evas_List *list)
-{
- if (!list)
- return 0;
-
- return list->accounting->count;
-}
-
-/**
- * Get the nth member's data pointer in a list
- * @param list The list to get member number @p n from
- * @param n The number of the element (0 being the first)
- * @return The data pointer stored in the specified element
- *
- * This function returns the data pointer of element number @p n, in the list
- * @p list. The first element in the array is element number 0. If the element
- * number @p n does not exist, NULL will be returned.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * extern int number;
- * void *data;
- *
- * data = evas_list_nth(list, number);
- * if (data)
- * printf("Element number %i has data %p\n", number, data);
- * @endcode
- * @ingroup Evas_List_Find_Group
- */
-EAPI void *
-evas_list_nth(const Evas_List *list, int n)
-{
- Evas_List *l;
-
- l = evas_list_nth_list(list, n);
- return l ? l->data : NULL;
-}
-
-/**
- * Get the nth member's list node in a list
- * @param list The list to get member number @p n from
- * @param n The number of the element (0 being the first)
- * @return The list node stored in the numbered element
- *
- * This function returns the list node of element number @p n, in the list
- * @p list. The first element in the array is element number 0. If the element
- * number @p n does not exist, NULL will be returned.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- * extern int number;
- * Evas_List *nth_list;
- *
- * nth_list = evas_list_nth_list(list, number);
- * if (nth_list)
- * printf("Element number %i has data %p\n", number, nth_list->data);
- * @endcode
- * @ingroup Evas_List_Find_Group
- */
-EAPI Evas_List *
-evas_list_nth_list(const Evas_List *list, int n)
-{
- int i;
- const Evas_List *l;
-
- /* check for non-existing nodes */
- if ((!list) || (n < 0) ||
- (n > (list->accounting->count - 1)))
- return NULL;
-
- /* if the node is in the 2nd half of the list, search from the end
- * else, search from the beginning.
- */
- if (n > (list->accounting->count / 2))
- for (i = list->accounting->count - 1,
- l = list->accounting->last;
- l;
- l = l->prev, i--)
- {
- if (i == n)
- return (Evas_List *)l;
- }
- else
- for (i = 0, l = list; l; l = l->next, i++)
- {
- if (i == n)
- return (Evas_List *)l;
- }
-
- return NULL;
-}
-
-/**
- * @defgroup Evas_List_Ordering_Group Linked List Ordering Functions
- *
- * Functions that change the ordering of data in a linked list.
- */
-
-/**
- * Reverse all the elements in the list
- * @param list The list to reverse
- * @return The list after it has been reversed
- *
- * This takes a list @p list, and reverses the order of all elements in the
- * list, so the last member is now first, and so on.
- *
- * Example:
- * @code
- * extern Evas_List *list;
- *
- * list = evas_list_reverse(list);
- * @endcode
- * @ingroup Evas_List_Ordering_Group
- */
-EAPI Evas_List *
-evas_list_reverse(Evas_List *list)
-{
- Evas_List *l1, *l2;
-
- if (!list)
- return NULL;
-
- l1 = list;
- l2 = list->accounting->last;
- while (l1 != l2)
- {
- void *data;
-
- data = l1->data;
- l1->data = l2->data;
- l2->data = data;
- l1 = l1->next;
- if (l1 == l2)
- break;
-
- l2 = l2->prev;
- }
-
- return list;
-}
-
-/**
- * Sort a list according to the ordering func will return
- * @param list The list handle to sort
- * @param size The length of the list to sort
- * @param func A function pointer that can handle comparing the list data
- * nodes
- * @return A new sorted list
- *
- * This function sorts your list. The data in your nodes can be arbitrary,
- * you just have to be smart enough to know what kind of data is in your
- * lists
- *
- * Example:
- * @code
- * int
- * sort_cb(void *d1, void *d2)
- * {
- * const char *txt = NULL;
- * const char *txt2 = NULL;
- *
- * if(!d1) return(1);
- * if(!d2) return(-1);
- *
- * return(strcmp((const char*)d1, (const char*)d2));
- * }
- * extern Evas_List *list;
- *
- * list = evas_list_sort(list, evas_list_count(list), sort_cb);
- * if (evas_list_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. List Sorting failed.\n");
- * exit(-1);
- * }
- * @endcode
- * @ingroup Evas_List_Ordering_Group
- */
-EAPI Evas_List *
-evas_list_sort(Evas_List *list, int size, int (*func)(void *, void *))
-{
- Evas_List *last;
- unsigned int list_number;
- unsigned int middle;
- unsigned int list_size;
-
- if (!list || !func)
- return NULL;
-
- /* if the caller specified an invalid size, sort the whole list */
- if ((size <= 0) ||
- (size > list->accounting->count))
- size = list->accounting->count;
-
- last = list->accounting->last;
- middle = size - size / 2;
-
- for (list_number = middle, list_size = 1;
- list_size < middle * 2;
- list_number >>= 1, list_size <<= 1)
- {
- Evas_List *head1 = list;
- unsigned int limit = size;
- unsigned int process_list;
- unsigned int pass_number;
- unsigned int split_size = list_size;
-
- for (process_list = 0; process_list < list_number + 1; ++process_list)
- {
- Evas_List *head2;
- unsigned int size_sum;
- int size1, size2;
- int i;
-
- size1 = limit < split_size ? limit : split_size;
- limit -= size1;
-
- size2 = limit < split_size ? limit : split_size;
- limit -= size2;
-
- size_sum = size1 + size2;
-
- for (head2 = head1, i = 0; i < size1; ++i)
- head2 = evas_list_next (head2);
-
- for (pass_number = 0; pass_number < size_sum; ++pass_number)
- {
- Evas_List *next;
- Evas_List *prev1;
- Evas_List *prev2;
-
- if (size1 == 0 || !head1) /* List1 is empty, head1 is already at the end of the list. So only need to update head2 */
- {
- for (; pass_number < size_sum; ++pass_number)
- head2 = evas_list_next (head2);
- break;
- }
- else
- if (size2 == 0 || !head2) /* List2 is empty, just leave */
- break;
- else
- if (func (head1->data, head2->data) < 0)
- {
- head1 = evas_list_next (head1);
- --size1;
- }
- else
- {
- next = evas_list_next (head2);
- prev1 = evas_list_prev (head1);
- prev2 = evas_list_prev (head2);
-
- if (next)
- next->prev = prev2;
-
- if (prev1)
- prev1->next = head2;
-
- if (prev2)
- prev2->next = next;
-
- head2->prev = prev1;
- head2->next = head1;
- head1->prev = head2;
-
- --size2;
-
- if (head1 == list)
- list = head2;
-
- if (head2 == last)
- last = prev2;
-
- head2 = next;
- }
- }
- head1 = head2;
- }
- }
-
- list->accounting->last = last;
- return list;
-}
-/**
- * Return the memory allocation failure flag after any operation needin allocation
- * @return The state of the allocation flag
- *
- * This function returns the state of the memory allocation flag. This flag is
- * set if memory allocations during evas_list_append(), evas_list_prepend(),
- * evas_list_append_relative(), or evas_list_prepend_relative() fail. If they
- * do fail, 1 will be returned, otherwise 0 will be returned. The flag will
- * remain in its current state until the next call that requires allocation
- * is called, and is then reset.
- *
- * Example:
- * @code
- * Evas_List *list = NULL;
- * extern void *my_data;
- *
- * list = evas_list_append(list, my_data);
- * if (evas_list_alloc_error())
- * {
- * fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
- * exit(-1);
- * }
- * @endcode
- * @ingroup Evas_List_General_Group
- */
-EAPI int
-evas_list_alloc_error(void)
-{
- return _evas_list_alloc_error;
-}
diff --git a/src/tests/eina/evas_mempool.c b/src/tests/eina/evas_mempool.c
deleted file mode 100644
index 709821464..000000000
--- a/src/tests/eina/evas_mempool.c
+++ /dev/null
@@ -1,200 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "Evas_Data.h"
-#include "evas_mempool.h"
-
-//#define NOPOOL
-
-typedef struct _Pool Pool;
-
-struct _Pool
-{
- int usage;
- void *base;
- Pool *prev, *next;
-};
-
-
-Pool *
-_evas_mp_pool_new(Evas_Mempool *pool)
-{
-#ifdef NOPOOL
- static Pool thepool;
- return &thepool;
-#else
- Pool *p;
- void **ptr;
- int item_alloc, i;
-
- item_alloc =
- ((pool->item_size + sizeof(void *) - 1) / sizeof(void *)) * sizeof(void *);
- p = malloc(sizeof(Pool) + (pool->pool_size * item_alloc));
- ptr = (void **)(((unsigned char *)p) + sizeof(Pool));
- p->usage = 0;
- p->base = ptr;
- for (i = 0; i < pool->pool_size - 1; i++)
- {
- *ptr = (void **)(((unsigned char *)ptr) + item_alloc);
- ptr = *ptr;
- }
- *ptr = NULL;
- return p;
-#endif
-}
-
-void
-_evas_mp_pool_free(Pool *p)
-{
-#if !defined(NOPOOL)
- free(p);
-#endif
-}
-
-void *
-evas_mempool_malloc(Evas_Mempool *pool, int size __UNUSED__)
-{
-#ifdef NOPOOL
- return malloc(size);
-#else
- Pool *p;
- void *mem;
-
- for (p = pool->first; p; p = p->next) // look 4 pool from 2nd bucket on
- {
- if (p->base) // base is not NULL - has a free slot
- {
- if (p->prev)
- {
- if (pool->last == p)
- pool->last = p->prev;
-
- p->prev->next = p->next;
- p->prev = NULL;
- p->next = pool->first;
- p->next->prev = p;
- pool->first = p;
- }
-
- break;
- }
- }
- if (!p) // we have reached the end of the list - no free pools
- {
- p = _evas_mp_pool_new(pool);
- if (!p)
- return NULL;
-
- p->prev = NULL;
- p->next = pool->first;
- if (p->next)
- p->next->prev = p;
-
- if (!pool->last)
- pool->last = p;
-
- pool->first = p;
- }
-
- mem = p->base; // this points to the next free block - so take it
- p->base = *((void **)mem); // base now points to the next free block
- if (!p->base) // move to end - it just filled up
- if (p->next)
- {
- if (p->prev)
- p->prev->next = p->next;
- else
- pool->first = p->next;
-
- p->next->prev = p->prev;
- ((Pool *)pool->last)->next = p;
- p->prev = pool->last;
- p->next = NULL;
- pool->last = p;
- }
-
- p->usage++;
- pool->usage++;
- return mem;
-#endif
-}
-
-void
-evas_mempool_free(Evas_Mempool *pool, void *ptr)
-{
-#ifdef NOPOOL
- free(ptr);
-#else
- Pool *p;
- void *pmem;
- int item_alloc, psize;
-
- item_alloc =
- ((pool->item_size + sizeof(void *) - 1) / sizeof(void *)) * sizeof(void *);
- psize = item_alloc * pool->pool_size;
- for (p = (Pool *)(pool->first); p; p = p->next) // look 4 pool
- {
- pmem = (void *)(((unsigned char *)p) + sizeof(Pool)); // pool mem base
- if ((ptr >= pmem) &&
- ((unsigned char *)ptr < (((unsigned char *)pmem) + psize))) // is it in pool mem?
- {
- *((void **)ptr) = p->base; // freed node points to prev free node
- p->base = ptr; // next free node is now the one we freed
- p->usage--;
- pool->usage--;
- if (p->usage == 0) // free bucket
- {
- if (p->prev)
- p->prev->next = p->next;
-
- if (p->next)
- p->next->prev = p->prev;
-
- if (pool->last == p)
- pool->last = p->prev;
-
- if (pool->first == p)
- pool->first = p->next;
-
- _evas_mp_pool_free(p);
- }
- else if (p->prev) // if not the first - move to front
- {
- p->prev->next = p->next;
- if (p->next)
- p->next->prev = p->prev;
-
- if (pool->last == p)
- pool->last = p->prev;
-
- p->prev = NULL;
- p->next = pool->first;
- p->next->prev = p;
- pool->first = p;
- }
-
- break;
- }
- }
-#endif
-}
-
-
-void *
-evas_mempool_calloc(Evas_Mempool *pool, int size)
-{
-#ifdef NOPOOL
- return calloc(1, size);
-#else
- void *mem;
-
- mem = evas_mempool_malloc(pool, size);
- memset(mem, 0, size);
- return mem;
-#endif
-}
-
diff --git a/src/tests/eina/evas_mempool.h b/src/tests/eina/evas_mempool.h
deleted file mode 100644
index 983c4346b..000000000
--- a/src/tests/eina/evas_mempool.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef _EVAS_MEMPOOL_H
-#define _EVAS_MEMPOOL_H
-
-
-typedef struct _Evas_Mempool Evas_Mempool;
-
-struct _Evas_Mempool
-{
- int item_size;
- int pool_size;
- int usage;
- void *first, *last;
-};
-
-
-void *evas_mempool_malloc(Evas_Mempool *pool, int size);
-void evas_mempool_free(Evas_Mempool *pool, void *ptr);
-void *evas_mempool_calloc(Evas_Mempool *pool, int size);
-
-
-#endif /* _EVAS_MEMPOOL_H */
diff --git a/src/tests/eina/evas_object_list.c b/src/tests/eina/evas_object_list.c
deleted file mode 100644
index 8ba426771..000000000
--- a/src/tests/eina/evas_object_list.c
+++ /dev/null
@@ -1,183 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-
-#include "Evas_Data.h"
-
-/* list ops */
-void *
-evas_object_list_append(void *in_list, void *in_item)
-{
- Evas_Object_List *l, *new_l;
- Evas_Object_List *list;
-
- list = in_list;
- new_l = in_item;
- new_l->next = NULL;
- if (!list)
- {
- new_l->prev = NULL;
- new_l->last = new_l;
- return new_l;
- }
-
- if (list->last)
- l = list->last;
- else
- for (l = list; (l) && (l->next); l = l->next) ;
-
- l->next = new_l;
- new_l->prev = l;
- list->last = new_l;
- return list;
-}
-
-void *
-evas_object_list_prepend(void *in_list, void *in_item)
-{
- Evas_Object_List *new_l;
- Evas_Object_List *list;
-
- list = in_list;
- new_l = in_item;
- new_l->prev = NULL;
- if (!list)
- {
- new_l->next = NULL;
- new_l->last = new_l;
- return new_l;
- }
-
- new_l->next = list;
- list->prev = new_l;
- new_l->last = list->last;
- list->last = NULL;
- return new_l;
-}
-
-void *
-evas_object_list_append_relative(void *in_list,
- void *in_item,
- void *in_relative)
-{
- Evas_Object_List *list, *relative, *new_l;
-
- list = in_list;
- new_l = in_item;
- relative = in_relative;
- if (relative)
- {
- if (relative->next)
- {
- new_l->next = relative->next;
- relative->next->prev = new_l;
- }
- else
- new_l->next = NULL;
-
- relative->next = new_l;
- new_l->prev = relative;
- if (!new_l->next)
- list->last = new_l;
-
- return list;
- }
-
- return evas_object_list_append(list, new_l);
-}
-
-void *
-evas_object_list_prepend_relative(void *in_list,
- void *in_item,
- void *in_relative)
-{
- Evas_Object_List *list, *relative, *new_l;
-
- list = in_list;
- new_l = in_item;
- relative = in_relative;
- if (relative)
- {
- new_l->prev = relative->prev;
- new_l->next = relative;
- relative->prev = new_l;
- if (new_l->prev)
- {
- new_l->prev->next = new_l;
- if (!new_l->next)
- list->last = new_l;
-
- return list;
- }
- else
- {
- if (!new_l->next)
- new_l->last = new_l;
- else
- {
- new_l->last = list->last;
- list->last = NULL;
- }
-
- return new_l;
- }
- }
-
- return evas_object_list_prepend(list, new_l);
-}
-
-void *
-evas_object_list_remove(void *in_list, void *in_item)
-{
- Evas_Object_List *return_l;
- Evas_Object_List *list, *item;
-
- /* checkme */
- if(!in_list)
- return in_list;
-
- list = in_list;
- item = in_item;
- if (!item)
- return list;
-
- if (item->next)
- item->next->prev = item->prev;
-
- if (item->prev)
- {
- item->prev->next = item->next;
- return_l = list;
- }
- else
- {
- return_l = item->next;
- if (return_l)
- return_l->last = list->last;
- }
-
- if (item == list->last)
- list->last = item->prev;
-
- item->next = NULL;
- item->prev = NULL;
- return return_l;
-}
-
-void *
-evas_object_list_find(void *in_list, void *in_item)
-{
- Evas_Object_List *l;
- Evas_Object_List *list, *item;
-
- list = in_list;
- item = in_item;
- for (l = list; l; l = l->next)
- {
- if (l == item)
- return item;
- }
- return NULL;
-}
diff --git a/src/tests/eina/evas_stringshare.c b/src/tests/eina/evas_stringshare.c
deleted file mode 100644
index 6e8797ca0..000000000
--- a/src/tests/eina/evas_stringshare.c
+++ /dev/null
@@ -1,275 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-
-#include "Evas_Data.h"
-
-typedef struct _Evas_Stringshare Evas_Stringshare;
-typedef struct _Evas_Stringshare_El Evas_Stringshare_El;
-
-struct _Evas_Stringshare
-{
- Evas_Stringshare_El *buckets[1024];
-};
-
-struct _Evas_Stringshare_El
-{
- Evas_Stringshare_El *next;
-// int op;
- int references;
-};
-
-static Evas_Stringshare share =
-{
- {
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
-
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
-
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
-
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL
- }
-};
-
-//static int op = 0;
-//static FILE *f = NULL;
-
-static inline int
-_evas_stringshare_hash_gen(const char *str, int *len)
-{
- unsigned int hash_num = 5381;
- const unsigned char *ptr;
-
- for (ptr = (const unsigned char *)str; *ptr; ptr++)
- {
- hash_num = (hash_num * 33) ^ *ptr;
- }
-
- hash_num &= 0x3ff;
- *len = ptr - (const unsigned char *)str;
- return (int)hash_num;
-}
-
-EAPI const char *
-evas_stringshare_add(const char *str)
-{
- int hash_num, slen;
- char *el_str;
- Evas_Stringshare_El *el, *pel = NULL;
-
- if (!str)
- {
- return NULL; // if (!f)
-
- }
-
-// {
-// char bf[256];
-// snprintf(bf, sizeof(bf), "strlog-%i", getpid());
-// f = fopen(bf, "w");
-// }
- hash_num = _evas_stringshare_hash_gen(str, &slen);
- for (el = share.buckets[hash_num]; el; pel = el, el = el->next)
- {
- el_str = ((char *)el) + sizeof(Evas_Stringshare_El);
- if (!strcmp(el_str, str))
- {
- if (pel)
- {
- pel->next = el->next;
- el->next = share.buckets[hash_num];
- share.buckets[hash_num] = el;
- }
-
- el->references++;
-// fprintf(f, "strings[%i] = str->add(strings[%i]);\n", el->op, el->op);
-// fflush(f);
- return el_str;
- }
- }
- if (!(el = malloc(sizeof(Evas_Stringshare_El) + slen + 1)))
- return NULL;
-
- el_str = ((char *)el) + sizeof(Evas_Stringshare_El);
- strcpy(el_str, str);
- el->references = 1;
- el->next = share.buckets[hash_num];
- share.buckets[hash_num] = el;
-// el->op = op;
-// fprintf(f, "strings[%i] = str->add(\"%s\");\n", el->op, el_str);
-// fflush(f);
-// op++;
- return el_str;
-}
-
-EAPI void
-evas_stringshare_del(const char *str)
-{
- int hash_num, slen;
- char *el_str;
- Evas_Stringshare_El *el, *pel = NULL;
-
- if (!str)
- return;
-
- hash_num = _evas_stringshare_hash_gen(str, &slen);
- for (el = share.buckets[hash_num]; el; pel = el, el = el->next)
- {
- el_str = ((char *)el) + sizeof(Evas_Stringshare_El);
- if (el_str == str)
- {
- el->references--;
-// fprintf(f, "str->del(strings[%i]);\n", el->op);
-// fflush(f);
- if (el->references == 0)
- {
- if (pel)
- pel->next = el->next;
- else
- share.buckets[hash_num] = el->next;
-
- free(el);
- }
- else if (pel)
- {
- pel->next = el->next;
- el->next = share.buckets[hash_num];
- share.buckets[hash_num] = el;
- }
-
- return;
- }
- }
- printf("EEEK trying to del non-shared stringshare \"%s\"\n", str);
- abort();
-}
diff --git a/src/tests/eina/strlog b/src/tests/eina/strlog
deleted file mode 100644
index d9fc2af19..000000000
--- a/src/tests/eina/strlog
+++ /dev/null
@@ -1,46999 +0,0 @@
-strings[0] = str->add("extensions");
-strings[1] = str->add("Extensions");
-strings[2] = str->add("enlightenment/extensions");
-strings[3] = str->add("modules");
-strings[4] = str->add("Modules");
-strings[5] = str->add("enlightenment/modules");
-strings[6] = str->add("default.edj");
-strings[7] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj");
-strings[8] = str->add("Desktop %i, %i");
-strings[9] = str->add("en_US.UTF-8");
-strings[10] = str->add("note");
-strings[11] = str->add("conf_interaction");
-strings[12] = str->add("fileman");
-strings[13] = str->add("conf_engine");
-strings[14] = str->add("conf_winlist");
-strings[15] = str->add("conf_window_manipulation");
-strings[16] = str->add("conf_window_focus");
-strings[17] = str->add("conf_window_display");
-strings[18] = str->add("conf_wallpaper");
-strings[19] = str->add("conf_transitions");
-strings[20] = str->add("conf_theme");
-strings[21] = str->add("conf_startup");
-strings[22] = str->add("conf_shelves");
-strings[23] = str->add("conf_screensaver");
-strings[24] = str->add("conf_profiles");
-strings[25] = str->add("conf_performance");
-strings[26] = str->add("conf_paths");
-strings[27] = str->add("conf_mouse_cursor");
-strings[28] = str->add("conf_mousebindings");
-strings[29] = str->add("conf_mouse");
-strings[30] = str->add("conf_mime");
-strings[31] = str->add("conf_menus");
-strings[32] = str->add("conf_keybindings");
-strings[33] = str->add("conf_intl");
-strings[34] = str->add("conf_imc");
-strings[35] = str->add("conf_icon_theme");
-strings[36] = str->add("conf_fonts");
-strings[37] = str->add("conf_exebuf");
-strings[38] = str->add("conf_dpms");
-strings[39] = str->add("conf_display");
-strings[40] = str->add("conf_dialogs");
-strings[41] = str->add("conf_desks");
-strings[42] = str->add("conf_desklock");
-strings[43] = str->add("conf_desk");
-strings[44] = str->add("conf_colors");
-strings[45] = str->add("conf_clientlist");
-strings[46] = str->add("conf_borders");
-strings[47] = str->add("conf_applications");
-strings[48] = str->add("conf");
-strings[49] = str->add("winlist");
-strings[50] = str->add("exebuf");
-strings[51] = str->add("pager");
-strings[52] = str->add("temperature");
-strings[53] = str->add("cpufreq");
-strings[54] = str->add("battery");
-strings[55] = str->add("clock");
-strings[56] = str->add("dropshadow");
-strings[57] = str->add("ibox");
-strings[58] = str->add("ibar");
-strings[59] = str->add("start");
-strings[60] = str->add("gadman");
-strings[61] = str->add("default");
-strings[62] = str->add("Vera");
-strings[63] = str->add("theme");
-strings[64] = str->add("/home/cedric/.e/e/themes/b_and_w.edj");
-strings[65] = str->add("menu_show");
-strings[66] = str->add("main");
-strings[67] = str->add("window_move");
-strings[65] = str->add(strings[65]);
-strings[68] = str->add("clients");
-strings[69] = str->add("window_resize");
-strings[65] = str->add(strings[65]);
-strings[70] = str->add("favorites");
-strings[71] = str->add("window_menu");
-strings[72] = str->add("Left");
-strings[73] = str->add("desk_flip_by");
-strings[74] = str->add("-1 0");
-strings[75] = str->add("Right");
-strings[73] = str->add(strings[73]);
-strings[76] = str->add("1 0");
-strings[77] = str->add("Up");
-strings[73] = str->add(strings[73]);
-strings[78] = str->add("0 -1");
-strings[79] = str->add("Down");
-strings[73] = str->add(strings[73]);
-strings[80] = str->add("0 1");
-strings[77] = str->add(strings[77]);
-strings[81] = str->add("window_raise");
-strings[79] = str->add(strings[79]);
-strings[82] = str->add("window_lower");
-strings[83] = str->add("x");
-strings[84] = str->add("window_close");
-strings[85] = str->add("k");
-strings[86] = str->add("window_kill");
-strings[87] = str->add("w");
-strings[71] = str->add(strings[71]);
-strings[88] = str->add("s");
-strings[89] = str->add("window_sticky_toggle");
-strings[90] = str->add("i");
-strings[91] = str->add("window_iconic_toggle");
-strings[92] = str->add("f");
-strings[93] = str->add("window_maximized_toggle");
-strings[94] = str->add("F10");
-strings[93] = str->add(strings[93]);
-strings[95] = str->add("default vertical");
-strings[94] = str->add(strings[94]);
-strings[93] = str->add(strings[93]);
-strings[96] = str->add("default horizontal");
-strings[97] = str->add("r");
-strings[98] = str->add("window_shaded_toggle");
-strings[72] = str->add(strings[72]);
-strings[99] = str->add("desk_linear_flip_by");
-strings[100] = str->add("-1");
-strings[75] = str->add(strings[75]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add("1");
-strings[102] = str->add("F1");
-strings[103] = str->add("desk_linear_flip_to");
-strings[104] = str->add("0");
-strings[105] = str->add("F2");
-strings[103] = str->add(strings[103]);
-strings[101] = str->add(strings[101]);
-strings[106] = str->add("F3");
-strings[103] = str->add(strings[103]);
-strings[107] = str->add("2");
-strings[108] = str->add("F4");
-strings[103] = str->add(strings[103]);
-strings[109] = str->add("3");
-strings[110] = str->add("F5");
-strings[103] = str->add(strings[103]);
-strings[111] = str->add("4");
-strings[112] = str->add("F6");
-strings[103] = str->add(strings[103]);
-strings[113] = str->add("5");
-strings[114] = str->add("F7");
-strings[103] = str->add(strings[103]);
-strings[115] = str->add("6");
-strings[116] = str->add("F8");
-strings[103] = str->add(strings[103]);
-strings[117] = str->add("7");
-strings[118] = str->add("F9");
-strings[103] = str->add(strings[103]);
-strings[119] = str->add("8");
-strings[94] = str->add(strings[94]);
-strings[103] = str->add(strings[103]);
-strings[120] = str->add("9");
-strings[121] = str->add("F11");
-strings[103] = str->add(strings[103]);
-strings[122] = str->add("10");
-strings[123] = str->add("F12");
-strings[103] = str->add(strings[103]);
-strings[124] = str->add("11");
-strings[125] = str->add("m");
-strings[65] = str->add(strings[65]);
-strings[66] = str->add(strings[66]);
-strings[126] = str->add("a");
-strings[65] = str->add(strings[65]);
-strings[70] = str->add(strings[70]);
-strings[127] = str->add("Menu");
-strings[65] = str->add(strings[65]);
-strings[66] = str->add(strings[66]);
-strings[127] = str->add(strings[127]);
-strings[65] = str->add(strings[65]);
-strings[68] = str->add(strings[68]);
-strings[127] = str->add(strings[127]);
-strings[65] = str->add(strings[65]);
-strings[70] = str->add(strings[70]);
-strings[128] = str->add("Insert");
-strings[129] = str->add("exec");
-strings[130] = str->add("Eterm");
-strings[131] = str->add("Tab");
-strings[49] = str->add(strings[49]);
-strings[132] = str->add("next");
-strings[131] = str->add(strings[131]);
-strings[49] = str->add(strings[49]);
-strings[133] = str->add("prev");
-strings[134] = str->add("End");
-strings[135] = str->add("restart");
-strings[136] = str->add("Delete");
-strings[137] = str->add("logout");
-strings[138] = str->add("Escape");
-strings[50] = str->add(strings[50]);
-strings[139] = str->add("l");
-strings[140] = str->add("desk_lock");
-strings[141] = str->add("d");
-strings[142] = str->add("desk_deskshow_toggle");
-strings[72] = str->add(strings[72]);
-strings[143] = str->add("screen_send_by");
-strings[100] = str->add(strings[100]);
-strings[75] = str->add(strings[75]);
-strings[143] = str->add(strings[143]);
-strings[101] = str->add(strings[101]);
-strings[102] = str->add(strings[102]);
-strings[144] = str->add("screen_send_to");
-strings[104] = str->add(strings[104]);
-strings[105] = str->add(strings[105]);
-strings[144] = str->add(strings[144]);
-strings[101] = str->add(strings[101]);
-strings[106] = str->add(strings[106]);
-strings[144] = str->add(strings[144]);
-strings[107] = str->add(strings[107]);
-strings[108] = str->add(strings[108]);
-strings[144] = str->add(strings[144]);
-strings[109] = str->add(strings[109]);
-strings[145] = str->add("mouse,down,1,double");
-strings[146] = str->add("e.event.titlebar");
-strings[98] = str->add(strings[98]);
-strings[147] = str->add("up");
-strings[148] = str->add("mouse,down,2");
-strings[146] = str->add(strings[146]);
-strings[98] = str->add(strings[98]);
-strings[147] = str->add(strings[147]);
-strings[149] = str->add("mouse,wheel,?,1");
-strings[146] = str->add(strings[146]);
-strings[150] = str->add("window_shaded");
-strings[151] = str->add("0 up");
-strings[152] = str->add("mouse,wheel,?,-1");
-strings[146] = str->add(strings[146]);
-strings[150] = str->add(strings[150]);
-strings[153] = str->add("1 up");
-strings[154] = str->add("mouse,clicked,3");
-strings[146] = str->add(strings[146]);
-strings[71] = str->add(strings[71]);
-strings[155] = str->add("mouse,clicked,?");
-strings[156] = str->add("e.event.icon");
-strings[71] = str->add(strings[71]);
-strings[157] = str->add("mouse,clicked,[12]");
-strings[158] = str->add("e.event.close");
-strings[84] = str->add(strings[84]);
-strings[154] = str->add(strings[154]);
-strings[158] = str->add(strings[158]);
-strings[86] = str->add(strings[86]);
-strings[159] = str->add("mouse,clicked,1");
-strings[160] = str->add("e.event.maximize");
-strings[93] = str->add(strings[93]);
-strings[161] = str->add("mouse,clicked,2");
-strings[160] = str->add(strings[160]);
-strings[93] = str->add(strings[93]);
-strings[162] = str->add("smart");
-strings[154] = str->add(strings[154]);
-strings[160] = str->add(strings[160]);
-strings[93] = str->add(strings[93]);
-strings[163] = str->add("expand");
-strings[155] = str->add(strings[155]);
-strings[164] = str->add("e.event.minimize");
-strings[91] = str->add(strings[91]);
-strings[155] = str->add(strings[155]);
-strings[165] = str->add("e.event.shade");
-strings[98] = str->add(strings[98]);
-strings[147] = str->add(strings[147]);
-strings[155] = str->add(strings[155]);
-strings[166] = str->add("e.event.lower");
-strings[82] = str->add(strings[82]);
-strings[167] = str->add("mouse,down,1");
-strings[156] = str->add(strings[156]);
-strings[168] = str->add("window_drag_icon");
-strings[167] = str->add(strings[167]);
-strings[146] = str->add(strings[146]);
-strings[67] = str->add(strings[67]);
-strings[169] = str->add("mouse,up,1");
-strings[146] = str->add(strings[146]);
-strings[67] = str->add(strings[67]);
-strings[170] = str->add("end");
-strings[167] = str->add(strings[167]);
-strings[171] = str->add("e.event.resize.tl");
-strings[69] = str->add(strings[69]);
-strings[172] = str->add("tl");
-strings[167] = str->add(strings[167]);
-strings[173] = str->add("e.event.resize.t");
-strings[69] = str->add(strings[69]);
-strings[174] = str->add("t");
-strings[167] = str->add(strings[167]);
-strings[175] = str->add("e.event.resize.tr");
-strings[69] = str->add(strings[69]);
-strings[176] = str->add("tr");
-strings[167] = str->add(strings[167]);
-strings[177] = str->add("e.event.resize.r");
-strings[69] = str->add(strings[69]);
-strings[97] = str->add(strings[97]);
-strings[167] = str->add(strings[167]);
-strings[178] = str->add("e.event.resize.br");
-strings[69] = str->add(strings[69]);
-strings[179] = str->add("br");
-strings[167] = str->add(strings[167]);
-strings[180] = str->add("e.event.resize.b");
-strings[69] = str->add(strings[69]);
-strings[181] = str->add("b");
-strings[167] = str->add(strings[167]);
-strings[182] = str->add("e.event.resize.bl");
-strings[69] = str->add(strings[69]);
-strings[183] = str->add("bl");
-strings[167] = str->add(strings[167]);
-strings[184] = str->add("e.event.resize.l");
-strings[69] = str->add(strings[69]);
-strings[139] = str->add(strings[139]);
-strings[169] = str->add(strings[169]);
-strings[185] = str->add("e.event.resize.*");
-strings[69] = str->add(strings[69]);
-strings[170] = str->add(strings[170]);
-strings[186] = str->add("mouse,down,3");
-strings[185] = str->add(strings[185]);
-strings[67] = str->add(strings[67]);
-strings[187] = str->add("mouse,up,3");
-strings[185] = str->add(strings[185]);
-strings[67] = str->add(strings[67]);
-strings[170] = str->add(strings[170]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[188] = str->add("vswipe");
-strings[189] = str->add("crossfade");
-strings[190] = str->add("E");
-strings[191] = str->add("_config_winlist_dialog...ADVANCED");
-strings[192] = str->add("Window List Settings");
-strings[193] = str->add("enlightenment -display :1.0");
-strings[190] = str->add(strings[190]);
-strings[194] = str->add("_config_focus_dialog...ADVANCED");
-strings[195] = str->add("Focus Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[196] = str->add("_config_window_manipulation_dialog...ADVANCED");
-strings[197] = str->add("Window Manipulation");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[198] = str->add("_config_keybindings_dialog...BASIC");
-strings[199] = str->add("Key Binding Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[200] = str->add("_fwin:://home/cedric/Videos");
-strings[201] = str->add("Videos");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[202] = str->add("_fwin:://home/cedric/Vidéos");
-strings[203] = str->add("Vidéos");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[204] = str->add("_fwin:://home/cedric/wav");
-strings[205] = str->add("wav");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[206] = str->add("_config_startup_dialog...BASIC");
-strings[207] = str->add("Startup Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[208] = str->add("_config_transitions_dialog...BASIC");
-strings[209] = str->add("Transition Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[210] = str->add("_config_cursor_dialog...ADVANCED");
-strings[211] = str->add("Cursor Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[212] = str->add("_config_fonts_dialog...ADVANCED");
-strings[213] = str->add("Font Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[214] = str->add("_config_color_classes_dialog...ADVANCED");
-strings[215] = str->add("Colors");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[216] = str->add("_config_imc_dialog...ADVANCED");
-strings[217] = str->add("Input Method Configuration");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[218] = str->add("_eap_exec_select_dialog");
-strings[219] = str->add("Select an Executable");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[220] = str->add("_desktop_editor_dialog...ADVANCED");
-strings[221] = str->add("Desktop Entry Editor");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[222] = str->add("_theme_web_dialog");
-strings[223] = str->add("[get-e.org] Download 2 images of 28");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[224] = str->add("_config_desks_dialog...ADVANCED");
-strings[225] = str->add("Virtual Desktops Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[226] = str->add("_config_theme_dialog...ADVANCED");
-strings[227] = str->add("Theme Selector");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[228] = str->add("_e_modules_gadman_config_dialog...BASIC");
-strings[229] = str->add("Gadgets Manager");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[230] = str->add("_config_intl_dialog...ADVANCED");
-strings[231] = str->add("Language Configuration");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[232] = str->add("_e_mod_pager_config_dialog...ADVANCED");
-strings[233] = str->add("Configuration du Pager");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[234] = str->add("_shelf_config_dialog...ADVANCED");
-strings[235] = str->add("Shelf Configuration");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[236] = str->add("_gadcon_config_dialog...BASIC");
-strings[237] = str->add("Shelf Contents");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[238] = str->add("_e_mod_temperature_config_dialog...ADVANCED");
-strings[239] = str->add("Configuration de la Température");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[240] = str->add("_e_mod_battery_config_dialog...ADVANCED");
-strings[241] = str->add("Configuration de la batterie");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[242] = str->add("_config_paths_dialog...BASIC");
-strings[243] = str->add("Configuration de dossiers de recherche");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[244] = str->add("_config_profiles_dialog...BASIC");
-strings[245] = str->add("Profile Selector");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[246] = str->add("_config_engine_dialog...BASIC");
-strings[247] = str->add("Engine Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[248] = str->add("_config_exebuf_dialog...ADVANCED");
-strings[249] = str->add("Paramètres de l'exécution de commande");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[250] = str->add("_config_performance_dialog...ADVANCED");
-strings[251] = str->add("Performance Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[252] = str->add("_config_config_interaction_dialog...BASIC");
-strings[253] = str->add("Interaction Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[254] = str->add("_dpms_capable_dialog");
-strings[255] = str->add("Affiché les informations sur la gestion d'énergie");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[256] = str->add("_config_screensaver_dialog...BASIC");
-strings[257] = str->add("Paramètres du verrouillage d'écran");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[258] = str->add("_config_desklock_dialog...BASIC");
-strings[259] = str->add("Paramètres de verrouillage d'écran");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[260] = str->add("_config_display_dialog...BASIC");
-strings[261] = str->add("Paramètre de résolution de l'écran");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[262] = str->add("_mousebind_getmouse_dialog");
-strings[263] = str->add("Séquence de raccourci-souris");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[264] = str->add("_config_mousebindings_dialog...BASIC");
-strings[265] = str->add("Mouse Binding Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[266] = str->add("_config_border_style_dialog...BASIC");
-strings[267] = str->add("Default Border Style");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[268] = str->add("_fwin:://home");
-strings[269] = str->add("home");
-strings[270] = str->add("/usr/devel/bin/enlightenment -display :1.0");
-strings[190] = str->add(strings[190]);
-strings[271] = str->add("_config_winlist_dialog...BASIC");
-strings[272] = str->add("Paramètres de la liste de fenêtres");
-strings[270] = str->add(strings[270]);
-strings[190] = str->add(strings[190]);
-strings[273] = str->add("_config_config_dialog_dialog...BASIC");
-strings[274] = str->add("Dialog Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[275] = str->add("_error_dialog");
-strings[276] = str->add("Error - no PAM support");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[277] = str->add("_shelf_config_dialog...BASIC");
-strings[278] = str->add("Configuration de gondole");
-strings[270] = str->add(strings[270]);
-strings[190] = str->add(strings[190]);
-strings[279] = str->add("_config_imc_dialog...BASIC");
-strings[280] = str->add("Configuration de la méthode de saisie");
-strings[270] = str->add(strings[270]);
-strings[190] = str->add(strings[190]);
-strings[281] = str->add("_e_mod_dropshadow_config_dialog...BASIC");
-strings[282] = str->add("Dropshadow Configuration");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[283] = str->add("_config_cursor_dialog...BASIC");
-strings[284] = str->add("Paramètres du curseur");
-strings[270] = str->add(strings[270]);
-strings[190] = str->add(strings[190]);
-strings[285] = str->add("_config_desks_dialog...BASIC");
-strings[286] = str->add("Configuration des Bureaux virtuels");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[287] = str->add("_config_fileman_dialog...BASIC");
-strings[288] = str->add("Fileman Settings");
-strings[270] = str->add(strings[270]);
-strings[190] = str->add(strings[190]);
-strings[289] = str->add("_fwin:://");
-strings[290] = str->add("Root");
-strings[270] = str->add(strings[270]);
-strings[190] = str->add(strings[190]);
-strings[291] = str->add("_fwin:://home/cedric/tmp");
-strings[292] = str->add("tmp");
-strings[270] = str->add(strings[270]);
-strings[190] = str->add(strings[190]);
-strings[293] = str->add("_fwin:://tmp");
-strings[294] = str->add("Temp");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[295] = str->add("_module_unload_dialog");
-strings[296] = str->add("Erreur de chargement du module");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[297] = str->add("_e_exec_run_error_dialog");
-strings[298] = str->add("Erreur d'exécution d'une application");
-strings[270] = str->add(strings[270]);
-strings[190] = str->add(strings[190]);
-strings[297] = str->add(strings[297]);
-strings[298] = str->add(strings[298]);
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[297] = str->add(strings[297]);
-strings[298] = str->add(strings[298]);
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[299] = str->add("_sys_logout");
-strings[300] = str->add("Logout in progress");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[301] = str->add("_logout_dialog");
-strings[302] = str->add("Are you sure you want to log out?");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[299] = str->add(strings[299]);
-strings[303] = str->add("Fermeture de votre session en cours");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[301] = str->add(strings[301]);
-strings[304] = str->add("Êtes-vous sur de vouloir fermer votre session ?");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[299] = str->add(strings[299]);
-strings[303] = str->add(strings[303]);
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[301] = str->add(strings[301]);
-strings[304] = str->add(strings[304]);
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[305] = str->add("_configure");
-strings[306] = str->add("Enlightenment Configuration");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[307] = str->add("_confirm_dialog");
-strings[308] = str->add("Êtes-vous sûr de vouloir supprimer cette gondole ?");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[309] = str->add("_config_shelf_dialog...BASIC");
-strings[310] = str->add("Shelf Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[311] = str->add("_config_modules_dialog...BASIC");
-strings[312] = str->add("Module Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[313] = str->add("_config_icon_theme_dialog...BASIC");
-strings[314] = str->add("Icon Theme Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[315] = str->add("_config_color_classes_dialog...BASIC");
-strings[316] = str->add("Couleurs");
-strings[270] = str->add(strings[270]);
-strings[190] = str->add(strings[190]);
-strings[317] = str->add("_config_wallpaper_dialog...ADVANCED");
-strings[318] = str->add("Wallpaper Settings");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[319] = str->add("_fwin:://home/cedric");
-strings[320] = str->add("Home Directory");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[321] = str->add("_fwin:://home/cedric/.e/e/fileman/favorites");
-strings[70] = str->add(strings[70]);
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[322] = str->add("_theme_import_dialog");
-strings[323] = str->add("Select a Theme...");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[324] = str->add("_wallpaper_web_dialog");
-strings[325] = str->add("[get-e.org - Static] Choose an image from list");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[326] = str->add("_config_wallpaper_dialog...BASIC");
-strings[327] = str->add("Paramètres de fond d'écran");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[305] = str->add(strings[305]);
-strings[328] = str->add("Configuration d'Enlightenment");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[299] = str->add(strings[299]);
-strings[303] = str->add(strings[303]);
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[301] = str->add(strings[301]);
-strings[304] = str->add(strings[304]);
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[329] = str->add("_theme_about");
-strings[330] = str->add("About This Theme");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[331] = str->add("_about");
-strings[332] = str->add("About Enlightenment");
-strings[193] = str->add(strings[193]);
-strings[190] = str->add(strings[190]);
-strings[333] = str->add("_config_theme_dialog...BASIC");
-strings[227] = str->add(strings[227]);
-strings[193] = str->add(strings[193]);
-strings[334] = str->add("xterm -hold -e");
-strings[335] = str->add("shelf");
-strings[59] = str->add(strings[59]);
-strings[59] = str->add(strings[59]);
-strings[336] = str->add("plain");
-strings[51] = str->add(strings[51]);
-strings[51] = str->add(strings[51]);
-strings[337] = str->add("inset");
-strings[57] = str->add(strings[57]);
-strings[338] = str->add("ibox.1");
-strings[337] = str->add(strings[337]);
-strings[58] = str->add(strings[58]);
-strings[339] = str->add("ibar.1");
-strings[337] = str->add(strings[337]);
-strings[52] = str->add(strings[52]);
-strings[340] = str->add("temperature.1");
-strings[336] = str->add(strings[336]);
-strings[53] = str->add(strings[53]);
-strings[53] = str->add(strings[53]);
-strings[336] = str->add(strings[336]);
-strings[54] = str->add(strings[54]);
-strings[54] = str->add(strings[54]);
-strings[336] = str->add(strings[336]);
-strings[55] = str->add(strings[55]);
-strings[55] = str->add(strings[55]);
-strings[336] = str->add(strings[336]);
-strings[10] = str->add(strings[10]);
-strings[341] = str->add("note.1");
-strings[336] = str->add(strings[336]);
-strings[335] = str->add(strings[335]);
-strings[51] = str->add(strings[51]);
-strings[57] = str->add(strings[57]);
-strings[335] = str->add(strings[335]);
-strings[51] = str->add(strings[51]);
-strings[57] = str->add(strings[57]);
-strings[335] = str->add(strings[335]);
-strings[51] = str->add(strings[51]);
-strings[57] = str->add(strings[57]);
-strings[342] = str->add("slipshelf_extra");
-strings[343] = str->add("slipshelf");
-strings[60] = str->add(strings[60]);
-strings[344] = str->add("gadman_top");
-strings[335] = str->add(strings[335]);
-strings[61] = str->add(strings[61]);
-strings[335] = str->add(strings[335]);
-strings[61] = str->add(strings[61]);
-strings[335] = str->add(strings[335]);
-strings[61] = str->add(strings[61]);
-strings[335] = str->add(strings[335]);
-strings[61] = str->add(strings[61]);
-strings[345] = str->add("Tango");
-strings[346] = str->add("~/");
-strings[347] = str->add("/");
-strings[61] = str->add(strings[61]);
-strings[348] = str->add("image/jpeg");
-strings[349] = str->add("THUMB");
-strings[350] = str->add("image/png");
-strings[349] = str->add(strings[349]);
-strings[351] = str->add("image/x-pixmap");
-strings[349] = str->add(strings[349]);
-strings[352] = str->add("image/x-xpixmap");
-strings[349] = str->add(strings[349]);
-strings[353] = str->add("image/svg+xml");
-strings[349] = str->add(strings[349]);
-strings[354] = str->add("image/gif");
-strings[349] = str->add(strings[349]);
-strings[355] = str->add("image/tiff");
-strings[349] = str->add(strings[349]);
-strings[356] = str->add("application/x-desktop");
-strings[357] = str->add("DESKTOP");
-strings[358] = str->add("/usr/devel/share/enlightenment/data");
-strings[359] = str->add("/home/cedric/.e/e/images");
-strings[360] = str->add("/usr/devel/share/enlightenment/data/images");
-strings[361] = str->add("/home/cedric/.e/e/fonts");
-strings[362] = str->add("/usr/devel/share/enlightenment/data/fonts");
-strings[363] = str->add("/home/cedric/.e/e/themes");
-strings[364] = str->add("/usr/devel/share/enlightenment/data/themes");
-strings[365] = str->add("/home/cedric/.e/e/icons");
-strings[366] = str->add("/usr/devel/share/enlightenment/data/icons");
-strings[367] = str->add("/home/cedric/.e/e/init");
-strings[368] = str->add("/usr/devel/share/enlightenment/data/init");
-strings[369] = str->add("/home/cedric/.e/e/modules");
-strings[370] = str->add("/usr/devel/lib/enlightenment/modules");
-strings[371] = str->add("/usr/devel/lib/enlightenment/modules_extra");
-strings[372] = str->add("/home/cedric/.e/e/backgrounds");
-strings[373] = str->add("/home/cedric/.e/e/locale");
-strings[374] = str->add("/usr/devel/share/locale");
-strings[61] = str->add(strings[61]);
-strings[62] = str->add(strings[62]);
-strings[375] = str->add("Set As Theme");
-strings[376] = str->add("enlightenment/themes");
-strings[377] = str->add("base");
-strings[6] = str->add(strings[6]);
-strings[6] = str->add(strings[6]);
-strings[378] = str->add("base/theme");
-strings[64] = str->add(strings[64]);
-strings[64] = str->add(strings[64]);
-strings[64] = str->add(strings[64]);
-strings[379] = str->add("Sans:style=Bold,Edje-Vera-Bold");
-strings[380] = str->add("tb_plain");
-strings[381] = str->add("align=center valign=center color=#fff style=soft_shadow shadow_color=#0000001f wrap=word");
-strings[382] = str->add("\n");
-strings[379] = str->add(strings[379]);
-strings[383] = str->add("tb_light");
-strings[384] = str->add("+");
-strings[385] = str->add("Sans,Edje-Vera");
-strings[380] = str->add(strings[380]);
-strings[386] = str->add("align=center color=#000 style=shadow shadow_color=#ffffff80 wrap=word");
-strings[382] = str->add(strings[382]);
-strings[379] = str->add(strings[379]);
-strings[383] = str->add(strings[383]);
-strings[384] = str->add(strings[384]);
-strings[385] = str->add(strings[385]);
-strings[387] = str->add("align=left color=#000 style=shadow shadow_color=#ffffff80 wrap=word");
-strings[379] = str->add(strings[379]);
-strings[388] = str->add("+ style=soft_shadow color=#fff shadow_color=#00000021");
-strings[389] = str->add("-");
-strings[379] = str->add(strings[379]);
-strings[390] = str->add("+ style=glow color=#fff glow2_color=#333 glow_color=#b01010");
-strings[379] = str->add(strings[379]);
-strings[384] = str->add(strings[384]);
-strings[382] = str->add(strings[382]);
-strings[391] = str->add("e/desktop/background");
-strings[392] = str->add("e/widgets/border/default/border");
-strings[393] = str->add("e/widgets/border/shaped/border");
-strings[394] = str->add("e/widgets/border/noresize/border");
-strings[395] = str->add("e/widgets/border/dialog/border");
-strings[396] = str->add("e/widgets/border/noresize_dialog/border");
-strings[397] = str->add("e/widgets/border/pixel/border");
-strings[398] = str->add("e/pointer/enlightenment/default/color");
-strings[399] = str->add("e/pointer/enlightenment/default/mono");
-strings[400] = str->add("e/widgets/menu/default/background");
-strings[401] = str->add("e/widgets/menu/default/separator");
-strings[402] = str->add("e/widgets/menu/default/item_bg");
-strings[403] = str->add("e/widgets/menu/default/icon");
-strings[404] = str->add("e/widgets/menu/default/label");
-strings[405] = str->add("e/widgets/menu/default/submenu");
-strings[406] = str->add("e/widgets/menu/default/check");
-strings[407] = str->add("e/widgets/menu/default/radio");
-strings[408] = str->add("e/shelf/default/base");
-strings[409] = str->add("e/shelf/default/inset");
-strings[410] = str->add("e/shelf/default/plain");
-strings[411] = str->add("e/shelf/invisible/base");
-strings[412] = str->add("e/shelf/invisible/inset");
-strings[413] = str->add("e/shelf/invisible/plain");
-strings[414] = str->add("e/shelf/alternate/base");
-strings[415] = str->add("e/shelf/alternate/inset");
-strings[416] = str->add("e/shelf/alternate/plain");
-strings[417] = str->add("e/modules/start/main");
-strings[418] = str->add("e/modules/pager/popup");
-strings[419] = str->add("e/modules/pager/desk");
-strings[420] = str->add("e/modules/pager/window");
-strings[421] = str->add("e/modules/battery/main");
-strings[422] = str->add("e/modules/temperature/main");
-strings[423] = str->add("e/modules/clock/main");
-strings[424] = str->add("e/modules/cpufreq/main");
-strings[425] = str->add("e/widgets/winlist/main");
-strings[426] = str->add("e/widgets/winlist/item");
-strings[427] = str->add("e/modules/mixer/main");
-strings[428] = str->add("e/sys/logout");
-strings[429] = str->add("e/widgets/dialog/main");
-strings[430] = str->add("e/widgets/dialog/text");
-strings[431] = str->add("e/widgets/configure/main");
-strings[432] = str->add("e/widgets/border/default/move");
-strings[433] = str->add("e/widgets/border/default/resize");
-strings[434] = str->add("e/transpreview/0");
-strings[435] = str->add("e/transpreview/1");
-strings[436] = str->add("e/transitions/crossfade");
-strings[437] = str->add("e/transitions/vswipe");
-strings[438] = str->add("e/widgets/check");
-strings[439] = str->add("e/widgets/check_icon");
-strings[440] = str->add("e/widgets/radio");
-strings[441] = str->add("e/widgets/radio_icon");
-strings[442] = str->add("e/widgets/button");
-strings[443] = str->add("e/widgets/scrollframe");
-strings[444] = str->add("e/widgets/ilist");
-strings[445] = str->add("e/widgets/ilist_odd");
-strings[446] = str->add("e/widgets/ilist_header");
-strings[447] = str->add("e/widgets/ilist_header_odd");
-strings[448] = str->add("e/widgets/entry");
-strings[449] = str->add("e/widgets/entry/text");
-strings[450] = str->add("e/widgets/entry/cursor");
-strings[451] = str->add("e/widgets/entry/selection");
-strings[452] = str->add("e/widgets/preview");
-strings[453] = str->add("e/widgets/deskpreview/desk");
-strings[454] = str->add("e/widgets/color_well");
-strings[455] = str->add("e/widgets/spectrum");
-strings[456] = str->add("e/widgets/cslider");
-strings[457] = str->add("e/widgets/slider_vertical");
-strings[458] = str->add("e/widgets/slider_horizontal");
-strings[459] = str->add("e/widgets/frame");
-strings[460] = str->add("e/widgets/label");
-strings[461] = str->add("e/widgets/fontpreview");
-strings[462] = str->add("e/widgets/textblock");
-strings[463] = str->add("e/widgets/menu/default/submenu_bg");
-strings[464] = str->add("e/sys/halt");
-strings[465] = str->add("e/sys/reboot");
-strings[466] = str->add("e/sys/suspend");
-strings[467] = str->add("e/sys/hibernate");
-strings[468] = str->add("e/widgets/gradpreview");
-strings[189] = str->add(strings[189]);
-strings[188] = str->add(strings[188]);
-str->del(strings[391]);
-str->del(strings[392]);
-str->del(strings[393]);
-str->del(strings[394]);
-str->del(strings[395]);
-str->del(strings[396]);
-str->del(strings[397]);
-str->del(strings[398]);
-str->del(strings[399]);
-str->del(strings[400]);
-str->del(strings[401]);
-str->del(strings[402]);
-str->del(strings[403]);
-str->del(strings[404]);
-str->del(strings[405]);
-str->del(strings[406]);
-str->del(strings[407]);
-str->del(strings[408]);
-str->del(strings[409]);
-str->del(strings[410]);
-str->del(strings[411]);
-str->del(strings[412]);
-str->del(strings[413]);
-str->del(strings[414]);
-str->del(strings[415]);
-str->del(strings[416]);
-str->del(strings[417]);
-str->del(strings[418]);
-str->del(strings[419]);
-str->del(strings[420]);
-str->del(strings[421]);
-str->del(strings[422]);
-str->del(strings[423]);
-str->del(strings[424]);
-str->del(strings[425]);
-str->del(strings[426]);
-str->del(strings[427]);
-str->del(strings[428]);
-str->del(strings[429]);
-str->del(strings[430]);
-str->del(strings[431]);
-str->del(strings[432]);
-str->del(strings[433]);
-str->del(strings[434]);
-str->del(strings[435]);
-str->del(strings[436]);
-str->del(strings[437]);
-str->del(strings[438]);
-str->del(strings[439]);
-str->del(strings[440]);
-str->del(strings[441]);
-str->del(strings[442]);
-str->del(strings[443]);
-str->del(strings[444]);
-str->del(strings[445]);
-str->del(strings[446]);
-str->del(strings[447]);
-str->del(strings[448]);
-str->del(strings[449]);
-str->del(strings[450]);
-str->del(strings[451]);
-str->del(strings[452]);
-str->del(strings[453]);
-str->del(strings[454]);
-str->del(strings[455]);
-str->del(strings[456]);
-str->del(strings[457]);
-str->del(strings[458]);
-str->del(strings[459]);
-str->del(strings[460]);
-str->del(strings[461]);
-str->del(strings[462]);
-str->del(strings[463]);
-str->del(strings[464]);
-str->del(strings[465]);
-str->del(strings[466]);
-str->del(strings[467]);
-str->del(strings[468]);
-strings[469] = str->add("/usr/devel/share/enlightenment/data/themes/default.edj");
-strings[469] = str->add(strings[469]);
-strings[469] = str->add(strings[469]);
-strings[470] = str->add("fonts/Edje-Vera");
-strings[380] = str->add(strings[380]);
-strings[387] = str->add(strings[387]);
-strings[382] = str->add(strings[382]);
-strings[471] = str->add("fonts/Edje-Vera-Bold");
-strings[383] = str->add(strings[383]);
-strings[472] = str->add("+ style=glow color=#fff glow2_color=#fe87 glow_color=#fa14");
-strings[470] = str->add(strings[470]);
-strings[380] = str->add(strings[380]);
-strings[386] = str->add(strings[386]);
-strings[382] = str->add(strings[382]);
-strings[471] = str->add(strings[471]);
-strings[383] = str->add(strings[383]);
-strings[472] = str->add(strings[472]);
-strings[470] = str->add(strings[470]);
-strings[380] = str->add(strings[380]);
-strings[386] = str->add(strings[386]);
-strings[382] = str->add(strings[382]);
-strings[471] = str->add(strings[471]);
-strings[383] = str->add(strings[383]);
-strings[472] = str->add(strings[472]);
-strings[471] = str->add(strings[471]);
-strings[473] = str->add("tb_big");
-strings[474] = str->add("+ style=soft_shadow color=#fff shadow_color=#00000020");
-strings[475] = str->add("- \n \n");
-strings[470] = str->add(strings[470]);
-strings[476] = str->add("style=glow color=#fff glow2_color=#fe87 glow_color=#fa14 align=center wrap=word");
-strings[382] = str->add(strings[382]);
-strings[471] = str->add(strings[471]);
-strings[384] = str->add(strings[384]);
-strings[470] = str->add(strings[470]);
-strings[477] = str->add("+ style=none color=#0002");
-strings[470] = str->add(strings[470]);
-strings[387] = str->add(strings[387]);
-strings[382] = str->add(strings[382]);
-strings[471] = str->add(strings[471]);
-strings[472] = str->add(strings[472]);
-strings[471] = str->add(strings[471]);
-strings[474] = str->add(strings[474]);
-strings[475] = str->add(strings[475]);
-strings[470] = str->add(strings[470]);
-strings[387] = str->add(strings[387]);
-strings[382] = str->add(strings[382]);
-strings[471] = str->add(strings[471]);
-strings[472] = str->add(strings[472]);
-strings[471] = str->add(strings[471]);
-strings[384] = str->add(strings[384]);
-strings[471] = str->add(strings[471]);
-strings[474] = str->add(strings[474]);
-strings[475] = str->add(strings[475]);
-strings[471] = str->add(strings[471]);
-strings[478] = str->add("tb_large");
-strings[479] = str->add("align=center color=#fff style=soft_shadow shadow_color=#0002 wrap=word");
-strings[382] = str->add(strings[382]);
-strings[471] = str->add(strings[471]);
-strings[480] = str->add("tb_large_light");
-strings[472] = str->add(strings[472]);
-strings[470] = str->add(strings[470]);
-strings[471] = str->add(strings[471]);
-strings[481] = str->add("e/desktop/background");
-strings[482] = str->add("e/modules/battery/main");
-strings[483] = str->add("e/modules/battery/popup");
-strings[484] = str->add("e/widgets/border/default/border");
-strings[485] = str->add("e/widgets/border/shaped/border");
-strings[486] = str->add("e/widgets/border/noresize/border");
-strings[487] = str->add("e/widgets/border/dialog/border");
-strings[488] = str->add("e/widgets/border/noresize_dialog/border");
-strings[489] = str->add("e/widgets/border/pixel/border");
-strings[490] = str->add("e/widgets/border/default/close");
-strings[491] = str->add("e/widgets/border/default/minimize");
-strings[492] = str->add("e/widgets/border/default/maximize");
-strings[493] = str->add("e/widgets/border/default/shade");
-strings[494] = str->add("e/widgets/border/default/stick");
-strings[495] = str->add("e/widgets/border/default/kill");
-strings[496] = str->add("e/widgets/border/default/locks");
-strings[497] = str->add("e/widgets/border/default/locks_user");
-strings[498] = str->add("e/widgets/border/default/locks_application");
-strings[499] = str->add("e/widgets/border/default/borderless");
-strings[500] = str->add("e/widgets/border/default/fullscreen");
-strings[501] = str->add("e/widgets/border/default/remember");
-strings[502] = str->add("e/widgets/border/default/skip_winlist");
-strings[503] = str->add("e/widgets/border/default/skip");
-strings[504] = str->add("e/widgets/border/default/skip_pager");
-strings[505] = str->add("e/widgets/border/default/sendto");
-strings[506] = str->add("e/widgets/border/default/stacking");
-strings[507] = str->add("e/widgets/border/default/stack_on_top");
-strings[508] = str->add("e/widgets/border/default/stack_normal");
-strings[509] = str->add("e/widgets/border/default/stack_below");
-strings[510] = str->add("e/widgets/border/default/properties");
-strings[511] = str->add("e/modules/clock/main");
-strings[512] = str->add("e/gadman/control");
-strings[513] = str->add("e/gadman/popup");
-strings[514] = str->add("e/gadman/full_bg");
-strings[515] = str->add("e/gadman/frame");
-strings[516] = str->add("e/modules/ibar/icon");
-strings[517] = str->add("e/modules/ibar/icon_overlay");
-strings[518] = str->add("e/modules/ibar/drop");
-strings[519] = str->add("e/modules/ibar/drop_overlay");
-strings[520] = str->add("e/widgets/menu/default/background");
-strings[521] = str->add("e/widgets/menu/default/separator");
-strings[522] = str->add("e/widgets/menu/default/item_bg");
-strings[523] = str->add("e/widgets/menu/default/submenu_bg");
-strings[524] = str->add("e/widgets/menu/default/check");
-strings[525] = str->add("e/widgets/menu/default/radio");
-strings[526] = str->add("e/widgets/menu/default/icon");
-strings[527] = str->add("e/widgets/menu/default/label");
-strings[528] = str->add("e/widgets/menu/default/submenu");
-strings[529] = str->add("e/modules/pager/popup");
-strings[530] = str->add("e/modules/pager/desk");
-strings[531] = str->add("e/modules/pager/window");
-strings[532] = str->add("e/widgets/border/default/resize");
-strings[533] = str->add("e/widgets/border/default/move");
-strings[534] = str->add("e/modules/temperature/main");
-strings[535] = str->add("e/error/main");
-strings[536] = str->add("e/modules/cpufreq/main");
-strings[537] = str->add("e/modules/ibox/icon");
-strings[538] = str->add("e/modules/ibox/icon_overlay");
-strings[539] = str->add("e/modules/ibox/drop");
-strings[540] = str->add("e/modules/ibox/drop_overlay");
-strings[541] = str->add("e/modules/start/main");
-strings[542] = str->add("e/widgets/winlist/main");
-strings[543] = str->add("e/widgets/winlist/item");
-strings[544] = str->add("e/transpreview/0");
-strings[545] = str->add("e/transpreview/1");
-strings[546] = str->add("e/transitions/crossfade");
-strings[547] = str->add("e/transitions/vswipe");
-strings[548] = str->add("e/widgets/dialog/main");
-strings[549] = str->add("e/widgets/dialog/text");
-strings[550] = str->add("e/widgets/configure/main");
-strings[551] = str->add("e/icons/enlightenment/e");
-strings[552] = str->add("e/icons/enlightenment/reset");
-strings[553] = str->add("e/icons/enlightenment/exit");
-strings[554] = str->add("e/icons/enlightenment/logout");
-strings[555] = str->add("e/icons/enlightenment/halt");
-strings[556] = str->add("e/icons/enlightenment/reboot");
-strings[557] = str->add("e/icons/enlightenment/suspend");
-strings[558] = str->add("e/icons/enlightenment/hibernate");
-strings[559] = str->add("e/icons/enlightenment/screen_setup");
-strings[560] = str->add("e/icons/enlightenment/themes");
-strings[561] = str->add("e/icons/enlightenment/colors");
-strings[562] = str->add("e/icons/enlightenment/windows");
-strings[563] = str->add("e/icons/enlightenment/lost_windows");
-strings[564] = str->add("e/icons/enlightenment/focus");
-strings[565] = str->add("e/icons/enlightenment/modules");
-strings[566] = str->add("e/icons/enlightenment/favorites");
-strings[567] = str->add("e/icons/enlightenment/desktops");
-strings[568] = str->add("e/icons/enlightenment/configuration");
-strings[569] = str->add("e/icons/enlightenment/intl");
-strings[570] = str->add("e/icons/enlightenment/system");
-strings[571] = str->add("e/icons/enlightenment/run");
-strings[572] = str->add("e/icons/enlightenment/directories");
-strings[573] = str->add("e/icons/enlightenment/fileman");
-strings[574] = str->add("e/icons/enlightenment/unknown");
-strings[575] = str->add("e/icons/widget/new_dialog");
-strings[576] = str->add("e/icons/widget/up_arrow");
-strings[577] = str->add("e/icons/widget/down_arrow");
-strings[578] = str->add("e/icons/widget/up_dir");
-strings[579] = str->add("e/icons/enlightenment/mouse");
-strings[580] = str->add("e/icons/enlightenment/mouse_left");
-strings[581] = str->add("e/icons/enlightenment/mouse_middle");
-strings[582] = str->add("e/icons/enlightenment/mouse_right");
-strings[583] = str->add("e/icons/enlightenment/mouse_extra");
-strings[584] = str->add("e/icons/enlightenment/mouse_wheel");
-strings[585] = str->add("e/icons/enlightenment/mouse_clean");
-strings[586] = str->add("e/icons/enlightenment/keys");
-strings[587] = str->add("e/icons/enlightenment/desklock");
-strings[588] = str->add("e/icons/enlightenment/desklock_menu");
-strings[589] = str->add("e/icons/enlightenment/regenerate_menus");
-strings[590] = str->add("e/icons/enlightenment/screen_resolution");
-strings[591] = str->add("e/icons/enlightenment/shelf");
-strings[592] = str->add("e/icons/enlightenment/fonts");
-strings[593] = str->add("e/icons/enlightenment/background");
-strings[594] = str->add("e/icons/enlightenment/icon_theme");
-strings[595] = str->add("e/icons/enlightenment/applications");
-strings[596] = str->add("e/icons/enlightenment/transitions");
-strings[597] = str->add("e/icons/enlightenment/performance");
-strings[598] = str->add("e/icons/enlightenment/startup");
-strings[599] = str->add("e/icons/enlightenment/winlist");
-strings[600] = str->add("e/icons/enlightenment/window_manipulation");
-strings[601] = str->add("e/icons/enlightenment/menus");
-strings[602] = str->add("e/icons/enlightenment/screen_normal");
-strings[603] = str->add("e/icons/enlightenment/screen_around");
-strings[604] = str->add("e/icons/enlightenment/screen_left");
-strings[605] = str->add("e/icons/enlightenment/screen_right");
-strings[606] = str->add("e/icons/enlightenment/screen_vflip");
-strings[607] = str->add("e/icons/enlightenment/screen_hflip");
-strings[608] = str->add("e/icons/enlightenment/shelf_position_bottom");
-strings[609] = str->add("e/icons/enlightenment/shelf_position_bottom_left");
-strings[610] = str->add("e/icons/enlightenment/shelf_position_bottom_right");
-strings[611] = str->add("e/icons/enlightenment/shelf_position_top");
-strings[612] = str->add("e/icons/enlightenment/shelf_position_top_left");
-strings[613] = str->add("e/icons/enlightenment/shelf_position_top_right");
-strings[614] = str->add("e/icons/enlightenment/shelf_position_left");
-strings[615] = str->add("e/icons/enlightenment/shelf_position_left_top");
-strings[616] = str->add("e/icons/enlightenment/shelf_position_left_bottom");
-strings[617] = str->add("e/icons/enlightenment/shelf_position_right");
-strings[618] = str->add("e/icons/enlightenment/shelf_position_right_top");
-strings[619] = str->add("e/icons/enlightenment/shelf_position_right_bottom");
-strings[620] = str->add("e/icons/enlightenment/shelf_bottom_desk");
-strings[621] = str->add("e/icons/enlightenment/shelf_custom");
-strings[622] = str->add("e/icons/enlightenment/shelf_dock");
-strings[623] = str->add("e/icons/enlightenment/shelf_menu_bar");
-strings[624] = str->add("e/icons/enlightenment/shelf_panel");
-strings[625] = str->add("e/icons/enlightenment/shelf_top_desk");
-strings[626] = str->add("e/icons/enlightenment/wallpaper_stretch");
-strings[627] = str->add("e/icons/enlightenment/wallpaper_tile");
-strings[628] = str->add("e/icons/enlightenment/wallpaper_center");
-strings[629] = str->add("e/icons/enlightenment/wallpaper_scale_aspect_in");
-strings[630] = str->add("e/icons/enlightenment/wallpaper_scale_aspect_out");
-strings[631] = str->add("e/icons/enlightenment/gradient_h");
-strings[632] = str->add("e/icons/enlightenment/gradient_v");
-strings[633] = str->add("e/icons/enlightenment/gradient_du");
-strings[634] = str->add("e/icons/enlightenment/gradient_dd");
-strings[635] = str->add("e/icons/enlightenment/gradient_rad");
-strings[636] = str->add("e/icons/enlightenment/advanced");
-strings[637] = str->add("e/icons/enlightenment/behavior");
-strings[638] = str->add("e/icons/enlightenment/appearance");
-strings[639] = str->add("e/icons/enlightenment/extensions");
-strings[640] = str->add("e/icons/enlightenment/imc");
-strings[641] = str->add("e/icons/enlightenment/file_icons");
-strings[642] = str->add("e/icons/enlightenment/menu_settings");
-strings[643] = str->add("e/icons/enlightenment/ibar_applications");
-strings[644] = str->add("e/icons/enlightenment/restart_applications");
-strings[645] = str->add("e/icons/enlightenment/startup_applications");
-strings[646] = str->add("e/icons/enlightenment/power_management");
-strings[647] = str->add("e/icons/enlightenment/screensaver");
-strings[648] = str->add("e/icons/enlightenment/window_remembers");
-strings[649] = str->add("e/pointer/enlightenment/default/color");
-strings[650] = str->add("e/pointer/enlightenment/default/mono");
-strings[651] = str->add("e/widgets/about/main");
-strings[652] = str->add("e/theme/about");
-strings[653] = str->add("e/widgets/entry");
-strings[654] = str->add("e/widgets/entry/text");
-strings[655] = str->add("e/widgets/entry/cursor");
-strings[656] = str->add("e/widgets/entry/selection");
-strings[657] = str->add("e/fileman/default/window/main");
-strings[658] = str->add("e/fileman/default/scrollframe");
-strings[659] = str->add("e/fileman/default/list/variable");
-strings[660] = str->add("e/fileman/default/list_odd/variable");
-strings[661] = str->add("e/fileman/default/list/fixed");
-strings[662] = str->add("e/fileman/default/list_odd/fixed");
-strings[663] = str->add("e/fileman/default/icon/fixed");
-strings[664] = str->add("e/fileman/default/icon/variable");
-strings[665] = str->add("e/fileman/default/overlay");
-strings[666] = str->add("e/fileman/default/list/drop_between");
-strings[667] = str->add("e/fileman/default/list/drop_in");
-strings[668] = str->add("e/fileman/desktop/scrollframe");
-strings[669] = str->add("e/fileman/desktop/icon/fixed");
-strings[670] = str->add("e/fileman/desktop/icon/variable");
-strings[671] = str->add("e/fileman/desktop/overlay");
-strings[672] = str->add("e/fileman/desktop/list/drop_between");
-strings[673] = str->add("e/fileman/desktop/list/drop_in");
-strings[674] = str->add("e/fileman/default/rubberband");
-strings[675] = str->add("e/icons/fileman/folder");
-strings[676] = str->add("e/icons/fileman/file");
-strings[677] = str->add("e/icons/fileman/home");
-strings[678] = str->add("e/icons/fileman/desktop");
-strings[679] = str->add("e/icons/fileman/hdd");
-strings[680] = str->add("e/icons/fileman/hd");
-strings[681] = str->add("e/icons/fileman/mime/application/pdf");
-strings[682] = str->add("e/icons/fileman/mime/text/x-csrc");
-strings[683] = str->add("e/icons/fileman/mime/text/x-chdr");
-strings[684] = str->add("e/icons/fileman/mime/application/x-object");
-strings[685] = str->add("e/icons/fileman/mime/application/x-shellscript");
-strings[686] = str->add("e/icons/fileman/mime/image/png");
-strings[687] = str->add("e/icons/fileman/mime/image/jpeg");
-strings[688] = str->add("e/icons/fileman/mime/video/x-msvideo");
-strings[689] = str->add("e/icons/fileman/mime/audio/mpeg");
-strings[690] = str->add("e/icons/fileman/mime/application/x-xcf");
-strings[691] = str->add("e/icons/fileman/mime/text/x-c++src");
-strings[692] = str->add("e/icons/fileman/mime/text/x-csharp");
-strings[693] = str->add("e/icons/fileman/mime/text/x-patch");
-strings[694] = str->add("e/icons/fileman/mime/application/msword");
-strings[695] = str->add("e/icons/fileman/mime/application/ogg");
-strings[696] = str->add("e/icons/fileman/mime/text/plain");
-strings[697] = str->add("e/icons/fileman/mime/application/x-bzip");
-strings[698] = str->add("e/icons/fileman/mime/application/x-deb");
-strings[699] = str->add("e/icons/fileman/mime/application/x-font-ttf");
-strings[700] = str->add("e/icons/fileman/mime/application/x-font-pcf");
-strings[701] = str->add("e/icons/fileman/mime/application/x-font-bdf");
-strings[702] = str->add("e/icons/fileman/mime/text/css");
-strings[703] = str->add("e/icons/fileman/mime/text/html");
-strings[703] = str->add(strings[703]);
-strings[704] = str->add("e/icons/fileman/mime/application/zip");
-strings[705] = str->add("e/icons/fileman/mime/application/x-gzip");
-strings[706] = str->add("e/icons/fileman/mime/application/x-bzip-compressed-tar");
-strings[707] = str->add("e/icons/fileman/mime/application/x-bzip2-compressed-tar");
-strings[708] = str->add("e/icons/fileman/mime/application/x-compressed-tar");
-strings[709] = str->add("e/icons/fileman/mime/application/x-tar");
-strings[710] = str->add("e/icons/fileman/mime/application/x-rar");
-strings[711] = str->add("e/icons/fileman/mime/video/mpeg");
-strings[712] = str->add("e/icons/fileman/mime/video");
-strings[713] = str->add("e/icons/fileman/mime/text");
-strings[714] = str->add("e/icons/fileman/mime/image");
-strings[715] = str->add("e/icons/fileman/mime/audio");
-strings[716] = str->add("e/fileman/default/button/open");
-strings[717] = str->add("e/fileman/default/button/copy");
-strings[718] = str->add("e/fileman/default/button/cut");
-strings[719] = str->add("e/fileman/default/button/paste");
-strings[720] = str->add("e/fileman/default/button/delete");
-strings[721] = str->add("e/fileman/default/button/rename");
-strings[722] = str->add("e/fileman/default/button/properties");
-strings[723] = str->add("e/fileman/default/button/arrange_name");
-strings[724] = str->add("e/fileman/default/button/arrange");
-strings[725] = str->add("e/fileman/default/button/arrange_time");
-strings[726] = str->add("e/fileman/default/button/new");
-strings[727] = str->add("e/fileman/default/button/new_dir");
-strings[728] = str->add("e/fileman/default/button/refresh");
-strings[729] = str->add("e/fileman/default/button/view_details");
-strings[730] = str->add("e/fileman/default/button/view_name");
-strings[731] = str->add("e/fileman/default/button/view");
-strings[732] = str->add("e/fileman/default/button/select");
-strings[733] = str->add("e/widgets/fileselector/main");
-strings[734] = str->add("e/widgets/check");
-strings[735] = str->add("e/widgets/check_icon");
-strings[736] = str->add("e/widgets/radio");
-strings[737] = str->add("e/widgets/radio_icon");
-strings[738] = str->add("e/widgets/frame");
-strings[739] = str->add("e/widgets/button");
-strings[740] = str->add("e/widgets/label");
-strings[741] = str->add("e/widgets/scrollframe");
-strings[742] = str->add("e/widgets/ilist");
-strings[743] = str->add("e/widgets/ilist_odd");
-strings[744] = str->add("e/widgets/ilist_header");
-strings[745] = str->add("e/widgets/tlist");
-strings[746] = str->add("e/widgets/tlist_odd");
-strings[747] = str->add("e/widgets/slider_vertical");
-strings[748] = str->add("e/widgets/slider_horizontal");
-strings[749] = str->add("e/widgets/exebuf/main");
-strings[750] = str->add("e/widgets/exebuf/item");
-strings[751] = str->add("e/desklock/background");
-strings[752] = str->add("e/desklock/login_box");
-strings[753] = str->add("e/widgets/textblock");
-strings[754] = str->add("e/shelf/default/base");
-strings[755] = str->add("e/shelf/default/inset");
-strings[756] = str->add("e/shelf/default/plain");
-strings[757] = str->add("e/shelf/alternate/base");
-strings[758] = str->add("e/shelf/alternate/inset");
-strings[759] = str->add("e/shelf/alternate/plain");
-strings[760] = str->add("e/shelf/invisible/base");
-strings[761] = str->add("e/shelf/invisible/inset");
-strings[762] = str->add("e/shelf/invisible/plain");
-strings[763] = str->add("e/widgets/preview");
-strings[764] = str->add("e/widgets/cslider");
-strings[765] = str->add("e/widgets/spectrum");
-strings[766] = str->add("e/widgets/color_well");
-strings[767] = str->add("e/sys/logout");
-strings[768] = str->add("e/sys/halt");
-strings[769] = str->add("e/sys/reboot");
-strings[770] = str->add("e/sys/suspend");
-strings[771] = str->add("e/sys/hibernate");
-strings[772] = str->add("e/widgets/deskpreview/desk");
-strings[773] = str->add("e/widgets/fontpreview");
-strings[774] = str->add("e/wizard/extra");
-strings[775] = str->add("e/wizard/main");
-strings[776] = str->add("e/toolbar/default/base");
-strings[777] = str->add("e/widgets/slidesel");
-strings[778] = str->add("e/modules/mixer/main");
-strings[779] = str->add("e/modules/connman/main");
-strings[780] = str->add("e/modules/connman/network");
-strings[781] = str->add("e/widgets/gradpreview");
-str->del(strings[481]);
-str->del(strings[482]);
-str->del(strings[483]);
-str->del(strings[484]);
-str->del(strings[485]);
-str->del(strings[486]);
-str->del(strings[487]);
-str->del(strings[488]);
-str->del(strings[489]);
-str->del(strings[490]);
-str->del(strings[491]);
-str->del(strings[492]);
-str->del(strings[493]);
-str->del(strings[494]);
-str->del(strings[495]);
-str->del(strings[496]);
-str->del(strings[497]);
-str->del(strings[498]);
-str->del(strings[499]);
-str->del(strings[500]);
-str->del(strings[501]);
-str->del(strings[502]);
-str->del(strings[503]);
-str->del(strings[504]);
-str->del(strings[505]);
-str->del(strings[506]);
-str->del(strings[507]);
-str->del(strings[508]);
-str->del(strings[509]);
-str->del(strings[510]);
-str->del(strings[511]);
-str->del(strings[512]);
-str->del(strings[513]);
-str->del(strings[514]);
-str->del(strings[515]);
-str->del(strings[516]);
-str->del(strings[517]);
-str->del(strings[518]);
-str->del(strings[519]);
-str->del(strings[520]);
-str->del(strings[521]);
-str->del(strings[522]);
-str->del(strings[523]);
-str->del(strings[524]);
-str->del(strings[525]);
-str->del(strings[526]);
-str->del(strings[527]);
-str->del(strings[528]);
-str->del(strings[529]);
-str->del(strings[530]);
-str->del(strings[531]);
-str->del(strings[532]);
-str->del(strings[533]);
-str->del(strings[534]);
-str->del(strings[535]);
-str->del(strings[536]);
-str->del(strings[537]);
-str->del(strings[538]);
-str->del(strings[539]);
-str->del(strings[540]);
-str->del(strings[541]);
-str->del(strings[542]);
-str->del(strings[543]);
-str->del(strings[544]);
-str->del(strings[545]);
-str->del(strings[546]);
-str->del(strings[547]);
-str->del(strings[548]);
-str->del(strings[549]);
-str->del(strings[550]);
-str->del(strings[551]);
-str->del(strings[552]);
-str->del(strings[553]);
-str->del(strings[554]);
-str->del(strings[555]);
-str->del(strings[556]);
-str->del(strings[557]);
-str->del(strings[558]);
-str->del(strings[559]);
-str->del(strings[560]);
-str->del(strings[561]);
-str->del(strings[562]);
-str->del(strings[563]);
-str->del(strings[564]);
-str->del(strings[565]);
-str->del(strings[566]);
-str->del(strings[567]);
-str->del(strings[568]);
-str->del(strings[569]);
-str->del(strings[570]);
-str->del(strings[571]);
-str->del(strings[572]);
-str->del(strings[573]);
-str->del(strings[574]);
-str->del(strings[575]);
-str->del(strings[576]);
-str->del(strings[577]);
-str->del(strings[578]);
-str->del(strings[579]);
-str->del(strings[580]);
-str->del(strings[581]);
-str->del(strings[582]);
-str->del(strings[583]);
-str->del(strings[584]);
-str->del(strings[585]);
-str->del(strings[586]);
-str->del(strings[587]);
-str->del(strings[588]);
-str->del(strings[589]);
-str->del(strings[590]);
-str->del(strings[591]);
-str->del(strings[592]);
-str->del(strings[593]);
-str->del(strings[594]);
-str->del(strings[595]);
-str->del(strings[596]);
-str->del(strings[597]);
-str->del(strings[598]);
-str->del(strings[599]);
-str->del(strings[600]);
-str->del(strings[601]);
-str->del(strings[602]);
-str->del(strings[603]);
-str->del(strings[604]);
-str->del(strings[605]);
-str->del(strings[606]);
-str->del(strings[607]);
-str->del(strings[608]);
-str->del(strings[609]);
-str->del(strings[610]);
-str->del(strings[611]);
-str->del(strings[612]);
-str->del(strings[613]);
-str->del(strings[614]);
-str->del(strings[615]);
-str->del(strings[616]);
-str->del(strings[617]);
-str->del(strings[618]);
-str->del(strings[619]);
-str->del(strings[620]);
-str->del(strings[621]);
-str->del(strings[622]);
-str->del(strings[623]);
-str->del(strings[624]);
-str->del(strings[625]);
-str->del(strings[626]);
-str->del(strings[627]);
-str->del(strings[628]);
-str->del(strings[629]);
-str->del(strings[630]);
-str->del(strings[631]);
-str->del(strings[632]);
-str->del(strings[633]);
-str->del(strings[634]);
-str->del(strings[635]);
-str->del(strings[636]);
-str->del(strings[637]);
-str->del(strings[638]);
-str->del(strings[639]);
-str->del(strings[640]);
-str->del(strings[641]);
-str->del(strings[642]);
-str->del(strings[643]);
-str->del(strings[644]);
-str->del(strings[645]);
-str->del(strings[646]);
-str->del(strings[647]);
-str->del(strings[648]);
-str->del(strings[649]);
-str->del(strings[650]);
-str->del(strings[651]);
-str->del(strings[652]);
-str->del(strings[653]);
-str->del(strings[654]);
-str->del(strings[655]);
-str->del(strings[656]);
-str->del(strings[657]);
-str->del(strings[658]);
-str->del(strings[659]);
-str->del(strings[660]);
-str->del(strings[661]);
-str->del(strings[662]);
-str->del(strings[663]);
-str->del(strings[664]);
-str->del(strings[665]);
-str->del(strings[666]);
-str->del(strings[667]);
-str->del(strings[668]);
-str->del(strings[669]);
-str->del(strings[670]);
-str->del(strings[671]);
-str->del(strings[672]);
-str->del(strings[673]);
-str->del(strings[674]);
-str->del(strings[675]);
-str->del(strings[676]);
-str->del(strings[677]);
-str->del(strings[678]);
-str->del(strings[679]);
-str->del(strings[680]);
-str->del(strings[681]);
-str->del(strings[682]);
-str->del(strings[683]);
-str->del(strings[684]);
-str->del(strings[685]);
-str->del(strings[686]);
-str->del(strings[687]);
-str->del(strings[688]);
-str->del(strings[689]);
-str->del(strings[690]);
-str->del(strings[691]);
-str->del(strings[692]);
-str->del(strings[693]);
-str->del(strings[694]);
-str->del(strings[695]);
-str->del(strings[696]);
-str->del(strings[697]);
-str->del(strings[698]);
-str->del(strings[699]);
-str->del(strings[700]);
-str->del(strings[701]);
-str->del(strings[702]);
-str->del(strings[703]);
-str->del(strings[703]);
-str->del(strings[704]);
-str->del(strings[705]);
-str->del(strings[706]);
-str->del(strings[707]);
-str->del(strings[708]);
-str->del(strings[709]);
-str->del(strings[710]);
-str->del(strings[711]);
-str->del(strings[712]);
-str->del(strings[713]);
-str->del(strings[714]);
-str->del(strings[715]);
-str->del(strings[716]);
-str->del(strings[717]);
-str->del(strings[718]);
-str->del(strings[719]);
-str->del(strings[720]);
-str->del(strings[721]);
-str->del(strings[722]);
-str->del(strings[723]);
-str->del(strings[724]);
-str->del(strings[725]);
-str->del(strings[726]);
-str->del(strings[727]);
-str->del(strings[728]);
-str->del(strings[729]);
-str->del(strings[730]);
-str->del(strings[731]);
-str->del(strings[732]);
-str->del(strings[733]);
-str->del(strings[734]);
-str->del(strings[735]);
-str->del(strings[736]);
-str->del(strings[737]);
-str->del(strings[738]);
-str->del(strings[739]);
-str->del(strings[740]);
-str->del(strings[741]);
-str->del(strings[742]);
-str->del(strings[743]);
-str->del(strings[744]);
-str->del(strings[745]);
-str->del(strings[746]);
-str->del(strings[747]);
-str->del(strings[748]);
-str->del(strings[749]);
-str->del(strings[750]);
-str->del(strings[751]);
-str->del(strings[752]);
-str->del(strings[753]);
-str->del(strings[754]);
-str->del(strings[755]);
-str->del(strings[756]);
-str->del(strings[757]);
-str->del(strings[758]);
-str->del(strings[759]);
-str->del(strings[760]);
-str->del(strings[761]);
-str->del(strings[762]);
-str->del(strings[763]);
-str->del(strings[764]);
-str->del(strings[765]);
-str->del(strings[766]);
-str->del(strings[767]);
-str->del(strings[768]);
-str->del(strings[769]);
-str->del(strings[770]);
-str->del(strings[771]);
-str->del(strings[772]);
-str->del(strings[773]);
-str->del(strings[774]);
-str->del(strings[775]);
-str->del(strings[776]);
-str->del(strings[777]);
-str->del(strings[778]);
-str->del(strings[779]);
-str->del(strings[780]);
-str->del(strings[781]);
-strings[782] = str->add("e/desktop/background");
-strings[783] = str->add("e/widgets/border/default/border");
-strings[784] = str->add("e/widgets/border/shaped/border");
-strings[785] = str->add("e/widgets/border/noresize/border");
-strings[786] = str->add("e/widgets/border/dialog/border");
-strings[787] = str->add("e/widgets/border/noresize_dialog/border");
-strings[788] = str->add("e/widgets/border/pixel/border");
-strings[789] = str->add("e/pointer/enlightenment/default/color");
-strings[790] = str->add("e/pointer/enlightenment/default/mono");
-strings[791] = str->add("e/widgets/menu/default/background");
-strings[792] = str->add("e/widgets/menu/default/separator");
-strings[793] = str->add("e/widgets/menu/default/item_bg");
-strings[794] = str->add("e/widgets/menu/default/icon");
-strings[795] = str->add("e/widgets/menu/default/label");
-strings[796] = str->add("e/widgets/menu/default/submenu");
-strings[797] = str->add("e/widgets/menu/default/check");
-strings[798] = str->add("e/widgets/menu/default/radio");
-strings[799] = str->add("e/shelf/default/base");
-strings[800] = str->add("e/shelf/default/inset");
-strings[801] = str->add("e/shelf/default/plain");
-strings[802] = str->add("e/shelf/invisible/base");
-strings[803] = str->add("e/shelf/invisible/inset");
-strings[804] = str->add("e/shelf/invisible/plain");
-strings[805] = str->add("e/shelf/alternate/base");
-strings[806] = str->add("e/shelf/alternate/inset");
-strings[807] = str->add("e/shelf/alternate/plain");
-strings[808] = str->add("e/modules/start/main");
-strings[809] = str->add("e/modules/pager/popup");
-strings[810] = str->add("e/modules/pager/desk");
-strings[811] = str->add("e/modules/pager/window");
-strings[812] = str->add("e/modules/battery/main");
-strings[813] = str->add("e/modules/temperature/main");
-strings[814] = str->add("e/modules/clock/main");
-strings[815] = str->add("e/modules/cpufreq/main");
-strings[816] = str->add("e/widgets/winlist/main");
-strings[817] = str->add("e/widgets/winlist/item");
-strings[818] = str->add("e/modules/mixer/main");
-strings[819] = str->add("e/sys/logout");
-strings[820] = str->add("e/widgets/dialog/main");
-strings[821] = str->add("e/widgets/dialog/text");
-strings[822] = str->add("e/widgets/configure/main");
-strings[823] = str->add("e/widgets/border/default/move");
-strings[824] = str->add("e/widgets/border/default/resize");
-strings[825] = str->add("e/transpreview/0");
-strings[826] = str->add("e/transpreview/1");
-strings[827] = str->add("e/transitions/crossfade");
-strings[828] = str->add("e/transitions/vswipe");
-strings[829] = str->add("e/widgets/check");
-strings[830] = str->add("e/widgets/check_icon");
-strings[831] = str->add("e/widgets/radio");
-strings[832] = str->add("e/widgets/radio_icon");
-strings[833] = str->add("e/widgets/button");
-strings[834] = str->add("e/widgets/scrollframe");
-strings[835] = str->add("e/widgets/ilist");
-strings[836] = str->add("e/widgets/ilist_odd");
-strings[837] = str->add("e/widgets/ilist_header");
-strings[838] = str->add("e/widgets/ilist_header_odd");
-strings[839] = str->add("e/widgets/entry");
-strings[840] = str->add("e/widgets/entry/text");
-strings[841] = str->add("e/widgets/entry/cursor");
-strings[842] = str->add("e/widgets/entry/selection");
-strings[843] = str->add("e/widgets/preview");
-strings[844] = str->add("e/widgets/deskpreview/desk");
-strings[845] = str->add("e/widgets/color_well");
-strings[846] = str->add("e/widgets/spectrum");
-strings[847] = str->add("e/widgets/cslider");
-strings[848] = str->add("e/widgets/slider_vertical");
-strings[849] = str->add("e/widgets/slider_horizontal");
-strings[850] = str->add("e/widgets/frame");
-strings[851] = str->add("e/widgets/label");
-strings[852] = str->add("e/widgets/fontpreview");
-strings[853] = str->add("e/widgets/textblock");
-strings[854] = str->add("e/widgets/menu/default/submenu_bg");
-strings[855] = str->add("e/sys/halt");
-strings[856] = str->add("e/sys/reboot");
-strings[857] = str->add("e/sys/suspend");
-strings[858] = str->add("e/sys/hibernate");
-strings[859] = str->add("e/widgets/gradpreview");
-strings[61] = str->add(strings[61]);
-strings[860] = str->add("shaped");
-strings[861] = str->add("noresize");
-strings[862] = str->add("dialog");
-strings[863] = str->add("noresize_dialog");
-strings[864] = str->add("pixel");
-str->del(strings[782]);
-str->del(strings[783]);
-str->del(strings[784]);
-str->del(strings[785]);
-str->del(strings[786]);
-str->del(strings[787]);
-str->del(strings[788]);
-str->del(strings[789]);
-str->del(strings[790]);
-str->del(strings[791]);
-str->del(strings[792]);
-str->del(strings[793]);
-str->del(strings[794]);
-str->del(strings[795]);
-str->del(strings[796]);
-str->del(strings[797]);
-str->del(strings[798]);
-str->del(strings[799]);
-str->del(strings[800]);
-str->del(strings[801]);
-str->del(strings[802]);
-str->del(strings[803]);
-str->del(strings[804]);
-str->del(strings[805]);
-str->del(strings[806]);
-str->del(strings[807]);
-str->del(strings[808]);
-str->del(strings[809]);
-str->del(strings[810]);
-str->del(strings[811]);
-str->del(strings[812]);
-str->del(strings[813]);
-str->del(strings[814]);
-str->del(strings[815]);
-str->del(strings[816]);
-str->del(strings[817]);
-str->del(strings[818]);
-str->del(strings[819]);
-str->del(strings[820]);
-str->del(strings[821]);
-str->del(strings[822]);
-str->del(strings[823]);
-str->del(strings[824]);
-str->del(strings[825]);
-str->del(strings[826]);
-str->del(strings[827]);
-str->del(strings[828]);
-str->del(strings[829]);
-str->del(strings[830]);
-str->del(strings[831]);
-str->del(strings[832]);
-str->del(strings[833]);
-str->del(strings[834]);
-str->del(strings[835]);
-str->del(strings[836]);
-str->del(strings[837]);
-str->del(strings[838]);
-str->del(strings[839]);
-str->del(strings[840]);
-str->del(strings[841]);
-str->del(strings[842]);
-str->del(strings[843]);
-str->del(strings[844]);
-str->del(strings[845]);
-str->del(strings[846]);
-str->del(strings[847]);
-str->del(strings[848]);
-str->del(strings[849]);
-str->del(strings[850]);
-str->del(strings[851]);
-str->del(strings[852]);
-str->del(strings[853]);
-str->del(strings[854]);
-str->del(strings[855]);
-str->del(strings[856]);
-str->del(strings[857]);
-str->del(strings[858]);
-str->del(strings[859]);
-strings[865] = str->add("e/desktop/background");
-strings[866] = str->add("e/modules/battery/main");
-strings[867] = str->add("e/modules/battery/popup");
-strings[868] = str->add("e/widgets/border/default/border");
-strings[869] = str->add("e/widgets/border/shaped/border");
-strings[870] = str->add("e/widgets/border/noresize/border");
-strings[871] = str->add("e/widgets/border/dialog/border");
-strings[872] = str->add("e/widgets/border/noresize_dialog/border");
-strings[873] = str->add("e/widgets/border/pixel/border");
-strings[874] = str->add("e/widgets/border/default/close");
-strings[875] = str->add("e/widgets/border/default/minimize");
-strings[876] = str->add("e/widgets/border/default/maximize");
-strings[877] = str->add("e/widgets/border/default/shade");
-strings[878] = str->add("e/widgets/border/default/stick");
-strings[879] = str->add("e/widgets/border/default/kill");
-strings[880] = str->add("e/widgets/border/default/locks");
-strings[881] = str->add("e/widgets/border/default/locks_user");
-strings[882] = str->add("e/widgets/border/default/locks_application");
-strings[883] = str->add("e/widgets/border/default/borderless");
-strings[884] = str->add("e/widgets/border/default/fullscreen");
-strings[885] = str->add("e/widgets/border/default/remember");
-strings[886] = str->add("e/widgets/border/default/skip_winlist");
-strings[887] = str->add("e/widgets/border/default/skip");
-strings[888] = str->add("e/widgets/border/default/skip_pager");
-strings[889] = str->add("e/widgets/border/default/sendto");
-strings[890] = str->add("e/widgets/border/default/stacking");
-strings[891] = str->add("e/widgets/border/default/stack_on_top");
-strings[892] = str->add("e/widgets/border/default/stack_normal");
-strings[893] = str->add("e/widgets/border/default/stack_below");
-strings[894] = str->add("e/widgets/border/default/properties");
-strings[895] = str->add("e/modules/clock/main");
-strings[896] = str->add("e/gadman/control");
-strings[897] = str->add("e/gadman/popup");
-strings[898] = str->add("e/gadman/full_bg");
-strings[899] = str->add("e/gadman/frame");
-strings[900] = str->add("e/modules/ibar/icon");
-strings[901] = str->add("e/modules/ibar/icon_overlay");
-strings[902] = str->add("e/modules/ibar/drop");
-strings[903] = str->add("e/modules/ibar/drop_overlay");
-strings[904] = str->add("e/widgets/menu/default/background");
-strings[905] = str->add("e/widgets/menu/default/separator");
-strings[906] = str->add("e/widgets/menu/default/item_bg");
-strings[907] = str->add("e/widgets/menu/default/submenu_bg");
-strings[908] = str->add("e/widgets/menu/default/check");
-strings[909] = str->add("e/widgets/menu/default/radio");
-strings[910] = str->add("e/widgets/menu/default/icon");
-strings[911] = str->add("e/widgets/menu/default/label");
-strings[912] = str->add("e/widgets/menu/default/submenu");
-strings[913] = str->add("e/modules/pager/popup");
-strings[914] = str->add("e/modules/pager/desk");
-strings[915] = str->add("e/modules/pager/window");
-strings[916] = str->add("e/widgets/border/default/resize");
-strings[917] = str->add("e/widgets/border/default/move");
-strings[918] = str->add("e/modules/temperature/main");
-strings[919] = str->add("e/error/main");
-strings[920] = str->add("e/modules/cpufreq/main");
-strings[921] = str->add("e/modules/ibox/icon");
-strings[922] = str->add("e/modules/ibox/icon_overlay");
-strings[923] = str->add("e/modules/ibox/drop");
-strings[924] = str->add("e/modules/ibox/drop_overlay");
-strings[925] = str->add("e/modules/start/main");
-strings[926] = str->add("e/widgets/winlist/main");
-strings[927] = str->add("e/widgets/winlist/item");
-strings[928] = str->add("e/transpreview/0");
-strings[929] = str->add("e/transpreview/1");
-strings[930] = str->add("e/transitions/crossfade");
-strings[931] = str->add("e/transitions/vswipe");
-strings[932] = str->add("e/widgets/dialog/main");
-strings[933] = str->add("e/widgets/dialog/text");
-strings[934] = str->add("e/widgets/configure/main");
-strings[935] = str->add("e/icons/enlightenment/e");
-strings[936] = str->add("e/icons/enlightenment/reset");
-strings[937] = str->add("e/icons/enlightenment/exit");
-strings[938] = str->add("e/icons/enlightenment/logout");
-strings[939] = str->add("e/icons/enlightenment/halt");
-strings[940] = str->add("e/icons/enlightenment/reboot");
-strings[941] = str->add("e/icons/enlightenment/suspend");
-strings[942] = str->add("e/icons/enlightenment/hibernate");
-strings[943] = str->add("e/icons/enlightenment/screen_setup");
-strings[944] = str->add("e/icons/enlightenment/themes");
-strings[945] = str->add("e/icons/enlightenment/colors");
-strings[946] = str->add("e/icons/enlightenment/windows");
-strings[947] = str->add("e/icons/enlightenment/lost_windows");
-strings[948] = str->add("e/icons/enlightenment/focus");
-strings[949] = str->add("e/icons/enlightenment/modules");
-strings[950] = str->add("e/icons/enlightenment/favorites");
-strings[951] = str->add("e/icons/enlightenment/desktops");
-strings[952] = str->add("e/icons/enlightenment/configuration");
-strings[953] = str->add("e/icons/enlightenment/intl");
-strings[954] = str->add("e/icons/enlightenment/system");
-strings[955] = str->add("e/icons/enlightenment/run");
-strings[956] = str->add("e/icons/enlightenment/directories");
-strings[957] = str->add("e/icons/enlightenment/fileman");
-strings[958] = str->add("e/icons/enlightenment/unknown");
-strings[959] = str->add("e/icons/widget/new_dialog");
-strings[960] = str->add("e/icons/widget/up_arrow");
-strings[961] = str->add("e/icons/widget/down_arrow");
-strings[962] = str->add("e/icons/widget/up_dir");
-strings[963] = str->add("e/icons/enlightenment/mouse");
-strings[964] = str->add("e/icons/enlightenment/mouse_left");
-strings[965] = str->add("e/icons/enlightenment/mouse_middle");
-strings[966] = str->add("e/icons/enlightenment/mouse_right");
-strings[967] = str->add("e/icons/enlightenment/mouse_extra");
-strings[968] = str->add("e/icons/enlightenment/mouse_wheel");
-strings[969] = str->add("e/icons/enlightenment/mouse_clean");
-strings[970] = str->add("e/icons/enlightenment/keys");
-strings[971] = str->add("e/icons/enlightenment/desklock");
-strings[972] = str->add("e/icons/enlightenment/desklock_menu");
-strings[973] = str->add("e/icons/enlightenment/regenerate_menus");
-strings[974] = str->add("e/icons/enlightenment/screen_resolution");
-strings[975] = str->add("e/icons/enlightenment/shelf");
-strings[976] = str->add("e/icons/enlightenment/fonts");
-strings[977] = str->add("e/icons/enlightenment/background");
-strings[978] = str->add("e/icons/enlightenment/icon_theme");
-strings[979] = str->add("e/icons/enlightenment/applications");
-strings[980] = str->add("e/icons/enlightenment/transitions");
-strings[981] = str->add("e/icons/enlightenment/performance");
-strings[982] = str->add("e/icons/enlightenment/startup");
-strings[983] = str->add("e/icons/enlightenment/winlist");
-strings[984] = str->add("e/icons/enlightenment/window_manipulation");
-strings[985] = str->add("e/icons/enlightenment/menus");
-strings[986] = str->add("e/icons/enlightenment/screen_normal");
-strings[987] = str->add("e/icons/enlightenment/screen_around");
-strings[988] = str->add("e/icons/enlightenment/screen_left");
-strings[989] = str->add("e/icons/enlightenment/screen_right");
-strings[990] = str->add("e/icons/enlightenment/screen_vflip");
-strings[991] = str->add("e/icons/enlightenment/screen_hflip");
-strings[992] = str->add("e/icons/enlightenment/shelf_position_bottom");
-strings[993] = str->add("e/icons/enlightenment/shelf_position_bottom_left");
-strings[994] = str->add("e/icons/enlightenment/shelf_position_bottom_right");
-strings[995] = str->add("e/icons/enlightenment/shelf_position_top");
-strings[996] = str->add("e/icons/enlightenment/shelf_position_top_left");
-strings[997] = str->add("e/icons/enlightenment/shelf_position_top_right");
-strings[998] = str->add("e/icons/enlightenment/shelf_position_left");
-strings[999] = str->add("e/icons/enlightenment/shelf_position_left_top");
-strings[1000] = str->add("e/icons/enlightenment/shelf_position_left_bottom");
-strings[1001] = str->add("e/icons/enlightenment/shelf_position_right");
-strings[1002] = str->add("e/icons/enlightenment/shelf_position_right_top");
-strings[1003] = str->add("e/icons/enlightenment/shelf_position_right_bottom");
-strings[1004] = str->add("e/icons/enlightenment/shelf_bottom_desk");
-strings[1005] = str->add("e/icons/enlightenment/shelf_custom");
-strings[1006] = str->add("e/icons/enlightenment/shelf_dock");
-strings[1007] = str->add("e/icons/enlightenment/shelf_menu_bar");
-strings[1008] = str->add("e/icons/enlightenment/shelf_panel");
-strings[1009] = str->add("e/icons/enlightenment/shelf_top_desk");
-strings[1010] = str->add("e/icons/enlightenment/wallpaper_stretch");
-strings[1011] = str->add("e/icons/enlightenment/wallpaper_tile");
-strings[1012] = str->add("e/icons/enlightenment/wallpaper_center");
-strings[1013] = str->add("e/icons/enlightenment/wallpaper_scale_aspect_in");
-strings[1014] = str->add("e/icons/enlightenment/wallpaper_scale_aspect_out");
-strings[1015] = str->add("e/icons/enlightenment/gradient_h");
-strings[1016] = str->add("e/icons/enlightenment/gradient_v");
-strings[1017] = str->add("e/icons/enlightenment/gradient_du");
-strings[1018] = str->add("e/icons/enlightenment/gradient_dd");
-strings[1019] = str->add("e/icons/enlightenment/gradient_rad");
-strings[1020] = str->add("e/icons/enlightenment/advanced");
-strings[1021] = str->add("e/icons/enlightenment/behavior");
-strings[1022] = str->add("e/icons/enlightenment/appearance");
-strings[1023] = str->add("e/icons/enlightenment/extensions");
-strings[1024] = str->add("e/icons/enlightenment/imc");
-strings[1025] = str->add("e/icons/enlightenment/file_icons");
-strings[1026] = str->add("e/icons/enlightenment/menu_settings");
-strings[1027] = str->add("e/icons/enlightenment/ibar_applications");
-strings[1028] = str->add("e/icons/enlightenment/restart_applications");
-strings[1029] = str->add("e/icons/enlightenment/startup_applications");
-strings[1030] = str->add("e/icons/enlightenment/power_management");
-strings[1031] = str->add("e/icons/enlightenment/screensaver");
-strings[1032] = str->add("e/icons/enlightenment/window_remembers");
-strings[1033] = str->add("e/pointer/enlightenment/default/color");
-strings[1034] = str->add("e/pointer/enlightenment/default/mono");
-strings[1035] = str->add("e/widgets/about/main");
-strings[1036] = str->add("e/theme/about");
-strings[1037] = str->add("e/widgets/entry");
-strings[1038] = str->add("e/widgets/entry/text");
-strings[1039] = str->add("e/widgets/entry/cursor");
-strings[1040] = str->add("e/widgets/entry/selection");
-strings[1041] = str->add("e/fileman/default/window/main");
-strings[1042] = str->add("e/fileman/default/scrollframe");
-strings[1043] = str->add("e/fileman/default/list/variable");
-strings[1044] = str->add("e/fileman/default/list_odd/variable");
-strings[1045] = str->add("e/fileman/default/list/fixed");
-strings[1046] = str->add("e/fileman/default/list_odd/fixed");
-strings[1047] = str->add("e/fileman/default/icon/fixed");
-strings[1048] = str->add("e/fileman/default/icon/variable");
-strings[1049] = str->add("e/fileman/default/overlay");
-strings[1050] = str->add("e/fileman/default/list/drop_between");
-strings[1051] = str->add("e/fileman/default/list/drop_in");
-strings[1052] = str->add("e/fileman/desktop/scrollframe");
-strings[1053] = str->add("e/fileman/desktop/icon/fixed");
-strings[1054] = str->add("e/fileman/desktop/icon/variable");
-strings[1055] = str->add("e/fileman/desktop/overlay");
-strings[1056] = str->add("e/fileman/desktop/list/drop_between");
-strings[1057] = str->add("e/fileman/desktop/list/drop_in");
-strings[1058] = str->add("e/fileman/default/rubberband");
-strings[1059] = str->add("e/icons/fileman/folder");
-strings[1060] = str->add("e/icons/fileman/file");
-strings[1061] = str->add("e/icons/fileman/home");
-strings[1062] = str->add("e/icons/fileman/desktop");
-strings[1063] = str->add("e/icons/fileman/hdd");
-strings[1064] = str->add("e/icons/fileman/hd");
-strings[1065] = str->add("e/icons/fileman/mime/application/pdf");
-strings[1066] = str->add("e/icons/fileman/mime/text/x-csrc");
-strings[1067] = str->add("e/icons/fileman/mime/text/x-chdr");
-strings[1068] = str->add("e/icons/fileman/mime/application/x-object");
-strings[1069] = str->add("e/icons/fileman/mime/application/x-shellscript");
-strings[1070] = str->add("e/icons/fileman/mime/image/png");
-strings[1071] = str->add("e/icons/fileman/mime/image/jpeg");
-strings[1072] = str->add("e/icons/fileman/mime/video/x-msvideo");
-strings[1073] = str->add("e/icons/fileman/mime/audio/mpeg");
-strings[1074] = str->add("e/icons/fileman/mime/application/x-xcf");
-strings[1075] = str->add("e/icons/fileman/mime/text/x-c++src");
-strings[1076] = str->add("e/icons/fileman/mime/text/x-csharp");
-strings[1077] = str->add("e/icons/fileman/mime/text/x-patch");
-strings[1078] = str->add("e/icons/fileman/mime/application/msword");
-strings[1079] = str->add("e/icons/fileman/mime/application/ogg");
-strings[1080] = str->add("e/icons/fileman/mime/text/plain");
-strings[1081] = str->add("e/icons/fileman/mime/application/x-bzip");
-strings[1082] = str->add("e/icons/fileman/mime/application/x-deb");
-strings[1083] = str->add("e/icons/fileman/mime/application/x-font-ttf");
-strings[1084] = str->add("e/icons/fileman/mime/application/x-font-pcf");
-strings[1085] = str->add("e/icons/fileman/mime/application/x-font-bdf");
-strings[1086] = str->add("e/icons/fileman/mime/text/css");
-strings[1087] = str->add("e/icons/fileman/mime/text/html");
-strings[1087] = str->add(strings[1087]);
-strings[1088] = str->add("e/icons/fileman/mime/application/zip");
-strings[1089] = str->add("e/icons/fileman/mime/application/x-gzip");
-strings[1090] = str->add("e/icons/fileman/mime/application/x-bzip-compressed-tar");
-strings[1091] = str->add("e/icons/fileman/mime/application/x-bzip2-compressed-tar");
-strings[1092] = str->add("e/icons/fileman/mime/application/x-compressed-tar");
-strings[1093] = str->add("e/icons/fileman/mime/application/x-tar");
-strings[1094] = str->add("e/icons/fileman/mime/application/x-rar");
-strings[1095] = str->add("e/icons/fileman/mime/video/mpeg");
-strings[1096] = str->add("e/icons/fileman/mime/video");
-strings[1097] = str->add("e/icons/fileman/mime/text");
-strings[1098] = str->add("e/icons/fileman/mime/image");
-strings[1099] = str->add("e/icons/fileman/mime/audio");
-strings[1100] = str->add("e/fileman/default/button/open");
-strings[1101] = str->add("e/fileman/default/button/copy");
-strings[1102] = str->add("e/fileman/default/button/cut");
-strings[1103] = str->add("e/fileman/default/button/paste");
-strings[1104] = str->add("e/fileman/default/button/delete");
-strings[1105] = str->add("e/fileman/default/button/rename");
-strings[1106] = str->add("e/fileman/default/button/properties");
-strings[1107] = str->add("e/fileman/default/button/arrange_name");
-strings[1108] = str->add("e/fileman/default/button/arrange");
-strings[1109] = str->add("e/fileman/default/button/arrange_time");
-strings[1110] = str->add("e/fileman/default/button/new");
-strings[1111] = str->add("e/fileman/default/button/new_dir");
-strings[1112] = str->add("e/fileman/default/button/refresh");
-strings[1113] = str->add("e/fileman/default/button/view_details");
-strings[1114] = str->add("e/fileman/default/button/view_name");
-strings[1115] = str->add("e/fileman/default/button/view");
-strings[1116] = str->add("e/fileman/default/button/select");
-strings[1117] = str->add("e/widgets/fileselector/main");
-strings[1118] = str->add("e/widgets/check");
-strings[1119] = str->add("e/widgets/check_icon");
-strings[1120] = str->add("e/widgets/radio");
-strings[1121] = str->add("e/widgets/radio_icon");
-strings[1122] = str->add("e/widgets/frame");
-strings[1123] = str->add("e/widgets/button");
-strings[1124] = str->add("e/widgets/label");
-strings[1125] = str->add("e/widgets/scrollframe");
-strings[1126] = str->add("e/widgets/ilist");
-strings[1127] = str->add("e/widgets/ilist_odd");
-strings[1128] = str->add("e/widgets/ilist_header");
-strings[1129] = str->add("e/widgets/tlist");
-strings[1130] = str->add("e/widgets/tlist_odd");
-strings[1131] = str->add("e/widgets/slider_vertical");
-strings[1132] = str->add("e/widgets/slider_horizontal");
-strings[1133] = str->add("e/widgets/exebuf/main");
-strings[1134] = str->add("e/widgets/exebuf/item");
-strings[1135] = str->add("e/desklock/background");
-strings[1136] = str->add("e/desklock/login_box");
-strings[1137] = str->add("e/widgets/textblock");
-strings[1138] = str->add("e/shelf/default/base");
-strings[1139] = str->add("e/shelf/default/inset");
-strings[1140] = str->add("e/shelf/default/plain");
-strings[1141] = str->add("e/shelf/alternate/base");
-strings[1142] = str->add("e/shelf/alternate/inset");
-strings[1143] = str->add("e/shelf/alternate/plain");
-strings[1144] = str->add("e/shelf/invisible/base");
-strings[1145] = str->add("e/shelf/invisible/inset");
-strings[1146] = str->add("e/shelf/invisible/plain");
-strings[1147] = str->add("e/widgets/preview");
-strings[1148] = str->add("e/widgets/cslider");
-strings[1149] = str->add("e/widgets/spectrum");
-strings[1150] = str->add("e/widgets/color_well");
-strings[1151] = str->add("e/sys/logout");
-strings[1152] = str->add("e/sys/halt");
-strings[1153] = str->add("e/sys/reboot");
-strings[1154] = str->add("e/sys/suspend");
-strings[1155] = str->add("e/sys/hibernate");
-strings[1156] = str->add("e/widgets/deskpreview/desk");
-strings[1157] = str->add("e/widgets/fontpreview");
-strings[1158] = str->add("e/wizard/extra");
-strings[1159] = str->add("e/wizard/main");
-strings[1160] = str->add("e/toolbar/default/base");
-strings[1161] = str->add("e/widgets/slidesel");
-strings[1162] = str->add("e/modules/mixer/main");
-strings[1163] = str->add("e/modules/connman/main");
-strings[1164] = str->add("e/modules/connman/network");
-strings[1165] = str->add("e/widgets/gradpreview");
-str->del(strings[865]);
-str->del(strings[866]);
-str->del(strings[867]);
-str->del(strings[868]);
-str->del(strings[869]);
-str->del(strings[870]);
-str->del(strings[871]);
-str->del(strings[872]);
-str->del(strings[873]);
-str->del(strings[874]);
-str->del(strings[875]);
-str->del(strings[876]);
-str->del(strings[877]);
-str->del(strings[878]);
-str->del(strings[879]);
-str->del(strings[880]);
-str->del(strings[881]);
-str->del(strings[882]);
-str->del(strings[883]);
-str->del(strings[884]);
-str->del(strings[885]);
-str->del(strings[886]);
-str->del(strings[887]);
-str->del(strings[888]);
-str->del(strings[889]);
-str->del(strings[890]);
-str->del(strings[891]);
-str->del(strings[892]);
-str->del(strings[893]);
-str->del(strings[894]);
-str->del(strings[895]);
-str->del(strings[896]);
-str->del(strings[897]);
-str->del(strings[898]);
-str->del(strings[899]);
-str->del(strings[900]);
-str->del(strings[901]);
-str->del(strings[902]);
-str->del(strings[903]);
-str->del(strings[904]);
-str->del(strings[905]);
-str->del(strings[906]);
-str->del(strings[907]);
-str->del(strings[908]);
-str->del(strings[909]);
-str->del(strings[910]);
-str->del(strings[911]);
-str->del(strings[912]);
-str->del(strings[913]);
-str->del(strings[914]);
-str->del(strings[915]);
-str->del(strings[916]);
-str->del(strings[917]);
-str->del(strings[918]);
-str->del(strings[919]);
-str->del(strings[920]);
-str->del(strings[921]);
-str->del(strings[922]);
-str->del(strings[923]);
-str->del(strings[924]);
-str->del(strings[925]);
-str->del(strings[926]);
-str->del(strings[927]);
-str->del(strings[928]);
-str->del(strings[929]);
-str->del(strings[930]);
-str->del(strings[931]);
-str->del(strings[932]);
-str->del(strings[933]);
-str->del(strings[934]);
-str->del(strings[935]);
-str->del(strings[936]);
-str->del(strings[937]);
-str->del(strings[938]);
-str->del(strings[939]);
-str->del(strings[940]);
-str->del(strings[941]);
-str->del(strings[942]);
-str->del(strings[943]);
-str->del(strings[944]);
-str->del(strings[945]);
-str->del(strings[946]);
-str->del(strings[947]);
-str->del(strings[948]);
-str->del(strings[949]);
-str->del(strings[950]);
-str->del(strings[951]);
-str->del(strings[952]);
-str->del(strings[953]);
-str->del(strings[954]);
-str->del(strings[955]);
-str->del(strings[956]);
-str->del(strings[957]);
-str->del(strings[958]);
-str->del(strings[959]);
-str->del(strings[960]);
-str->del(strings[961]);
-str->del(strings[962]);
-str->del(strings[963]);
-str->del(strings[964]);
-str->del(strings[965]);
-str->del(strings[966]);
-str->del(strings[967]);
-str->del(strings[968]);
-str->del(strings[969]);
-str->del(strings[970]);
-str->del(strings[971]);
-str->del(strings[972]);
-str->del(strings[973]);
-str->del(strings[974]);
-str->del(strings[975]);
-str->del(strings[976]);
-str->del(strings[977]);
-str->del(strings[978]);
-str->del(strings[979]);
-str->del(strings[980]);
-str->del(strings[981]);
-str->del(strings[982]);
-str->del(strings[983]);
-str->del(strings[984]);
-str->del(strings[985]);
-str->del(strings[986]);
-str->del(strings[987]);
-str->del(strings[988]);
-str->del(strings[989]);
-str->del(strings[990]);
-str->del(strings[991]);
-str->del(strings[992]);
-str->del(strings[993]);
-str->del(strings[994]);
-str->del(strings[995]);
-str->del(strings[996]);
-str->del(strings[997]);
-str->del(strings[998]);
-str->del(strings[999]);
-str->del(strings[1000]);
-str->del(strings[1001]);
-str->del(strings[1002]);
-str->del(strings[1003]);
-str->del(strings[1004]);
-str->del(strings[1005]);
-str->del(strings[1006]);
-str->del(strings[1007]);
-str->del(strings[1008]);
-str->del(strings[1009]);
-str->del(strings[1010]);
-str->del(strings[1011]);
-str->del(strings[1012]);
-str->del(strings[1013]);
-str->del(strings[1014]);
-str->del(strings[1015]);
-str->del(strings[1016]);
-str->del(strings[1017]);
-str->del(strings[1018]);
-str->del(strings[1019]);
-str->del(strings[1020]);
-str->del(strings[1021]);
-str->del(strings[1022]);
-str->del(strings[1023]);
-str->del(strings[1024]);
-str->del(strings[1025]);
-str->del(strings[1026]);
-str->del(strings[1027]);
-str->del(strings[1028]);
-str->del(strings[1029]);
-str->del(strings[1030]);
-str->del(strings[1031]);
-str->del(strings[1032]);
-str->del(strings[1033]);
-str->del(strings[1034]);
-str->del(strings[1035]);
-str->del(strings[1036]);
-str->del(strings[1037]);
-str->del(strings[1038]);
-str->del(strings[1039]);
-str->del(strings[1040]);
-str->del(strings[1041]);
-str->del(strings[1042]);
-str->del(strings[1043]);
-str->del(strings[1044]);
-str->del(strings[1045]);
-str->del(strings[1046]);
-str->del(strings[1047]);
-str->del(strings[1048]);
-str->del(strings[1049]);
-str->del(strings[1050]);
-str->del(strings[1051]);
-str->del(strings[1052]);
-str->del(strings[1053]);
-str->del(strings[1054]);
-str->del(strings[1055]);
-str->del(strings[1056]);
-str->del(strings[1057]);
-str->del(strings[1058]);
-str->del(strings[1059]);
-str->del(strings[1060]);
-str->del(strings[1061]);
-str->del(strings[1062]);
-str->del(strings[1063]);
-str->del(strings[1064]);
-str->del(strings[1065]);
-str->del(strings[1066]);
-str->del(strings[1067]);
-str->del(strings[1068]);
-str->del(strings[1069]);
-str->del(strings[1070]);
-str->del(strings[1071]);
-str->del(strings[1072]);
-str->del(strings[1073]);
-str->del(strings[1074]);
-str->del(strings[1075]);
-str->del(strings[1076]);
-str->del(strings[1077]);
-str->del(strings[1078]);
-str->del(strings[1079]);
-str->del(strings[1080]);
-str->del(strings[1081]);
-str->del(strings[1082]);
-str->del(strings[1083]);
-str->del(strings[1084]);
-str->del(strings[1085]);
-str->del(strings[1086]);
-str->del(strings[1087]);
-str->del(strings[1087]);
-str->del(strings[1088]);
-str->del(strings[1089]);
-str->del(strings[1090]);
-str->del(strings[1091]);
-str->del(strings[1092]);
-str->del(strings[1093]);
-str->del(strings[1094]);
-str->del(strings[1095]);
-str->del(strings[1096]);
-str->del(strings[1097]);
-str->del(strings[1098]);
-str->del(strings[1099]);
-str->del(strings[1100]);
-str->del(strings[1101]);
-str->del(strings[1102]);
-str->del(strings[1103]);
-str->del(strings[1104]);
-str->del(strings[1105]);
-str->del(strings[1106]);
-str->del(strings[1107]);
-str->del(strings[1108]);
-str->del(strings[1109]);
-str->del(strings[1110]);
-str->del(strings[1111]);
-str->del(strings[1112]);
-str->del(strings[1113]);
-str->del(strings[1114]);
-str->del(strings[1115]);
-str->del(strings[1116]);
-str->del(strings[1117]);
-str->del(strings[1118]);
-str->del(strings[1119]);
-str->del(strings[1120]);
-str->del(strings[1121]);
-str->del(strings[1122]);
-str->del(strings[1123]);
-str->del(strings[1124]);
-str->del(strings[1125]);
-str->del(strings[1126]);
-str->del(strings[1127]);
-str->del(strings[1128]);
-str->del(strings[1129]);
-str->del(strings[1130]);
-str->del(strings[1131]);
-str->del(strings[1132]);
-str->del(strings[1133]);
-str->del(strings[1134]);
-str->del(strings[1135]);
-str->del(strings[1136]);
-str->del(strings[1137]);
-str->del(strings[1138]);
-str->del(strings[1139]);
-str->del(strings[1140]);
-str->del(strings[1141]);
-str->del(strings[1142]);
-str->del(strings[1143]);
-str->del(strings[1144]);
-str->del(strings[1145]);
-str->del(strings[1146]);
-str->del(strings[1147]);
-str->del(strings[1148]);
-str->del(strings[1149]);
-str->del(strings[1150]);
-str->del(strings[1151]);
-str->del(strings[1152]);
-str->del(strings[1153]);
-str->del(strings[1154]);
-str->del(strings[1155]);
-str->del(strings[1156]);
-str->del(strings[1157]);
-str->del(strings[1158]);
-str->del(strings[1159]);
-str->del(strings[1160]);
-str->del(strings[1161]);
-str->del(strings[1162]);
-str->del(strings[1163]);
-str->del(strings[1164]);
-str->del(strings[1165]);
-strings[1166] = str->add("e/desktop/background");
-strings[1167] = str->add("e/widgets/border/default/border");
-strings[1168] = str->add("e/widgets/border/shaped/border");
-strings[1169] = str->add("e/widgets/border/noresize/border");
-strings[1170] = str->add("e/widgets/border/dialog/border");
-strings[1171] = str->add("e/widgets/border/noresize_dialog/border");
-strings[1172] = str->add("e/widgets/border/pixel/border");
-strings[1173] = str->add("e/pointer/enlightenment/default/color");
-strings[1174] = str->add("e/pointer/enlightenment/default/mono");
-strings[1175] = str->add("e/widgets/menu/default/background");
-strings[1176] = str->add("e/widgets/menu/default/separator");
-strings[1177] = str->add("e/widgets/menu/default/item_bg");
-strings[1178] = str->add("e/widgets/menu/default/icon");
-strings[1179] = str->add("e/widgets/menu/default/label");
-strings[1180] = str->add("e/widgets/menu/default/submenu");
-strings[1181] = str->add("e/widgets/menu/default/check");
-strings[1182] = str->add("e/widgets/menu/default/radio");
-strings[1183] = str->add("e/shelf/default/base");
-strings[1184] = str->add("e/shelf/default/inset");
-strings[1185] = str->add("e/shelf/default/plain");
-strings[1186] = str->add("e/shelf/invisible/base");
-strings[1187] = str->add("e/shelf/invisible/inset");
-strings[1188] = str->add("e/shelf/invisible/plain");
-strings[1189] = str->add("e/shelf/alternate/base");
-strings[1190] = str->add("e/shelf/alternate/inset");
-strings[1191] = str->add("e/shelf/alternate/plain");
-strings[1192] = str->add("e/modules/start/main");
-strings[1193] = str->add("e/modules/pager/popup");
-strings[1194] = str->add("e/modules/pager/desk");
-strings[1195] = str->add("e/modules/pager/window");
-strings[1196] = str->add("e/modules/battery/main");
-strings[1197] = str->add("e/modules/temperature/main");
-strings[1198] = str->add("e/modules/clock/main");
-strings[1199] = str->add("e/modules/cpufreq/main");
-strings[1200] = str->add("e/widgets/winlist/main");
-strings[1201] = str->add("e/widgets/winlist/item");
-strings[1202] = str->add("e/modules/mixer/main");
-strings[1203] = str->add("e/sys/logout");
-strings[1204] = str->add("e/widgets/dialog/main");
-strings[1205] = str->add("e/widgets/dialog/text");
-strings[1206] = str->add("e/widgets/configure/main");
-strings[1207] = str->add("e/widgets/border/default/move");
-strings[1208] = str->add("e/widgets/border/default/resize");
-strings[1209] = str->add("e/transpreview/0");
-strings[1210] = str->add("e/transpreview/1");
-strings[1211] = str->add("e/transitions/crossfade");
-strings[1212] = str->add("e/transitions/vswipe");
-strings[1213] = str->add("e/widgets/check");
-strings[1214] = str->add("e/widgets/check_icon");
-strings[1215] = str->add("e/widgets/radio");
-strings[1216] = str->add("e/widgets/radio_icon");
-strings[1217] = str->add("e/widgets/button");
-strings[1218] = str->add("e/widgets/scrollframe");
-strings[1219] = str->add("e/widgets/ilist");
-strings[1220] = str->add("e/widgets/ilist_odd");
-strings[1221] = str->add("e/widgets/ilist_header");
-strings[1222] = str->add("e/widgets/ilist_header_odd");
-strings[1223] = str->add("e/widgets/entry");
-strings[1224] = str->add("e/widgets/entry/text");
-strings[1225] = str->add("e/widgets/entry/cursor");
-strings[1226] = str->add("e/widgets/entry/selection");
-strings[1227] = str->add("e/widgets/preview");
-strings[1228] = str->add("e/widgets/deskpreview/desk");
-strings[1229] = str->add("e/widgets/color_well");
-strings[1230] = str->add("e/widgets/spectrum");
-strings[1231] = str->add("e/widgets/cslider");
-strings[1232] = str->add("e/widgets/slider_vertical");
-strings[1233] = str->add("e/widgets/slider_horizontal");
-strings[1234] = str->add("e/widgets/frame");
-strings[1235] = str->add("e/widgets/label");
-strings[1236] = str->add("e/widgets/fontpreview");
-strings[1237] = str->add("e/widgets/textblock");
-strings[1238] = str->add("e/widgets/menu/default/submenu_bg");
-strings[1239] = str->add("e/sys/halt");
-strings[1240] = str->add("e/sys/reboot");
-strings[1241] = str->add("e/sys/suspend");
-strings[1242] = str->add("e/sys/hibernate");
-strings[1243] = str->add("e/widgets/gradpreview");
-strings[61] = str->add(strings[61]);
-strings[1244] = str->add("invisible");
-strings[1245] = str->add("alternate");
-str->del(strings[1166]);
-str->del(strings[1167]);
-str->del(strings[1168]);
-str->del(strings[1169]);
-str->del(strings[1170]);
-str->del(strings[1171]);
-str->del(strings[1172]);
-str->del(strings[1173]);
-str->del(strings[1174]);
-str->del(strings[1175]);
-str->del(strings[1176]);
-str->del(strings[1177]);
-str->del(strings[1178]);
-str->del(strings[1179]);
-str->del(strings[1180]);
-str->del(strings[1181]);
-str->del(strings[1182]);
-str->del(strings[1183]);
-str->del(strings[1184]);
-str->del(strings[1185]);
-str->del(strings[1186]);
-str->del(strings[1187]);
-str->del(strings[1188]);
-str->del(strings[1189]);
-str->del(strings[1190]);
-str->del(strings[1191]);
-str->del(strings[1192]);
-str->del(strings[1193]);
-str->del(strings[1194]);
-str->del(strings[1195]);
-str->del(strings[1196]);
-str->del(strings[1197]);
-str->del(strings[1198]);
-str->del(strings[1199]);
-str->del(strings[1200]);
-str->del(strings[1201]);
-str->del(strings[1202]);
-str->del(strings[1203]);
-str->del(strings[1204]);
-str->del(strings[1205]);
-str->del(strings[1206]);
-str->del(strings[1207]);
-str->del(strings[1208]);
-str->del(strings[1209]);
-str->del(strings[1210]);
-str->del(strings[1211]);
-str->del(strings[1212]);
-str->del(strings[1213]);
-str->del(strings[1214]);
-str->del(strings[1215]);
-str->del(strings[1216]);
-str->del(strings[1217]);
-str->del(strings[1218]);
-str->del(strings[1219]);
-str->del(strings[1220]);
-str->del(strings[1221]);
-str->del(strings[1222]);
-str->del(strings[1223]);
-str->del(strings[1224]);
-str->del(strings[1225]);
-str->del(strings[1226]);
-str->del(strings[1227]);
-str->del(strings[1228]);
-str->del(strings[1229]);
-str->del(strings[1230]);
-str->del(strings[1231]);
-str->del(strings[1232]);
-str->del(strings[1233]);
-str->del(strings[1234]);
-str->del(strings[1235]);
-str->del(strings[1236]);
-str->del(strings[1237]);
-str->del(strings[1238]);
-str->del(strings[1239]);
-str->del(strings[1240]);
-str->del(strings[1241]);
-str->del(strings[1242]);
-str->del(strings[1243]);
-strings[1246] = str->add("e/desktop/background");
-strings[1247] = str->add("e/modules/battery/main");
-strings[1248] = str->add("e/modules/battery/popup");
-strings[1249] = str->add("e/widgets/border/default/border");
-strings[1250] = str->add("e/widgets/border/shaped/border");
-strings[1251] = str->add("e/widgets/border/noresize/border");
-strings[1252] = str->add("e/widgets/border/dialog/border");
-strings[1253] = str->add("e/widgets/border/noresize_dialog/border");
-strings[1254] = str->add("e/widgets/border/pixel/border");
-strings[1255] = str->add("e/widgets/border/default/close");
-strings[1256] = str->add("e/widgets/border/default/minimize");
-strings[1257] = str->add("e/widgets/border/default/maximize");
-strings[1258] = str->add("e/widgets/border/default/shade");
-strings[1259] = str->add("e/widgets/border/default/stick");
-strings[1260] = str->add("e/widgets/border/default/kill");
-strings[1261] = str->add("e/widgets/border/default/locks");
-strings[1262] = str->add("e/widgets/border/default/locks_user");
-strings[1263] = str->add("e/widgets/border/default/locks_application");
-strings[1264] = str->add("e/widgets/border/default/borderless");
-strings[1265] = str->add("e/widgets/border/default/fullscreen");
-strings[1266] = str->add("e/widgets/border/default/remember");
-strings[1267] = str->add("e/widgets/border/default/skip_winlist");
-strings[1268] = str->add("e/widgets/border/default/skip");
-strings[1269] = str->add("e/widgets/border/default/skip_pager");
-strings[1270] = str->add("e/widgets/border/default/sendto");
-strings[1271] = str->add("e/widgets/border/default/stacking");
-strings[1272] = str->add("e/widgets/border/default/stack_on_top");
-strings[1273] = str->add("e/widgets/border/default/stack_normal");
-strings[1274] = str->add("e/widgets/border/default/stack_below");
-strings[1275] = str->add("e/widgets/border/default/properties");
-strings[1276] = str->add("e/modules/clock/main");
-strings[1277] = str->add("e/gadman/control");
-strings[1278] = str->add("e/gadman/popup");
-strings[1279] = str->add("e/gadman/full_bg");
-strings[1280] = str->add("e/gadman/frame");
-strings[1281] = str->add("e/modules/ibar/icon");
-strings[1282] = str->add("e/modules/ibar/icon_overlay");
-strings[1283] = str->add("e/modules/ibar/drop");
-strings[1284] = str->add("e/modules/ibar/drop_overlay");
-strings[1285] = str->add("e/widgets/menu/default/background");
-strings[1286] = str->add("e/widgets/menu/default/separator");
-strings[1287] = str->add("e/widgets/menu/default/item_bg");
-strings[1288] = str->add("e/widgets/menu/default/submenu_bg");
-strings[1289] = str->add("e/widgets/menu/default/check");
-strings[1290] = str->add("e/widgets/menu/default/radio");
-strings[1291] = str->add("e/widgets/menu/default/icon");
-strings[1292] = str->add("e/widgets/menu/default/label");
-strings[1293] = str->add("e/widgets/menu/default/submenu");
-strings[1294] = str->add("e/modules/pager/popup");
-strings[1295] = str->add("e/modules/pager/desk");
-strings[1296] = str->add("e/modules/pager/window");
-strings[1297] = str->add("e/widgets/border/default/resize");
-strings[1298] = str->add("e/widgets/border/default/move");
-strings[1299] = str->add("e/modules/temperature/main");
-strings[1300] = str->add("e/error/main");
-strings[1301] = str->add("e/modules/cpufreq/main");
-strings[1302] = str->add("e/modules/ibox/icon");
-strings[1303] = str->add("e/modules/ibox/icon_overlay");
-strings[1304] = str->add("e/modules/ibox/drop");
-strings[1305] = str->add("e/modules/ibox/drop_overlay");
-strings[1306] = str->add("e/modules/start/main");
-strings[1307] = str->add("e/widgets/winlist/main");
-strings[1308] = str->add("e/widgets/winlist/item");
-strings[1309] = str->add("e/transpreview/0");
-strings[1310] = str->add("e/transpreview/1");
-strings[1311] = str->add("e/transitions/crossfade");
-strings[1312] = str->add("e/transitions/vswipe");
-strings[1313] = str->add("e/widgets/dialog/main");
-strings[1314] = str->add("e/widgets/dialog/text");
-strings[1315] = str->add("e/widgets/configure/main");
-strings[1316] = str->add("e/icons/enlightenment/e");
-strings[1317] = str->add("e/icons/enlightenment/reset");
-strings[1318] = str->add("e/icons/enlightenment/exit");
-strings[1319] = str->add("e/icons/enlightenment/logout");
-strings[1320] = str->add("e/icons/enlightenment/halt");
-strings[1321] = str->add("e/icons/enlightenment/reboot");
-strings[1322] = str->add("e/icons/enlightenment/suspend");
-strings[1323] = str->add("e/icons/enlightenment/hibernate");
-strings[1324] = str->add("e/icons/enlightenment/screen_setup");
-strings[1325] = str->add("e/icons/enlightenment/themes");
-strings[1326] = str->add("e/icons/enlightenment/colors");
-strings[1327] = str->add("e/icons/enlightenment/windows");
-strings[1328] = str->add("e/icons/enlightenment/lost_windows");
-strings[1329] = str->add("e/icons/enlightenment/focus");
-strings[1330] = str->add("e/icons/enlightenment/modules");
-strings[1331] = str->add("e/icons/enlightenment/favorites");
-strings[1332] = str->add("e/icons/enlightenment/desktops");
-strings[1333] = str->add("e/icons/enlightenment/configuration");
-strings[1334] = str->add("e/icons/enlightenment/intl");
-strings[1335] = str->add("e/icons/enlightenment/system");
-strings[1336] = str->add("e/icons/enlightenment/run");
-strings[1337] = str->add("e/icons/enlightenment/directories");
-strings[1338] = str->add("e/icons/enlightenment/fileman");
-strings[1339] = str->add("e/icons/enlightenment/unknown");
-strings[1340] = str->add("e/icons/widget/new_dialog");
-strings[1341] = str->add("e/icons/widget/up_arrow");
-strings[1342] = str->add("e/icons/widget/down_arrow");
-strings[1343] = str->add("e/icons/widget/up_dir");
-strings[1344] = str->add("e/icons/enlightenment/mouse");
-strings[1345] = str->add("e/icons/enlightenment/mouse_left");
-strings[1346] = str->add("e/icons/enlightenment/mouse_middle");
-strings[1347] = str->add("e/icons/enlightenment/mouse_right");
-strings[1348] = str->add("e/icons/enlightenment/mouse_extra");
-strings[1349] = str->add("e/icons/enlightenment/mouse_wheel");
-strings[1350] = str->add("e/icons/enlightenment/mouse_clean");
-strings[1351] = str->add("e/icons/enlightenment/keys");
-strings[1352] = str->add("e/icons/enlightenment/desklock");
-strings[1353] = str->add("e/icons/enlightenment/desklock_menu");
-strings[1354] = str->add("e/icons/enlightenment/regenerate_menus");
-strings[1355] = str->add("e/icons/enlightenment/screen_resolution");
-strings[1356] = str->add("e/icons/enlightenment/shelf");
-strings[1357] = str->add("e/icons/enlightenment/fonts");
-strings[1358] = str->add("e/icons/enlightenment/background");
-strings[1359] = str->add("e/icons/enlightenment/icon_theme");
-strings[1360] = str->add("e/icons/enlightenment/applications");
-strings[1361] = str->add("e/icons/enlightenment/transitions");
-strings[1362] = str->add("e/icons/enlightenment/performance");
-strings[1363] = str->add("e/icons/enlightenment/startup");
-strings[1364] = str->add("e/icons/enlightenment/winlist");
-strings[1365] = str->add("e/icons/enlightenment/window_manipulation");
-strings[1366] = str->add("e/icons/enlightenment/menus");
-strings[1367] = str->add("e/icons/enlightenment/screen_normal");
-strings[1368] = str->add("e/icons/enlightenment/screen_around");
-strings[1369] = str->add("e/icons/enlightenment/screen_left");
-strings[1370] = str->add("e/icons/enlightenment/screen_right");
-strings[1371] = str->add("e/icons/enlightenment/screen_vflip");
-strings[1372] = str->add("e/icons/enlightenment/screen_hflip");
-strings[1373] = str->add("e/icons/enlightenment/shelf_position_bottom");
-strings[1374] = str->add("e/icons/enlightenment/shelf_position_bottom_left");
-strings[1375] = str->add("e/icons/enlightenment/shelf_position_bottom_right");
-strings[1376] = str->add("e/icons/enlightenment/shelf_position_top");
-strings[1377] = str->add("e/icons/enlightenment/shelf_position_top_left");
-strings[1378] = str->add("e/icons/enlightenment/shelf_position_top_right");
-strings[1379] = str->add("e/icons/enlightenment/shelf_position_left");
-strings[1380] = str->add("e/icons/enlightenment/shelf_position_left_top");
-strings[1381] = str->add("e/icons/enlightenment/shelf_position_left_bottom");
-strings[1382] = str->add("e/icons/enlightenment/shelf_position_right");
-strings[1383] = str->add("e/icons/enlightenment/shelf_position_right_top");
-strings[1384] = str->add("e/icons/enlightenment/shelf_position_right_bottom");
-strings[1385] = str->add("e/icons/enlightenment/shelf_bottom_desk");
-strings[1386] = str->add("e/icons/enlightenment/shelf_custom");
-strings[1387] = str->add("e/icons/enlightenment/shelf_dock");
-strings[1388] = str->add("e/icons/enlightenment/shelf_menu_bar");
-strings[1389] = str->add("e/icons/enlightenment/shelf_panel");
-strings[1390] = str->add("e/icons/enlightenment/shelf_top_desk");
-strings[1391] = str->add("e/icons/enlightenment/wallpaper_stretch");
-strings[1392] = str->add("e/icons/enlightenment/wallpaper_tile");
-strings[1393] = str->add("e/icons/enlightenment/wallpaper_center");
-strings[1394] = str->add("e/icons/enlightenment/wallpaper_scale_aspect_in");
-strings[1395] = str->add("e/icons/enlightenment/wallpaper_scale_aspect_out");
-strings[1396] = str->add("e/icons/enlightenment/gradient_h");
-strings[1397] = str->add("e/icons/enlightenment/gradient_v");
-strings[1398] = str->add("e/icons/enlightenment/gradient_du");
-strings[1399] = str->add("e/icons/enlightenment/gradient_dd");
-strings[1400] = str->add("e/icons/enlightenment/gradient_rad");
-strings[1401] = str->add("e/icons/enlightenment/advanced");
-strings[1402] = str->add("e/icons/enlightenment/behavior");
-strings[1403] = str->add("e/icons/enlightenment/appearance");
-strings[1404] = str->add("e/icons/enlightenment/extensions");
-strings[1405] = str->add("e/icons/enlightenment/imc");
-strings[1406] = str->add("e/icons/enlightenment/file_icons");
-strings[1407] = str->add("e/icons/enlightenment/menu_settings");
-strings[1408] = str->add("e/icons/enlightenment/ibar_applications");
-strings[1409] = str->add("e/icons/enlightenment/restart_applications");
-strings[1410] = str->add("e/icons/enlightenment/startup_applications");
-strings[1411] = str->add("e/icons/enlightenment/power_management");
-strings[1412] = str->add("e/icons/enlightenment/screensaver");
-strings[1413] = str->add("e/icons/enlightenment/window_remembers");
-strings[1414] = str->add("e/pointer/enlightenment/default/color");
-strings[1415] = str->add("e/pointer/enlightenment/default/mono");
-strings[1416] = str->add("e/widgets/about/main");
-strings[1417] = str->add("e/theme/about");
-strings[1418] = str->add("e/widgets/entry");
-strings[1419] = str->add("e/widgets/entry/text");
-strings[1420] = str->add("e/widgets/entry/cursor");
-strings[1421] = str->add("e/widgets/entry/selection");
-strings[1422] = str->add("e/fileman/default/window/main");
-strings[1423] = str->add("e/fileman/default/scrollframe");
-strings[1424] = str->add("e/fileman/default/list/variable");
-strings[1425] = str->add("e/fileman/default/list_odd/variable");
-strings[1426] = str->add("e/fileman/default/list/fixed");
-strings[1427] = str->add("e/fileman/default/list_odd/fixed");
-strings[1428] = str->add("e/fileman/default/icon/fixed");
-strings[1429] = str->add("e/fileman/default/icon/variable");
-strings[1430] = str->add("e/fileman/default/overlay");
-strings[1431] = str->add("e/fileman/default/list/drop_between");
-strings[1432] = str->add("e/fileman/default/list/drop_in");
-strings[1433] = str->add("e/fileman/desktop/scrollframe");
-strings[1434] = str->add("e/fileman/desktop/icon/fixed");
-strings[1435] = str->add("e/fileman/desktop/icon/variable");
-strings[1436] = str->add("e/fileman/desktop/overlay");
-strings[1437] = str->add("e/fileman/desktop/list/drop_between");
-strings[1438] = str->add("e/fileman/desktop/list/drop_in");
-strings[1439] = str->add("e/fileman/default/rubberband");
-strings[1440] = str->add("e/icons/fileman/folder");
-strings[1441] = str->add("e/icons/fileman/file");
-strings[1442] = str->add("e/icons/fileman/home");
-strings[1443] = str->add("e/icons/fileman/desktop");
-strings[1444] = str->add("e/icons/fileman/hdd");
-strings[1445] = str->add("e/icons/fileman/hd");
-strings[1446] = str->add("e/icons/fileman/mime/application/pdf");
-strings[1447] = str->add("e/icons/fileman/mime/text/x-csrc");
-strings[1448] = str->add("e/icons/fileman/mime/text/x-chdr");
-strings[1449] = str->add("e/icons/fileman/mime/application/x-object");
-strings[1450] = str->add("e/icons/fileman/mime/application/x-shellscript");
-strings[1451] = str->add("e/icons/fileman/mime/image/png");
-strings[1452] = str->add("e/icons/fileman/mime/image/jpeg");
-strings[1453] = str->add("e/icons/fileman/mime/video/x-msvideo");
-strings[1454] = str->add("e/icons/fileman/mime/audio/mpeg");
-strings[1455] = str->add("e/icons/fileman/mime/application/x-xcf");
-strings[1456] = str->add("e/icons/fileman/mime/text/x-c++src");
-strings[1457] = str->add("e/icons/fileman/mime/text/x-csharp");
-strings[1458] = str->add("e/icons/fileman/mime/text/x-patch");
-strings[1459] = str->add("e/icons/fileman/mime/application/msword");
-strings[1460] = str->add("e/icons/fileman/mime/application/ogg");
-strings[1461] = str->add("e/icons/fileman/mime/text/plain");
-strings[1462] = str->add("e/icons/fileman/mime/application/x-bzip");
-strings[1463] = str->add("e/icons/fileman/mime/application/x-deb");
-strings[1464] = str->add("e/icons/fileman/mime/application/x-font-ttf");
-strings[1465] = str->add("e/icons/fileman/mime/application/x-font-pcf");
-strings[1466] = str->add("e/icons/fileman/mime/application/x-font-bdf");
-strings[1467] = str->add("e/icons/fileman/mime/text/css");
-strings[1468] = str->add("e/icons/fileman/mime/text/html");
-strings[1468] = str->add(strings[1468]);
-strings[1469] = str->add("e/icons/fileman/mime/application/zip");
-strings[1470] = str->add("e/icons/fileman/mime/application/x-gzip");
-strings[1471] = str->add("e/icons/fileman/mime/application/x-bzip-compressed-tar");
-strings[1472] = str->add("e/icons/fileman/mime/application/x-bzip2-compressed-tar");
-strings[1473] = str->add("e/icons/fileman/mime/application/x-compressed-tar");
-strings[1474] = str->add("e/icons/fileman/mime/application/x-tar");
-strings[1475] = str->add("e/icons/fileman/mime/application/x-rar");
-strings[1476] = str->add("e/icons/fileman/mime/video/mpeg");
-strings[1477] = str->add("e/icons/fileman/mime/video");
-strings[1478] = str->add("e/icons/fileman/mime/text");
-strings[1479] = str->add("e/icons/fileman/mime/image");
-strings[1480] = str->add("e/icons/fileman/mime/audio");
-strings[1481] = str->add("e/fileman/default/button/open");
-strings[1482] = str->add("e/fileman/default/button/copy");
-strings[1483] = str->add("e/fileman/default/button/cut");
-strings[1484] = str->add("e/fileman/default/button/paste");
-strings[1485] = str->add("e/fileman/default/button/delete");
-strings[1486] = str->add("e/fileman/default/button/rename");
-strings[1487] = str->add("e/fileman/default/button/properties");
-strings[1488] = str->add("e/fileman/default/button/arrange_name");
-strings[1489] = str->add("e/fileman/default/button/arrange");
-strings[1490] = str->add("e/fileman/default/button/arrange_time");
-strings[1491] = str->add("e/fileman/default/button/new");
-strings[1492] = str->add("e/fileman/default/button/new_dir");
-strings[1493] = str->add("e/fileman/default/button/refresh");
-strings[1494] = str->add("e/fileman/default/button/view_details");
-strings[1495] = str->add("e/fileman/default/button/view_name");
-strings[1496] = str->add("e/fileman/default/button/view");
-strings[1497] = str->add("e/fileman/default/button/select");
-strings[1498] = str->add("e/widgets/fileselector/main");
-strings[1499] = str->add("e/widgets/check");
-strings[1500] = str->add("e/widgets/check_icon");
-strings[1501] = str->add("e/widgets/radio");
-strings[1502] = str->add("e/widgets/radio_icon");
-strings[1503] = str->add("e/widgets/frame");
-strings[1504] = str->add("e/widgets/button");
-strings[1505] = str->add("e/widgets/label");
-strings[1506] = str->add("e/widgets/scrollframe");
-strings[1507] = str->add("e/widgets/ilist");
-strings[1508] = str->add("e/widgets/ilist_odd");
-strings[1509] = str->add("e/widgets/ilist_header");
-strings[1510] = str->add("e/widgets/tlist");
-strings[1511] = str->add("e/widgets/tlist_odd");
-strings[1512] = str->add("e/widgets/slider_vertical");
-strings[1513] = str->add("e/widgets/slider_horizontal");
-strings[1514] = str->add("e/widgets/exebuf/main");
-strings[1515] = str->add("e/widgets/exebuf/item");
-strings[1516] = str->add("e/desklock/background");
-strings[1517] = str->add("e/desklock/login_box");
-strings[1518] = str->add("e/widgets/textblock");
-strings[1519] = str->add("e/shelf/default/base");
-strings[1520] = str->add("e/shelf/default/inset");
-strings[1521] = str->add("e/shelf/default/plain");
-strings[1522] = str->add("e/shelf/alternate/base");
-strings[1523] = str->add("e/shelf/alternate/inset");
-strings[1524] = str->add("e/shelf/alternate/plain");
-strings[1525] = str->add("e/shelf/invisible/base");
-strings[1526] = str->add("e/shelf/invisible/inset");
-strings[1527] = str->add("e/shelf/invisible/plain");
-strings[1528] = str->add("e/widgets/preview");
-strings[1529] = str->add("e/widgets/cslider");
-strings[1530] = str->add("e/widgets/spectrum");
-strings[1531] = str->add("e/widgets/color_well");
-strings[1532] = str->add("e/sys/logout");
-strings[1533] = str->add("e/sys/halt");
-strings[1534] = str->add("e/sys/reboot");
-strings[1535] = str->add("e/sys/suspend");
-strings[1536] = str->add("e/sys/hibernate");
-strings[1537] = str->add("e/widgets/deskpreview/desk");
-strings[1538] = str->add("e/widgets/fontpreview");
-strings[1539] = str->add("e/wizard/extra");
-strings[1540] = str->add("e/wizard/main");
-strings[1541] = str->add("e/toolbar/default/base");
-strings[1542] = str->add("e/widgets/slidesel");
-strings[1543] = str->add("e/modules/mixer/main");
-strings[1544] = str->add("e/modules/connman/main");
-strings[1545] = str->add("e/modules/connman/network");
-strings[1546] = str->add("e/widgets/gradpreview");
-str->del(strings[1246]);
-str->del(strings[1247]);
-str->del(strings[1248]);
-str->del(strings[1249]);
-str->del(strings[1250]);
-str->del(strings[1251]);
-str->del(strings[1252]);
-str->del(strings[1253]);
-str->del(strings[1254]);
-str->del(strings[1255]);
-str->del(strings[1256]);
-str->del(strings[1257]);
-str->del(strings[1258]);
-str->del(strings[1259]);
-str->del(strings[1260]);
-str->del(strings[1261]);
-str->del(strings[1262]);
-str->del(strings[1263]);
-str->del(strings[1264]);
-str->del(strings[1265]);
-str->del(strings[1266]);
-str->del(strings[1267]);
-str->del(strings[1268]);
-str->del(strings[1269]);
-str->del(strings[1270]);
-str->del(strings[1271]);
-str->del(strings[1272]);
-str->del(strings[1273]);
-str->del(strings[1274]);
-str->del(strings[1275]);
-str->del(strings[1276]);
-str->del(strings[1277]);
-str->del(strings[1278]);
-str->del(strings[1279]);
-str->del(strings[1280]);
-str->del(strings[1281]);
-str->del(strings[1282]);
-str->del(strings[1283]);
-str->del(strings[1284]);
-str->del(strings[1285]);
-str->del(strings[1286]);
-str->del(strings[1287]);
-str->del(strings[1288]);
-str->del(strings[1289]);
-str->del(strings[1290]);
-str->del(strings[1291]);
-str->del(strings[1292]);
-str->del(strings[1293]);
-str->del(strings[1294]);
-str->del(strings[1295]);
-str->del(strings[1296]);
-str->del(strings[1297]);
-str->del(strings[1298]);
-str->del(strings[1299]);
-str->del(strings[1300]);
-str->del(strings[1301]);
-str->del(strings[1302]);
-str->del(strings[1303]);
-str->del(strings[1304]);
-str->del(strings[1305]);
-str->del(strings[1306]);
-str->del(strings[1307]);
-str->del(strings[1308]);
-str->del(strings[1309]);
-str->del(strings[1310]);
-str->del(strings[1311]);
-str->del(strings[1312]);
-str->del(strings[1313]);
-str->del(strings[1314]);
-str->del(strings[1315]);
-str->del(strings[1316]);
-str->del(strings[1317]);
-str->del(strings[1318]);
-str->del(strings[1319]);
-str->del(strings[1320]);
-str->del(strings[1321]);
-str->del(strings[1322]);
-str->del(strings[1323]);
-str->del(strings[1324]);
-str->del(strings[1325]);
-str->del(strings[1326]);
-str->del(strings[1327]);
-str->del(strings[1328]);
-str->del(strings[1329]);
-str->del(strings[1330]);
-str->del(strings[1331]);
-str->del(strings[1332]);
-str->del(strings[1333]);
-str->del(strings[1334]);
-str->del(strings[1335]);
-str->del(strings[1336]);
-str->del(strings[1337]);
-str->del(strings[1338]);
-str->del(strings[1339]);
-str->del(strings[1340]);
-str->del(strings[1341]);
-str->del(strings[1342]);
-str->del(strings[1343]);
-str->del(strings[1344]);
-str->del(strings[1345]);
-str->del(strings[1346]);
-str->del(strings[1347]);
-str->del(strings[1348]);
-str->del(strings[1349]);
-str->del(strings[1350]);
-str->del(strings[1351]);
-str->del(strings[1352]);
-str->del(strings[1353]);
-str->del(strings[1354]);
-str->del(strings[1355]);
-str->del(strings[1356]);
-str->del(strings[1357]);
-str->del(strings[1358]);
-str->del(strings[1359]);
-str->del(strings[1360]);
-str->del(strings[1361]);
-str->del(strings[1362]);
-str->del(strings[1363]);
-str->del(strings[1364]);
-str->del(strings[1365]);
-str->del(strings[1366]);
-str->del(strings[1367]);
-str->del(strings[1368]);
-str->del(strings[1369]);
-str->del(strings[1370]);
-str->del(strings[1371]);
-str->del(strings[1372]);
-str->del(strings[1373]);
-str->del(strings[1374]);
-str->del(strings[1375]);
-str->del(strings[1376]);
-str->del(strings[1377]);
-str->del(strings[1378]);
-str->del(strings[1379]);
-str->del(strings[1380]);
-str->del(strings[1381]);
-str->del(strings[1382]);
-str->del(strings[1383]);
-str->del(strings[1384]);
-str->del(strings[1385]);
-str->del(strings[1386]);
-str->del(strings[1387]);
-str->del(strings[1388]);
-str->del(strings[1389]);
-str->del(strings[1390]);
-str->del(strings[1391]);
-str->del(strings[1392]);
-str->del(strings[1393]);
-str->del(strings[1394]);
-str->del(strings[1395]);
-str->del(strings[1396]);
-str->del(strings[1397]);
-str->del(strings[1398]);
-str->del(strings[1399]);
-str->del(strings[1400]);
-str->del(strings[1401]);
-str->del(strings[1402]);
-str->del(strings[1403]);
-str->del(strings[1404]);
-str->del(strings[1405]);
-str->del(strings[1406]);
-str->del(strings[1407]);
-str->del(strings[1408]);
-str->del(strings[1409]);
-str->del(strings[1410]);
-str->del(strings[1411]);
-str->del(strings[1412]);
-str->del(strings[1413]);
-str->del(strings[1414]);
-str->del(strings[1415]);
-str->del(strings[1416]);
-str->del(strings[1417]);
-str->del(strings[1418]);
-str->del(strings[1419]);
-str->del(strings[1420]);
-str->del(strings[1421]);
-str->del(strings[1422]);
-str->del(strings[1423]);
-str->del(strings[1424]);
-str->del(strings[1425]);
-str->del(strings[1426]);
-str->del(strings[1427]);
-str->del(strings[1428]);
-str->del(strings[1429]);
-str->del(strings[1430]);
-str->del(strings[1431]);
-str->del(strings[1432]);
-str->del(strings[1433]);
-str->del(strings[1434]);
-str->del(strings[1435]);
-str->del(strings[1436]);
-str->del(strings[1437]);
-str->del(strings[1438]);
-str->del(strings[1439]);
-str->del(strings[1440]);
-str->del(strings[1441]);
-str->del(strings[1442]);
-str->del(strings[1443]);
-str->del(strings[1444]);
-str->del(strings[1445]);
-str->del(strings[1446]);
-str->del(strings[1447]);
-str->del(strings[1448]);
-str->del(strings[1449]);
-str->del(strings[1450]);
-str->del(strings[1451]);
-str->del(strings[1452]);
-str->del(strings[1453]);
-str->del(strings[1454]);
-str->del(strings[1455]);
-str->del(strings[1456]);
-str->del(strings[1457]);
-str->del(strings[1458]);
-str->del(strings[1459]);
-str->del(strings[1460]);
-str->del(strings[1461]);
-str->del(strings[1462]);
-str->del(strings[1463]);
-str->del(strings[1464]);
-str->del(strings[1465]);
-str->del(strings[1466]);
-str->del(strings[1467]);
-str->del(strings[1468]);
-str->del(strings[1468]);
-str->del(strings[1469]);
-str->del(strings[1470]);
-str->del(strings[1471]);
-str->del(strings[1472]);
-str->del(strings[1473]);
-str->del(strings[1474]);
-str->del(strings[1475]);
-str->del(strings[1476]);
-str->del(strings[1477]);
-str->del(strings[1478]);
-str->del(strings[1479]);
-str->del(strings[1480]);
-str->del(strings[1481]);
-str->del(strings[1482]);
-str->del(strings[1483]);
-str->del(strings[1484]);
-str->del(strings[1485]);
-str->del(strings[1486]);
-str->del(strings[1487]);
-str->del(strings[1488]);
-str->del(strings[1489]);
-str->del(strings[1490]);
-str->del(strings[1491]);
-str->del(strings[1492]);
-str->del(strings[1493]);
-str->del(strings[1494]);
-str->del(strings[1495]);
-str->del(strings[1496]);
-str->del(strings[1497]);
-str->del(strings[1498]);
-str->del(strings[1499]);
-str->del(strings[1500]);
-str->del(strings[1501]);
-str->del(strings[1502]);
-str->del(strings[1503]);
-str->del(strings[1504]);
-str->del(strings[1505]);
-str->del(strings[1506]);
-str->del(strings[1507]);
-str->del(strings[1508]);
-str->del(strings[1509]);
-str->del(strings[1510]);
-str->del(strings[1511]);
-str->del(strings[1512]);
-str->del(strings[1513]);
-str->del(strings[1514]);
-str->del(strings[1515]);
-str->del(strings[1516]);
-str->del(strings[1517]);
-str->del(strings[1518]);
-str->del(strings[1519]);
-str->del(strings[1520]);
-str->del(strings[1521]);
-str->del(strings[1522]);
-str->del(strings[1523]);
-str->del(strings[1524]);
-str->del(strings[1525]);
-str->del(strings[1526]);
-str->del(strings[1527]);
-str->del(strings[1528]);
-str->del(strings[1529]);
-str->del(strings[1530]);
-str->del(strings[1531]);
-str->del(strings[1532]);
-str->del(strings[1533]);
-str->del(strings[1534]);
-str->del(strings[1535]);
-str->del(strings[1536]);
-str->del(strings[1537]);
-str->del(strings[1538]);
-str->del(strings[1539]);
-str->del(strings[1540]);
-str->del(strings[1541]);
-str->del(strings[1542]);
-str->del(strings[1543]);
-str->del(strings[1544]);
-str->del(strings[1545]);
-str->del(strings[1546]);
-strings[1547] = str->add("/usr/devel/share/enlightenment/data/images/test.png");
-strings[1548] = str->add("/usr/devel/share/enlightenment/data/images/test.png//://(nil)");
-strings[1547] = str->add(strings[1547]);
-str->del(strings[1547]);
-strings[1549] = str->add("/usr/devel/share/enlightenment/data/images/test.jpg");
-strings[1550] = str->add("/usr/devel/share/enlightenment/data/images/test.jpg//://(nil)");
-strings[1549] = str->add(strings[1549]);
-str->del(strings[1549]);
-strings[1551] = str->add("/usr/devel/share/enlightenment/data/images/test.edj");
-strings[1552] = str->add("images/0");
-strings[1553] = str->add("/usr/devel/share/enlightenment/data/images/test.edj//://images/0");
-strings[1551] = str->add(strings[1551]);
-strings[1552] = str->add(strings[1552]);
-str->del(strings[1551]);
-str->del(strings[1552]);
-strings[373] = str->add(strings[373]);
-strings[374] = str->add(strings[374]);
-str->del(strings[373]);
-str->del(strings[374]);
-strings[1554] = str->add("en");
-strings[1555] = str->add("US");
-strings[1556] = str->add("UTF-8");
-strings[1554] = str->add(strings[1554]);
-strings[1557] = str->add("AU");
-strings[1558] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1557]);
-str->del(strings[1558]);
-strings[1554] = str->add(strings[1554]);
-strings[1559] = str->add("BW");
-strings[1560] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1559]);
-str->del(strings[1560]);
-strings[1554] = str->add(strings[1554]);
-strings[1561] = str->add("CA");
-strings[1562] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1561]);
-str->del(strings[1562]);
-strings[1554] = str->add(strings[1554]);
-strings[1563] = str->add("DK");
-strings[1564] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1563]);
-str->del(strings[1564]);
-strings[1554] = str->add(strings[1554]);
-strings[1565] = str->add("GB");
-strings[1566] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1565]);
-str->del(strings[1566]);
-strings[1554] = str->add(strings[1554]);
-strings[1567] = str->add("HK");
-strings[1568] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1567]);
-str->del(strings[1568]);
-strings[1554] = str->add(strings[1554]);
-strings[1569] = str->add("IE");
-strings[1570] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1569]);
-str->del(strings[1570]);
-strings[1554] = str->add(strings[1554]);
-strings[1571] = str->add("IN");
-str->del(strings[1554]);
-str->del(strings[1571]);
-strings[1554] = str->add(strings[1554]);
-strings[1572] = str->add("NZ");
-strings[1573] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1572]);
-str->del(strings[1573]);
-strings[1554] = str->add(strings[1554]);
-strings[1574] = str->add("PH");
-strings[1575] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1574]);
-str->del(strings[1575]);
-strings[1554] = str->add(strings[1554]);
-strings[1576] = str->add("SG");
-strings[1577] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1576]);
-str->del(strings[1577]);
-strings[1554] = str->add(strings[1554]);
-strings[1555] = str->add(strings[1555]);
-strings[1578] = str->add("utf8");
-str->del(strings[1554]);
-str->del(strings[1555]);
-str->del(strings[1578]);
-str->del(strings[1554]);
-str->del(strings[1555]);
-str->del(strings[1556]);
-strings[1579] = str->add("en");
-strings[1580] = str->add("US");
-strings[1581] = str->add("UTF-8");
-str->del(strings[1579]);
-str->del(strings[1580]);
-str->del(strings[1581]);
-strings[373] = str->add(strings[373]);
-strings[374] = str->add(strings[374]);
-str->del(strings[373]);
-str->del(strings[374]);
-strings[1582] = str->add("en");
-strings[1583] = str->add("US");
-strings[1584] = str->add("UTF-8");
-str->del(strings[1582]);
-str->del(strings[1583]);
-str->del(strings[1584]);
-strings[1585] = str->add("Window : Actions");
-strings[1586] = str->add("Move");
-strings[67] = str->add(strings[67]);
-strings[1587] = str->add("Resize");
-strings[69] = str->add(strings[69]);
-strings[127] = str->add(strings[127]);
-strings[1588] = str->add("Window Menu");
-strings[71] = str->add(strings[71]);
-strings[1589] = str->add("Raise");
-strings[81] = str->add(strings[81]);
-strings[1590] = str->add("Lower");
-strings[82] = str->add(strings[82]);
-strings[1591] = str->add("Close");
-strings[84] = str->add(strings[84]);
-strings[1592] = str->add("Kill");
-strings[86] = str->add(strings[86]);
-strings[1593] = str->add("Window : State");
-strings[1594] = str->add("Sticky Mode Toggle");
-strings[89] = str->add(strings[89]);
-strings[1595] = str->add("Iconic Mode Toggle");
-strings[91] = str->add(strings[91]);
-strings[1596] = str->add("Fullscreen Mode Toggle");
-strings[1597] = str->add("window_fullscreen_toggle");
-strings[1598] = str->add("Maximize");
-strings[93] = str->add(strings[93]);
-strings[1599] = str->add("Maximize Vertically");
-strings[93] = str->add(strings[93]);
-strings[95] = str->add(strings[95]);
-strings[1600] = str->add("Maximize Horizontally");
-strings[93] = str->add(strings[93]);
-strings[96] = str->add(strings[96]);
-strings[1601] = str->add("Maximize Fullscreen");
-strings[93] = str->add(strings[93]);
-strings[1602] = str->add("fullscreen");
-strings[1603] = str->add("Maximize Mode \"Smart\"");
-strings[93] = str->add(strings[93]);
-strings[162] = str->add(strings[162]);
-strings[1604] = str->add("Maximize Mode \"Expand\"");
-strings[93] = str->add(strings[93]);
-strings[163] = str->add(strings[163]);
-strings[1605] = str->add("Maximize Mode \"Fill\"");
-strings[93] = str->add(strings[93]);
-strings[1606] = str->add("fill");
-strings[1607] = str->add("Shade Up Mode Toggle");
-strings[98] = str->add(strings[98]);
-strings[147] = str->add(strings[147]);
-strings[1608] = str->add("Shade Down Mode Toggle");
-strings[98] = str->add(strings[98]);
-strings[1609] = str->add("down");
-strings[1610] = str->add("Shade Left Mode Toggle");
-strings[98] = str->add(strings[98]);
-strings[1611] = str->add("left");
-strings[1612] = str->add("Shade Right Mode Toggle");
-strings[98] = str->add(strings[98]);
-strings[1613] = str->add("right");
-strings[1614] = str->add("Shade Mode Toggle");
-strings[98] = str->add(strings[98]);
-strings[1615] = str->add("Toggle Borderless State");
-strings[1616] = str->add("window_borderless_toggle");
-strings[1617] = str->add("Toggle Pinned State");
-strings[1618] = str->add("window_pinned_toggle");
-strings[1619] = str->add("Desktop");
-strings[1620] = str->add("Flip Desktop Left");
-strings[73] = str->add(strings[73]);
-strings[74] = str->add(strings[74]);
-strings[1621] = str->add("Flip Desktop Right");
-strings[73] = str->add(strings[73]);
-strings[76] = str->add(strings[76]);
-strings[1622] = str->add("Flip Desktop Up");
-strings[73] = str->add(strings[73]);
-strings[78] = str->add(strings[78]);
-strings[1623] = str->add("Flip Desktop Down");
-strings[73] = str->add(strings[73]);
-strings[80] = str->add(strings[80]);
-strings[1624] = str->add("Flip Desktop By...");
-strings[73] = str->add(strings[73]);
-strings[1625] = str->add("syntax: X-offset Y-offset, example: -1 0");
-strings[1626] = str->add("Show The Desktop");
-strings[142] = str->add(strings[142]);
-strings[1627] = str->add("Flip Desktop To...");
-strings[1628] = str->add("desk_flip_to");
-strings[1629] = str->add("syntax: X Y, example: 1 2");
-strings[1630] = str->add("Flip Desktop Linearly...");
-strings[99] = str->add(strings[99]);
-strings[1631] = str->add("syntax: N-offset, example: -2");
-strings[1632] = str->add("Switch To Desktop 0");
-strings[103] = str->add(strings[103]);
-strings[104] = str->add(strings[104]);
-strings[1633] = str->add("Switch To Desktop 1");
-strings[103] = str->add(strings[103]);
-strings[101] = str->add(strings[101]);
-strings[1634] = str->add("Switch To Desktop 2");
-strings[103] = str->add(strings[103]);
-strings[107] = str->add(strings[107]);
-strings[1635] = str->add("Switch To Desktop 3");
-strings[103] = str->add(strings[103]);
-strings[109] = str->add(strings[109]);
-strings[1636] = str->add("Switch To Desktop 4");
-strings[103] = str->add(strings[103]);
-strings[111] = str->add(strings[111]);
-strings[1637] = str->add("Switch To Desktop 5");
-strings[103] = str->add(strings[103]);
-strings[113] = str->add(strings[113]);
-strings[1638] = str->add("Switch To Desktop 6");
-strings[103] = str->add(strings[103]);
-strings[115] = str->add(strings[115]);
-strings[1639] = str->add("Switch To Desktop 7");
-strings[103] = str->add(strings[103]);
-strings[117] = str->add(strings[117]);
-strings[1640] = str->add("Switch To Desktop 8");
-strings[103] = str->add(strings[103]);
-strings[119] = str->add(strings[119]);
-strings[1641] = str->add("Switch To Desktop 9");
-strings[103] = str->add(strings[103]);
-strings[120] = str->add(strings[120]);
-strings[1642] = str->add("Switch To Desktop 10");
-strings[103] = str->add(strings[103]);
-strings[122] = str->add(strings[122]);
-strings[1643] = str->add("Switch To Desktop 11");
-strings[103] = str->add(strings[103]);
-strings[124] = str->add(strings[124]);
-strings[1644] = str->add("Switch To Desktop...");
-strings[103] = str->add(strings[103]);
-strings[1645] = str->add("syntax: N, example: 1");
-strings[1646] = str->add("Flip Desktop Left (All Screens)");
-strings[1647] = str->add("desk_flip_by_all");
-strings[74] = str->add(strings[74]);
-strings[1648] = str->add("Flip Desktop Right (All Screens)");
-strings[1647] = str->add(strings[1647]);
-strings[76] = str->add(strings[76]);
-strings[1649] = str->add("Flip Desktop Up (All Screens)");
-strings[1647] = str->add(strings[1647]);
-strings[78] = str->add(strings[78]);
-strings[1650] = str->add("Flip Desktop Down (All Screens)");
-strings[1647] = str->add(strings[1647]);
-strings[80] = str->add(strings[80]);
-strings[1651] = str->add("Flip Desktop By... (All Screens)");
-strings[1647] = str->add(strings[1647]);
-strings[1625] = str->add(strings[1625]);
-strings[1652] = str->add("Flip Desktop To... (All Screens)");
-strings[1653] = str->add("desk_flip_to_all");
-strings[1629] = str->add(strings[1629]);
-strings[1654] = str->add("Flip Desktop Linearly... (All Screens)");
-strings[1655] = str->add("desk_linear_flip_by_all");
-strings[1631] = str->add(strings[1631]);
-strings[1656] = str->add("Switch To Desktop 0 (All Screens)");
-strings[1657] = str->add("desk_linear_flip_to_all");
-strings[104] = str->add(strings[104]);
-strings[1658] = str->add("Switch To Desktop 1 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[101] = str->add(strings[101]);
-strings[1659] = str->add("Switch To Desktop 2 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[107] = str->add(strings[107]);
-strings[1660] = str->add("Switch To Desktop 3 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[109] = str->add(strings[109]);
-strings[1661] = str->add("Switch To Desktop 4 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[111] = str->add(strings[111]);
-strings[1662] = str->add("Switch To Desktop 5 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[113] = str->add(strings[113]);
-strings[1663] = str->add("Switch To Desktop 6 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[115] = str->add(strings[115]);
-strings[1664] = str->add("Switch To Desktop 7 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[117] = str->add(strings[117]);
-strings[1665] = str->add("Switch To Desktop 8 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[119] = str->add(strings[119]);
-strings[1666] = str->add("Switch To Desktop 9 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[120] = str->add(strings[120]);
-strings[1667] = str->add("Switch To Desktop 10 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[122] = str->add(strings[122]);
-strings[1668] = str->add("Switch To Desktop 11 (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[124] = str->add(strings[124]);
-strings[1669] = str->add("Switch To Desktop... (All Screens)");
-strings[1657] = str->add(strings[1657]);
-strings[1645] = str->add(strings[1645]);
-strings[1670] = str->add("Screen");
-strings[1671] = str->add("Send Mouse To Screen 0");
-strings[144] = str->add(strings[144]);
-strings[104] = str->add(strings[104]);
-strings[1672] = str->add("Send Mouse To Screen 1");
-strings[144] = str->add(strings[144]);
-strings[101] = str->add(strings[101]);
-strings[1673] = str->add("Send Mouse To Screen...");
-strings[144] = str->add(strings[144]);
-strings[1674] = str->add("syntax: N, example: 0");
-strings[1675] = str->add("Send Mouse Forward 1 Screen");
-strings[143] = str->add(strings[143]);
-strings[101] = str->add(strings[101]);
-strings[1676] = str->add("Send Mouse Back 1 Screen");
-strings[143] = str->add(strings[143]);
-strings[100] = str->add(strings[100]);
-strings[1677] = str->add("Send Mouse Forward/Back Screens...");
-strings[143] = str->add(strings[143]);
-strings[1631] = str->add(strings[1631]);
-strings[1678] = str->add("Move To...");
-strings[1679] = str->add("window_move_to");
-strings[1680] = str->add("syntax: [ ,-]X [ ,-]Y or * [ ,-]Y or [ , -]X *, example: -1 1");
-strings[1681] = str->add("Move By...");
-strings[1682] = str->add("window_move_by");
-strings[1625] = str->add(strings[1625]);
-strings[1683] = str->add("Resize By...");
-strings[1684] = str->add("window_resize_by");
-strings[1685] = str->add("syntax: W H, example: 100 150");
-strings[1686] = str->add("Push in Direction...");
-strings[1687] = str->add("window_push");
-strings[1688] = str->add("syntax: direction, example: up, down, left, right");
-strings[1689] = str->add("Drag Icon...");
-strings[168] = str->add(strings[168]);
-strings[1690] = str->add("Window : Moving");
-strings[1691] = str->add("To Next Desktop");
-strings[1692] = str->add("window_desk_move_by");
-strings[76] = str->add(strings[76]);
-strings[1693] = str->add("To Previous Desktop");
-strings[1692] = str->add(strings[1692]);
-strings[74] = str->add(strings[74]);
-strings[1694] = str->add("By Desktop #...");
-strings[1692] = str->add(strings[1692]);
-strings[1695] = str->add("syntax: X-offset Y-offset, example: -2 2");
-strings[1696] = str->add("To Desktop...");
-strings[1697] = str->add("window_desk_move_to");
-strings[1698] = str->add("syntax: X Y, example: 0 1");
-strings[1699] = str->add("Show Main Menu");
-strings[65] = str->add(strings[65]);
-strings[66] = str->add(strings[66]);
-strings[1700] = str->add("Show Favorites Menu");
-strings[65] = str->add(strings[65]);
-strings[70] = str->add(strings[70]);
-strings[1701] = str->add("Show All Applications Menu");
-strings[65] = str->add(strings[65]);
-strings[1702] = str->add("all");
-strings[1703] = str->add("Show Clients Menu");
-strings[65] = str->add(strings[65]);
-strings[68] = str->add(strings[68]);
-strings[1704] = str->add("Show Menu...");
-strings[65] = str->add(strings[65]);
-strings[1705] = str->add("syntax: MenuName, example: MyMenu");
-strings[1706] = str->add("Launch");
-strings[1707] = str->add("Defined Command");
-strings[129] = str->add(strings[129]);
-strings[1708] = str->add("syntax: CommandName, example: /usr/bin/xmms");
-strings[1709] = str->add("Application");
-strings[1710] = str->add("app");
-strings[1711] = str->add("syntax: , example:");
-strings[1712] = str->add("Enlightenment");
-strings[1713] = str->add("Restart");
-strings[135] = str->add(strings[135]);
-strings[1714] = str->add("Exit");
-strings[1715] = str->add("exit");
-strings[1716] = str->add("Log Out");
-strings[137] = str->add(strings[137]);
-strings[1717] = str->add("Exit Immediately");
-strings[1718] = str->add("exit_now");
-strings[1719] = str->add("Shut Down Immediately");
-strings[1720] = str->add("halt_now");
-strings[1721] = str->add("System");
-strings[1722] = str->add("Shut Down");
-strings[1723] = str->add("halt");
-strings[1724] = str->add("Reboot");
-strings[1725] = str->add("reboot");
-strings[1726] = str->add("Suspend");
-strings[1727] = str->add("suspend");
-strings[1728] = str->add("Suspend to Disk");
-strings[1729] = str->add("hibernate");
-strings[1730] = str->add("Desktop Lock");
-strings[140] = str->add(strings[140]);
-strings[1731] = str->add("Cleanup Windows");
-strings[1732] = str->add("cleanup_windows");
-strings[1733] = str->add("Generic : Actions");
-strings[1734] = str->add("Delayed Action");
-strings[1735] = str->add("delayed_action");
-strings[1736] = str->add("[0.0 exec xterm] [0.3 exec xev]");
-strings[65] = str->add(strings[65]);
-strings[66] = str->add(strings[66]);
-strings[67] = str->add(strings[67]);
-strings[65] = str->add(strings[65]);
-strings[68] = str->add(strings[68]);
-strings[69] = str->add(strings[69]);
-strings[65] = str->add(strings[65]);
-strings[70] = str->add(strings[70]);
-strings[71] = str->add(strings[71]);
-strings[72] = str->add(strings[72]);
-strings[73] = str->add(strings[73]);
-strings[74] = str->add(strings[74]);
-strings[75] = str->add(strings[75]);
-strings[73] = str->add(strings[73]);
-strings[76] = str->add(strings[76]);
-strings[77] = str->add(strings[77]);
-strings[73] = str->add(strings[73]);
-strings[78] = str->add(strings[78]);
-strings[79] = str->add(strings[79]);
-strings[73] = str->add(strings[73]);
-strings[80] = str->add(strings[80]);
-strings[77] = str->add(strings[77]);
-strings[81] = str->add(strings[81]);
-strings[79] = str->add(strings[79]);
-strings[82] = str->add(strings[82]);
-strings[83] = str->add(strings[83]);
-strings[84] = str->add(strings[84]);
-strings[85] = str->add(strings[85]);
-strings[86] = str->add(strings[86]);
-strings[87] = str->add(strings[87]);
-strings[71] = str->add(strings[71]);
-strings[88] = str->add(strings[88]);
-strings[89] = str->add(strings[89]);
-strings[90] = str->add(strings[90]);
-strings[91] = str->add(strings[91]);
-strings[92] = str->add(strings[92]);
-strings[93] = str->add(strings[93]);
-strings[94] = str->add(strings[94]);
-strings[93] = str->add(strings[93]);
-strings[95] = str->add(strings[95]);
-strings[94] = str->add(strings[94]);
-strings[93] = str->add(strings[93]);
-strings[96] = str->add(strings[96]);
-strings[97] = str->add(strings[97]);
-strings[98] = str->add(strings[98]);
-strings[72] = str->add(strings[72]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[75] = str->add(strings[75]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[102] = str->add(strings[102]);
-strings[103] = str->add(strings[103]);
-strings[104] = str->add(strings[104]);
-strings[105] = str->add(strings[105]);
-strings[103] = str->add(strings[103]);
-strings[101] = str->add(strings[101]);
-strings[106] = str->add(strings[106]);
-strings[103] = str->add(strings[103]);
-strings[107] = str->add(strings[107]);
-strings[108] = str->add(strings[108]);
-strings[103] = str->add(strings[103]);
-strings[109] = str->add(strings[109]);
-strings[110] = str->add(strings[110]);
-strings[103] = str->add(strings[103]);
-strings[111] = str->add(strings[111]);
-strings[112] = str->add(strings[112]);
-strings[103] = str->add(strings[103]);
-strings[113] = str->add(strings[113]);
-strings[114] = str->add(strings[114]);
-strings[103] = str->add(strings[103]);
-strings[115] = str->add(strings[115]);
-strings[116] = str->add(strings[116]);
-strings[103] = str->add(strings[103]);
-strings[117] = str->add(strings[117]);
-strings[118] = str->add(strings[118]);
-strings[103] = str->add(strings[103]);
-strings[119] = str->add(strings[119]);
-strings[94] = str->add(strings[94]);
-strings[103] = str->add(strings[103]);
-strings[120] = str->add(strings[120]);
-strings[121] = str->add(strings[121]);
-strings[103] = str->add(strings[103]);
-strings[122] = str->add(strings[122]);
-strings[123] = str->add(strings[123]);
-strings[103] = str->add(strings[103]);
-strings[124] = str->add(strings[124]);
-strings[125] = str->add(strings[125]);
-strings[65] = str->add(strings[65]);
-strings[66] = str->add(strings[66]);
-strings[126] = str->add(strings[126]);
-strings[65] = str->add(strings[65]);
-strings[70] = str->add(strings[70]);
-strings[127] = str->add(strings[127]);
-strings[65] = str->add(strings[65]);
-strings[66] = str->add(strings[66]);
-strings[127] = str->add(strings[127]);
-strings[65] = str->add(strings[65]);
-strings[68] = str->add(strings[68]);
-strings[127] = str->add(strings[127]);
-strings[65] = str->add(strings[65]);
-strings[70] = str->add(strings[70]);
-strings[128] = str->add(strings[128]);
-strings[129] = str->add(strings[129]);
-strings[130] = str->add(strings[130]);
-strings[131] = str->add(strings[131]);
-strings[49] = str->add(strings[49]);
-strings[132] = str->add(strings[132]);
-strings[131] = str->add(strings[131]);
-strings[49] = str->add(strings[49]);
-strings[133] = str->add(strings[133]);
-strings[134] = str->add(strings[134]);
-strings[135] = str->add(strings[135]);
-strings[136] = str->add(strings[136]);
-strings[137] = str->add(strings[137]);
-strings[138] = str->add(strings[138]);
-strings[50] = str->add(strings[50]);
-strings[139] = str->add(strings[139]);
-strings[140] = str->add(strings[140]);
-strings[141] = str->add(strings[141]);
-strings[142] = str->add(strings[142]);
-strings[72] = str->add(strings[72]);
-strings[143] = str->add(strings[143]);
-strings[100] = str->add(strings[100]);
-strings[75] = str->add(strings[75]);
-strings[143] = str->add(strings[143]);
-strings[101] = str->add(strings[101]);
-strings[102] = str->add(strings[102]);
-strings[144] = str->add(strings[144]);
-strings[104] = str->add(strings[104]);
-strings[105] = str->add(strings[105]);
-strings[144] = str->add(strings[144]);
-strings[101] = str->add(strings[101]);
-strings[106] = str->add(strings[106]);
-strings[144] = str->add(strings[144]);
-strings[107] = str->add(strings[107]);
-strings[108] = str->add(strings[108]);
-strings[144] = str->add(strings[144]);
-strings[109] = str->add(strings[109]);
-strings[145] = str->add(strings[145]);
-strings[146] = str->add(strings[146]);
-strings[98] = str->add(strings[98]);
-strings[147] = str->add(strings[147]);
-strings[148] = str->add(strings[148]);
-strings[146] = str->add(strings[146]);
-strings[98] = str->add(strings[98]);
-strings[147] = str->add(strings[147]);
-strings[149] = str->add(strings[149]);
-strings[146] = str->add(strings[146]);
-strings[150] = str->add(strings[150]);
-strings[151] = str->add(strings[151]);
-strings[152] = str->add(strings[152]);
-strings[146] = str->add(strings[146]);
-strings[150] = str->add(strings[150]);
-strings[153] = str->add(strings[153]);
-strings[154] = str->add(strings[154]);
-strings[146] = str->add(strings[146]);
-strings[71] = str->add(strings[71]);
-strings[155] = str->add(strings[155]);
-strings[156] = str->add(strings[156]);
-strings[71] = str->add(strings[71]);
-strings[157] = str->add(strings[157]);
-strings[158] = str->add(strings[158]);
-strings[84] = str->add(strings[84]);
-strings[154] = str->add(strings[154]);
-strings[158] = str->add(strings[158]);
-strings[86] = str->add(strings[86]);
-strings[159] = str->add(strings[159]);
-strings[160] = str->add(strings[160]);
-strings[93] = str->add(strings[93]);
-strings[161] = str->add(strings[161]);
-strings[160] = str->add(strings[160]);
-strings[93] = str->add(strings[93]);
-strings[162] = str->add(strings[162]);
-strings[154] = str->add(strings[154]);
-strings[160] = str->add(strings[160]);
-strings[93] = str->add(strings[93]);
-strings[163] = str->add(strings[163]);
-strings[155] = str->add(strings[155]);
-strings[164] = str->add(strings[164]);
-strings[91] = str->add(strings[91]);
-strings[155] = str->add(strings[155]);
-strings[165] = str->add(strings[165]);
-strings[98] = str->add(strings[98]);
-strings[147] = str->add(strings[147]);
-strings[155] = str->add(strings[155]);
-strings[166] = str->add(strings[166]);
-strings[82] = str->add(strings[82]);
-strings[167] = str->add(strings[167]);
-strings[156] = str->add(strings[156]);
-strings[168] = str->add(strings[168]);
-strings[167] = str->add(strings[167]);
-strings[146] = str->add(strings[146]);
-strings[67] = str->add(strings[67]);
-strings[169] = str->add(strings[169]);
-strings[146] = str->add(strings[146]);
-strings[67] = str->add(strings[67]);
-strings[170] = str->add(strings[170]);
-strings[167] = str->add(strings[167]);
-strings[171] = str->add(strings[171]);
-strings[69] = str->add(strings[69]);
-strings[172] = str->add(strings[172]);
-strings[1737] = str->add("mouse,in");
-strings[171] = str->add(strings[171]);
-strings[1738] = str->add("pointer_resize_push");
-strings[1739] = str->add("resize_tl");
-strings[1740] = str->add("mouse,out");
-strings[171] = str->add(strings[171]);
-strings[1741] = str->add("pointer_resize_pop");
-strings[1739] = str->add(strings[1739]);
-strings[167] = str->add(strings[167]);
-strings[173] = str->add(strings[173]);
-strings[69] = str->add(strings[69]);
-strings[174] = str->add(strings[174]);
-strings[1737] = str->add(strings[1737]);
-strings[173] = str->add(strings[173]);
-strings[1738] = str->add(strings[1738]);
-strings[1742] = str->add("resize_t");
-strings[1740] = str->add(strings[1740]);
-strings[173] = str->add(strings[173]);
-strings[1741] = str->add(strings[1741]);
-strings[1742] = str->add(strings[1742]);
-strings[167] = str->add(strings[167]);
-strings[175] = str->add(strings[175]);
-strings[69] = str->add(strings[69]);
-strings[176] = str->add(strings[176]);
-strings[1737] = str->add(strings[1737]);
-strings[175] = str->add(strings[175]);
-strings[1738] = str->add(strings[1738]);
-strings[1743] = str->add("resize_tr");
-strings[1740] = str->add(strings[1740]);
-strings[175] = str->add(strings[175]);
-strings[1741] = str->add(strings[1741]);
-strings[1743] = str->add(strings[1743]);
-strings[167] = str->add(strings[167]);
-strings[177] = str->add(strings[177]);
-strings[69] = str->add(strings[69]);
-strings[97] = str->add(strings[97]);
-strings[1737] = str->add(strings[1737]);
-strings[177] = str->add(strings[177]);
-strings[1738] = str->add(strings[1738]);
-strings[1744] = str->add("resize_r");
-strings[1740] = str->add(strings[1740]);
-strings[177] = str->add(strings[177]);
-strings[1741] = str->add(strings[1741]);
-strings[1744] = str->add(strings[1744]);
-strings[167] = str->add(strings[167]);
-strings[178] = str->add(strings[178]);
-strings[69] = str->add(strings[69]);
-strings[179] = str->add(strings[179]);
-strings[1737] = str->add(strings[1737]);
-strings[178] = str->add(strings[178]);
-strings[1738] = str->add(strings[1738]);
-strings[1745] = str->add("resize_br");
-strings[1740] = str->add(strings[1740]);
-strings[178] = str->add(strings[178]);
-strings[1741] = str->add(strings[1741]);
-strings[1745] = str->add(strings[1745]);
-strings[167] = str->add(strings[167]);
-strings[180] = str->add(strings[180]);
-strings[69] = str->add(strings[69]);
-strings[181] = str->add(strings[181]);
-strings[1737] = str->add(strings[1737]);
-strings[180] = str->add(strings[180]);
-strings[1738] = str->add(strings[1738]);
-strings[1746] = str->add("resize_b");
-strings[1740] = str->add(strings[1740]);
-strings[180] = str->add(strings[180]);
-strings[1741] = str->add(strings[1741]);
-strings[1746] = str->add(strings[1746]);
-strings[167] = str->add(strings[167]);
-strings[182] = str->add(strings[182]);
-strings[69] = str->add(strings[69]);
-strings[183] = str->add(strings[183]);
-strings[1737] = str->add(strings[1737]);
-strings[182] = str->add(strings[182]);
-strings[1738] = str->add(strings[1738]);
-strings[1747] = str->add("resize_bl");
-strings[1740] = str->add(strings[1740]);
-strings[182] = str->add(strings[182]);
-strings[1741] = str->add(strings[1741]);
-strings[1747] = str->add(strings[1747]);
-strings[167] = str->add(strings[167]);
-strings[184] = str->add(strings[184]);
-strings[69] = str->add(strings[69]);
-strings[139] = str->add(strings[139]);
-strings[1737] = str->add(strings[1737]);
-strings[184] = str->add(strings[184]);
-strings[1738] = str->add(strings[1738]);
-strings[1748] = str->add("resize_l");
-strings[1740] = str->add(strings[1740]);
-strings[184] = str->add(strings[184]);
-strings[1741] = str->add(strings[1741]);
-strings[1748] = str->add(strings[1748]);
-strings[169] = str->add(strings[169]);
-strings[185] = str->add(strings[185]);
-strings[69] = str->add(strings[69]);
-strings[170] = str->add(strings[170]);
-strings[186] = str->add(strings[186]);
-strings[185] = str->add(strings[185]);
-strings[67] = str->add(strings[67]);
-strings[187] = str->add(strings[187]);
-strings[185] = str->add(strings[185]);
-strings[67] = str->add(strings[67]);
-strings[170] = str->add(strings[170]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[101] = str->add(strings[101]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[99] = str->add(strings[99]);
-strings[100] = str->add(strings[100]);
-strings[1749] = str->add("Set As Background");
-strings[1750] = str->add("enlightenment/background");
-strings[7] = str->add(strings[7]);
-strings[61] = str->add(strings[61]);
-strings[1751] = str->add("resize");
-strings[1752] = str->add("show");
-strings[1753] = str->add("base/theme/pointer");
-str->del(strings[1751]);
-str->del(strings[1752]);
-strings[64] = str->add(strings[64]);
-strings[1754] = str->add("e/pointer/enlightenment/default/mono");
-strings[1754] = str->add(strings[1754]);
-strings[1755] = str->add("load");
-strings[64] = str->add(strings[64]);
-strings[1756] = str->add("images/41");
-strings[1757] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/41");
-strings[64] = str->add(strings[64]);
-strings[1756] = str->add(strings[1756]);
-strings[61] = str->add(strings[61]);
-strings[361] = str->add(strings[361]);
-strings[362] = str->add(strings[362]);
-strings[361] = str->add(strings[361]);
-str->del(strings[361]);
-strings[362] = str->add(strings[362]);
-str->del(strings[362]);
-strings[1758] = str->add("Container 0");
-strings[1759] = str->add("Zone 0");
-strings[361] = str->add(strings[361]);
-strings[362] = str->add(strings[362]);
-strings[361] = str->add(strings[361]);
-str->del(strings[361]);
-strings[362] = str->add(strings[362]);
-str->del(strings[362]);
-strings[1760] = str->add("Desktop 0, 0");
-strings[1761] = str->add("Desktop 0, 1");
-strings[1762] = str->add("Desktop 1, 0");
-strings[1763] = str->add("Desktop 1, 1");
-strings[1764] = str->add("Desktop 2, 0");
-strings[1765] = str->add("Desktop 2, 1");
-strings[1766] = str->add("Desktop 3, 0");
-strings[1767] = str->add("Desktop 3, 1");
-strings[1768] = str->add("Desktop 4, 0");
-strings[1769] = str->add("Desktop 4, 1");
-strings[1770] = str->add("edje_cc");
-strings[1771] = str->add("logo_shad.png");
-strings[1772] = str->add("shad.png");
-strings[1773] = str->add("tex.png");
-strings[1774] = str->add("ref.png");
-strings[1775] = str->add("bar_l.png");
-strings[1776] = str->add("bar_r.png");
-strings[1777] = str->add("bar_l_sh.png");
-strings[1778] = str->add("bar_r_sh.png");
-strings[1779] = str->add("sm_loop_eintro_121.png");
-strings[1780] = str->add("sm_loop_eintro_123.png");
-strings[1781] = str->add("sm_loop_eintro_125.png");
-strings[1782] = str->add("sm_loop_eintro_127.png");
-strings[1783] = str->add("sm_loop_eintro_129.png");
-strings[1784] = str->add("sm_loop_eintro_131.png");
-strings[1785] = str->add("sm_loop_eintro_133.png");
-strings[1786] = str->add("sm_loop_eintro_135.png");
-strings[1787] = str->add("sm_loop_eintro_137.png");
-strings[1788] = str->add("sm_loop_eintro_139.png");
-strings[1789] = str->add("sm_loop_eintro_141.png");
-strings[1790] = str->add("sm_loop_eintro_143.png");
-strings[1791] = str->add("sm_loop_eintro_145.png");
-strings[1792] = str->add("sm_loop_eintro_147.png");
-strings[1793] = str->add("sm_loop_eintro_149.png");
-strings[1794] = str->add("sm_loop_eintro_151.png");
-strings[1795] = str->add("sm_loop_eintro_153.png");
-strings[1796] = str->add("sm_loop_eintro_155.png");
-strings[1797] = str->add("sm_loop_eintro_157.png");
-strings[1798] = str->add("sm_loop_eintro_159.png");
-strings[1799] = str->add("sm_loop_eintro_161.png");
-strings[1800] = str->add("sm_loop_eintro_163.png");
-strings[1801] = str->add("sm_loop_eintro_165.png");
-strings[1802] = str->add("sm_loop_eintro_167.png");
-strings[1803] = str->add("sm_loop_eintro_169.png");
-strings[1804] = str->add("sm_loop_eintro_171.png");
-strings[1805] = str->add("sm_loop_eintro_173.png");
-strings[1806] = str->add("sm_loop_eintro_175.png");
-strings[1807] = str->add("sm_loop_eintro_177.png");
-strings[1808] = str->add("sm_loop_eintro_179.png");
-strings[1809] = str->add("sm_loop_eintro_181.png");
-strings[1810] = str->add("sm_loop_eintro_183.png");
-strings[1811] = str->add("sm_loop_eintro_185.png");
-strings[1812] = str->add("sm_loop_eintro_187.png");
-strings[1813] = str->add("sm_loop_eintro_189.png");
-strings[1814] = str->add("sm_loop_eintro_191.png");
-strings[1815] = str->add("sm_loop_eintro_193.png");
-strings[1816] = str->add("sm_loop_eintro_195.png");
-strings[1817] = str->add("sm_loop_eintro_197.png");
-strings[1818] = str->add("sm_loop_eintro_199.png");
-strings[1819] = str->add("sm_loop_eintro_201.png");
-strings[1820] = str->add("sm_loop_eintro_203.png");
-strings[1821] = str->add("sm_loop_eintro_205.png");
-strings[1822] = str->add("sm_loop_eintro_207.png");
-strings[1823] = str->add("sm_loop_eintro_209.png");
-strings[1824] = str->add("sm_loop_eintro_211.png");
-strings[1825] = str->add("sm_loop_eintro_213.png");
-strings[1826] = str->add("sm_loop_eintro_215.png");
-strings[1827] = str->add("sm_loop_eintro_217.png");
-strings[1828] = str->add("sm_loop_eintro_219.png");
-strings[1829] = str->add("sm_loop_eintro_221.png");
-strings[1830] = str->add("sm_loop_eintro_223.png");
-strings[1831] = str->add("sm_loop_eintro_225.png");
-strings[1832] = str->add("sm_loop_eintro_227.png");
-strings[1833] = str->add("sm_loop_eintro_229.png");
-strings[1834] = str->add("sm_loop_eintro_231.png");
-strings[1835] = str->add("sm_loop_eintro_233.png");
-strings[1836] = str->add("sm_loop_eintro_235.png");
-strings[1837] = str->add("sm_loop_eintro_237.png");
-strings[1838] = str->add("sm_loop_eintro_239.png");
-strings[1839] = str->add("e/desktop/background");
-strings[7] = str->add(strings[7]);
-strings[1839] = str->add(strings[1839]);
-str->del(strings[1839]);
-strings[7] = str->add(strings[7]);
-strings[1839] = str->add(strings[1839]);
-strings[1840] = str->add("ref1_1");
-strings[1841] = str->add("show");
-strings[1842] = str->add("");
-strings[1843] = str->add("default2");
-strings[1844] = str->add("ref1_2");
-strings[61] = str->add(strings[61]);
-strings[1845] = str->add("ref2_1");
-strings[1841] = str->add(strings[1841]);
-strings[1842] = str->add(strings[1842]);
-strings[1843] = str->add(strings[1843]);
-strings[1846] = str->add("ref2_2");
-strings[61] = str->add(strings[61]);
-strings[1847] = str->add("ref3_1");
-strings[1841] = str->add(strings[1841]);
-strings[1842] = str->add(strings[1842]);
-strings[1843] = str->add(strings[1843]);
-strings[1848] = str->add("ref3_2");
-strings[61] = str->add(strings[61]);
-strings[1849] = str->add("ref4_1");
-strings[1841] = str->add(strings[1841]);
-strings[1842] = str->add(strings[1842]);
-strings[1843] = str->add(strings[1843]);
-strings[1850] = str->add("ref4_2");
-strings[61] = str->add(strings[61]);
-strings[1851] = str->add("logo_animate");
-strings[1841] = str->add(strings[1841]);
-strings[1842] = str->add(strings[1842]);
-strings[61] = str->add(strings[61]);
-strings[1852] = str->add("background_image");
-strings[61] = str->add(strings[61]);
-strings[1853] = str->add("shad");
-strings[61] = str->add(strings[61]);
-strings[1854] = str->add("logo_shad");
-strings[61] = str->add(strings[61]);
-strings[1855] = str->add("logo");
-strings[61] = str->add(strings[61]);
-strings[1856] = str->add("bar_l_sh");
-strings[61] = str->add(strings[61]);
-strings[1857] = str->add("bar_r_sh");
-strings[61] = str->add(strings[61]);
-strings[1858] = str->add("bar_l1");
-strings[61] = str->add(strings[61]);
-strings[1843] = str->add(strings[1843]);
-strings[1859] = str->add("bar_l2");
-strings[61] = str->add(strings[61]);
-strings[1843] = str->add(strings[1843]);
-strings[1860] = str->add("bar_r1");
-strings[61] = str->add(strings[61]);
-strings[1843] = str->add(strings[1843]);
-strings[1861] = str->add("bar_r2");
-strings[61] = str->add(strings[61]);
-strings[1843] = str->add(strings[1843]);
-strings[1862] = str->add("bar_l");
-strings[61] = str->add(strings[61]);
-strings[1863] = str->add("bar_r");
-strings[61] = str->add(strings[61]);
-strings[1839] = str->add(strings[1839]);
-strings[1755] = str->add(strings[1755]);
-strings[1864] = str->add("resize");
-strings[1841] = str->add(strings[1841]);
-strings[7] = str->add(strings[7]);
-strings[1865] = str->add("images/2");
-strings[1866] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj//://images/2");
-strings[7] = str->add(strings[7]);
-strings[1865] = str->add(strings[1865]);
-strings[7] = str->add(strings[7]);
-strings[1867] = str->add("images/1");
-strings[1868] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj//://images/1");
-strings[7] = str->add(strings[7]);
-strings[1867] = str->add(strings[1867]);
-strings[7] = str->add(strings[7]);
-strings[1869] = str->add("images/67");
-strings[1870] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj//://images/67");
-strings[7] = str->add(strings[7]);
-strings[1869] = str->add(strings[1869]);
-strings[7] = str->add(strings[7]);
-strings[1552] = str->add(strings[1552]);
-strings[1871] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj//://images/0");
-strings[7] = str->add(strings[7]);
-strings[1552] = str->add(strings[1552]);
-strings[7] = str->add(strings[7]);
-strings[1872] = str->add("images/4");
-strings[1873] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj//://images/4");
-strings[7] = str->add(strings[7]);
-strings[1872] = str->add(strings[1872]);
-strings[7] = str->add(strings[7]);
-strings[1874] = str->add("images/6");
-strings[1875] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj//://images/6");
-strings[7] = str->add(strings[7]);
-strings[1874] = str->add(strings[1874]);
-strings[7] = str->add(strings[7]);
-strings[1876] = str->add("images/5");
-strings[1877] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj//://images/5");
-strings[7] = str->add(strings[7]);
-strings[1876] = str->add(strings[1876]);
-strings[7] = str->add(strings[7]);
-strings[1878] = str->add("images/7");
-strings[1879] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj//://images/7");
-strings[7] = str->add(strings[7]);
-strings[1878] = str->add(strings[1878]);
-strings[7] = str->add(strings[7]);
-strings[1880] = str->add("images/3");
-strings[1881] = str->add("/usr/devel/share/enlightenment/data/backgrounds/Cracked_Earth.edj//://images/3");
-strings[7] = str->add(strings[7]);
-strings[1880] = str->add(strings[1880]);
-strings[7] = str->add(strings[7]);
-strings[1880] = str->add(strings[1880]);
-strings[7] = str->add(strings[7]);
-strings[1880] = str->add(strings[1880]);
-strings[7] = str->add(strings[7]);
-strings[1880] = str->add(strings[1880]);
-strings[1882] = str->add("/home/cedric/.e/e/applications/startup/.order");
-str->del(strings[1882]);
-strings[1883] = str->add("/usr/devel/lib/enlightenment/modules/start/linux-gnu-x86_64/module.so");
-strings[1883] = str->add(strings[1883]);
-strings[59] = str->add(strings[59]);
-strings[1884] = str->add("/usr/devel/lib/enlightenment/modules/start");
-str->del(strings[1883]);
-strings[1885] = str->add("/usr/devel/lib/enlightenment/modules/ibar/linux-gnu-x86_64/module.so");
-strings[1885] = str->add(strings[1885]);
-strings[58] = str->add(strings[58]);
-strings[1886] = str->add("/usr/devel/lib/enlightenment/modules/ibar");
-str->del(strings[1885]);
-strings[104] = str->add(strings[104]);
-strings[61] = str->add(strings[61]);
-strings[339] = str->add(strings[339]);
-strings[339] = str->add(strings[339]);
-strings[61] = str->add(strings[61]);
-strings[1887] = str->add("/usr/devel/lib/enlightenment/modules/ibox/linux-gnu-x86_64/module.so");
-strings[1887] = str->add(strings[1887]);
-strings[57] = str->add(strings[57]);
-strings[1888] = str->add("/usr/devel/lib/enlightenment/modules/ibox");
-str->del(strings[1887]);
-strings[104] = str->add(strings[104]);
-strings[338] = str->add(strings[338]);
-strings[1889] = str->add("/usr/devel/lib/enlightenment/modules/dropshadow/linux-gnu-x86_64/module.so");
-strings[1889] = str->add(strings[1889]);
-strings[56] = str->add(strings[56]);
-strings[1890] = str->add("/usr/devel/lib/enlightenment/modules/dropshadow");
-str->del(strings[1889]);
-strings[1891] = str->add("appearance");
-strings[1892] = str->add("Appearance");
-strings[1893] = str->add("enlightenment/appearance");
-strings[56] = str->add(strings[56]);
-strings[1894] = str->add("Dropshadow");
-strings[1895] = str->add("/usr/devel/lib/enlightenment/modules/dropshadow/e-module-dropshadow.edj");
-strings[1896] = str->add("/usr/devel/lib/enlightenment/modules/clock/linux-gnu-x86_64/module.so");
-strings[1896] = str->add(strings[1896]);
-strings[55] = str->add(strings[55]);
-strings[1897] = str->add("/usr/devel/lib/enlightenment/modules/clock");
-str->del(strings[1896]);
-strings[1898] = str->add("/usr/devel/lib/enlightenment/modules/battery/linux-gnu-x86_64/module.so");
-strings[1898] = str->add(strings[1898]);
-strings[54] = str->add(strings[54]);
-strings[1899] = str->add("/usr/devel/lib/enlightenment/modules/battery");
-str->del(strings[1898]);
-strings[1900] = str->add("advanced");
-strings[1901] = str->add("Advanced");
-strings[1902] = str->add("enlightenment/advanced");
-strings[54] = str->add(strings[54]);
-strings[1903] = str->add("Battery Meter");
-strings[1904] = str->add("/usr/devel/lib/enlightenment/modules/battery/e-module-battery.edj");
-strings[1905] = str->add("/usr/devel/lib/enlightenment/modules/cpufreq/linux-gnu-x86_64/module.so");
-strings[1905] = str->add(strings[1905]);
-strings[53] = str->add(strings[53]);
-strings[1906] = str->add("/usr/devel/lib/enlightenment/modules/cpufreq");
-str->del(strings[1905]);
-strings[1907] = str->add("/usr/devel/lib/enlightenment/modules/temperature/linux-gnu-x86_64/module.so");
-strings[1907] = str->add(strings[1907]);
-strings[52] = str->add(strings[52]);
-strings[1908] = str->add("/usr/devel/lib/enlightenment/modules/temperature");
-str->del(strings[1907]);
-strings[340] = str->add(strings[340]);
-strings[1909] = str->add("/usr/devel/lib/enlightenment/modules/pager/linux-gnu-x86_64/module.so");
-strings[1909] = str->add(strings[1909]);
-strings[51] = str->add(strings[51]);
-strings[1910] = str->add("/usr/devel/lib/enlightenment/modules/pager");
-str->del(strings[1909]);
-strings[51] = str->add(strings[51]);
-strings[1911] = str->add("Pager");
-strings[1912] = str->add("enlightenment/pager");
-strings[1911] = str->add(strings[1911]);
-strings[1913] = str->add("Show Pager Popup");
-strings[1914] = str->add("pager_show");
-strings[1915] = str->add("<none>");
-strings[1916] = str->add("Popup Desk Right");
-strings[1917] = str->add("pager_switch");
-strings[1613] = str->add(strings[1613]);
-strings[1918] = str->add("Popup Desk Left");
-strings[1917] = str->add(strings[1917]);
-strings[1611] = str->add(strings[1611]);
-strings[1919] = str->add("Popup Desk Up");
-strings[1917] = str->add(strings[1917]);
-strings[147] = str->add(strings[147]);
-strings[1920] = str->add("Popup Desk Down");
-strings[1917] = str->add(strings[1917]);
-strings[1609] = str->add(strings[1609]);
-strings[50] = str->add(strings[50]);
-strings[49] = str->add(strings[49]);
-strings[48] = str->add(strings[48]);
-strings[47] = str->add(strings[47]);
-strings[46] = str->add(strings[46]);
-strings[45] = str->add(strings[45]);
-strings[44] = str->add(strings[44]);
-strings[43] = str->add(strings[43]);
-strings[42] = str->add(strings[42]);
-strings[41] = str->add(strings[41]);
-strings[40] = str->add(strings[40]);
-strings[39] = str->add(strings[39]);
-strings[38] = str->add(strings[38]);
-strings[37] = str->add(strings[37]);
-strings[36] = str->add(strings[36]);
-strings[35] = str->add(strings[35]);
-strings[34] = str->add(strings[34]);
-strings[33] = str->add(strings[33]);
-strings[32] = str->add(strings[32]);
-strings[31] = str->add(strings[31]);
-strings[30] = str->add(strings[30]);
-strings[29] = str->add(strings[29]);
-strings[28] = str->add(strings[28]);
-strings[27] = str->add(strings[27]);
-strings[26] = str->add(strings[26]);
-strings[25] = str->add(strings[25]);
-strings[24] = str->add(strings[24]);
-strings[23] = str->add(strings[23]);
-strings[22] = str->add(strings[22]);
-strings[21] = str->add(strings[21]);
-strings[20] = str->add(strings[20]);
-strings[19] = str->add(strings[19]);
-strings[18] = str->add(strings[18]);
-strings[17] = str->add(strings[17]);
-strings[16] = str->add(strings[16]);
-strings[15] = str->add(strings[15]);
-strings[14] = str->add(strings[14]);
-strings[13] = str->add(strings[13]);
-strings[12] = str->add(strings[12]);
-strings[11] = str->add(strings[11]);
-strings[1921] = str->add("/usr/devel/lib/enlightenment/modules/note/linux-gnu-x86_64/module.so");
-strings[1921] = str->add(strings[1921]);
-strings[10] = str->add(strings[10]);
-strings[1922] = str->add("/usr/devel/lib/enlightenment/modules/note");
-str->del(strings[1921]);
-strings[1923] = str->add("/usr/devel/lib/enlightenment/modules/gadman/linux-gnu-x86_64/module.so");
-strings[1923] = str->add(strings[1923]);
-strings[60] = str->add(strings[60]);
-strings[1924] = str->add("/usr/devel/lib/enlightenment/modules/gadman");
-str->del(strings[1923]);
-strings[60] = str->add(strings[60]);
-strings[1925] = str->add("Gadgets");
-strings[1926] = str->add("/usr/devel/lib/enlightenment/modules/gadman/e-module-gadman.edj");
-strings[60] = str->add(strings[60]);
-strings[344] = str->add(strings[344]);
-strings[361] = str->add(strings[361]);
-strings[362] = str->add(strings[362]);
-strings[361] = str->add(strings[361]);
-str->del(strings[361]);
-strings[362] = str->add(strings[362]);
-str->del(strings[362]);
-strings[1927] = str->add("base/theme/gadman");
-strings[64] = str->add(strings[64]);
-strings[1928] = str->add("e/gadman/full_bg");
-str->del(strings[64]);
-str->del(strings[1928]);
-strings[469] = str->add(strings[469]);
-strings[1929] = str->add("e/gadman/full_bg");
-strings[1929] = str->add(strings[1929]);
-strings[1755] = str->add(strings[1755]);
-strings[1930] = str->add("mouse,down,*");
-strings[1931] = str->add("bg");
-strings[1932] = str->add("program,stop");
-strings[1933] = str->add("hide");
-strings[1864] = str->add(strings[1864]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1934] = str->add("e/gadman/control");
-str->del(strings[64]);
-str->del(strings[1934]);
-strings[469] = str->add(strings[469]);
-strings[1935] = str->add("e/gadman/control");
-strings[1935] = str->add(strings[1935]);
-strings[1755] = str->add(strings[1755]);
-strings[167] = str->add(strings[167]);
-strings[1936] = str->add("overlay");
-strings[169] = str->add(strings[169]);
-strings[1936] = str->add(strings[1936]);
-strings[186] = str->add(strings[186]);
-strings[1936] = str->add(strings[1936]);
-strings[167] = str->add(strings[167]);
-strings[1937] = str->add("h1");
-strings[169] = str->add(strings[169]);
-strings[1937] = str->add(strings[1937]);
-strings[167] = str->add(strings[167]);
-strings[1938] = str->add("v2");
-strings[169] = str->add(strings[169]);
-strings[1938] = str->add(strings[1938]);
-strings[167] = str->add(strings[167]);
-strings[1939] = str->add("h2");
-strings[169] = str->add(strings[169]);
-strings[1939] = str->add(strings[1939]);
-strings[167] = str->add(strings[167]);
-strings[1940] = str->add("v1");
-strings[169] = str->add(strings[169]);
-strings[1940] = str->add(strings[1940]);
-strings[1864] = str->add(strings[1864]);
-strings[469] = str->add(strings[469]);
-strings[1935] = str->add(strings[1935]);
-strings[1755] = str->add(strings[1755]);
-strings[167] = str->add(strings[167]);
-strings[1936] = str->add(strings[1936]);
-strings[169] = str->add(strings[169]);
-strings[1936] = str->add(strings[1936]);
-strings[186] = str->add(strings[186]);
-strings[1936] = str->add(strings[1936]);
-strings[167] = str->add(strings[167]);
-strings[1937] = str->add(strings[1937]);
-strings[169] = str->add(strings[169]);
-strings[1937] = str->add(strings[1937]);
-strings[167] = str->add(strings[167]);
-strings[1938] = str->add(strings[1938]);
-strings[169] = str->add(strings[169]);
-strings[1938] = str->add(strings[1938]);
-strings[167] = str->add(strings[167]);
-strings[1939] = str->add(strings[1939]);
-strings[169] = str->add(strings[169]);
-strings[1939] = str->add(strings[1939]);
-strings[167] = str->add(strings[167]);
-strings[1940] = str->add(strings[1940]);
-strings[169] = str->add(strings[169]);
-strings[1940] = str->add(strings[1940]);
-strings[1864] = str->add(strings[1864]);
-strings[1926] = str->add(strings[1926]);
-strings[1925] = str->add(strings[1925]);
-strings[1941] = str->add("Show/hide gadgets");
-strings[1942] = str->add("gadman_toggle");
-strings[1943] = str->add("g");
-strings[1942] = str->add(strings[1942]);
-strings[361] = str->add(strings[361]);
-strings[362] = str->add(strings[362]);
-strings[361] = str->add(strings[361]);
-str->del(strings[361]);
-strings[362] = str->add(strings[362]);
-str->del(strings[362]);
-strings[61] = str->add(strings[61]);
-strings[335] = str->add(strings[335]);
-strings[1864] = str->add(strings[1864]);
-strings[1944] = str->add("base/theme/shelf");
-str->del(strings[1864]);
-strings[64] = str->add(strings[64]);
-strings[1945] = str->add("e/shelf/default/base");
-strings[1945] = str->add(strings[1945]);
-strings[1755] = str->add(strings[1755]);
-strings[1841] = str->add(strings[1841]);
-strings[335] = str->add(strings[335]);
-strings[1946] = str->add("e.swallow.content");
-strings[1947] = str->add("size_request");
-strings[1948] = str->add("min_size_request");
-strings[64] = str->add(strings[64]);
-strings[1949] = str->add("images/42");
-strings[1950] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/42");
-strings[64] = str->add(strings[64]);
-strings[1949] = str->add(strings[1949]);
-strings[1951] = str->add("e,state,orientation,top");
-strings[1952] = str->add("e");
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1951]);
-str->del(strings[1952]);
-strings[1953] = str->add("e,state,orientation,bottom_left");
-strings[1954] = str->add("e");
-str->del(strings[1953]);
-str->del(strings[1954]);
-strings[1864] = str->add(strings[1864]);
-strings[1955] = str->add("base/theme/modules/start");
-strings[1956] = str->add("base/theme/modules");
-strings[64] = str->add(strings[64]);
-strings[1957] = str->add("e/modules/start/main");
-strings[1957] = str->add(strings[1957]);
-strings[1755] = str->add(strings[1755]);
-strings[1958] = str->add("e,state,unfocused");
-strings[1959] = str->add("e");
-strings[59] = str->add(strings[59]);
-strings[64] = str->add(strings[64]);
-strings[1960] = str->add("e/shelf/default/plain");
-strings[1960] = str->add(strings[1960]);
-strings[1755] = str->add(strings[1755]);
-strings[1961] = str->add("e,state,orientation,bottom_left");
-strings[1959] = str->add(strings[1959]);
-str->del(strings[1755]);
-strings[336] = str->add(strings[336]);
-strings[1841] = str->add(strings[1841]);
-strings[1841] = str->add(strings[1841]);
-str->del(strings[336]);
-strings[336] = str->add(strings[336]);
-strings[1962] = str->add("base/theme/modules/pager");
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add("e/modules/pager/desk");
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1760] = str->add(strings[1760]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add("images/63");
-strings[1965] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/63");
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add("images/62");
-strings[1967] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/62");
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add("images/64");
-strings[1969] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/64");
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add("images/66");
-strings[1971] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/66");
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1972] = str->add("Sans:style=Bold");
-strings[1973] = str->add("Edje-Vera-Bold");
-strings[1974] = str->add("Bitstream");
-strings[1975] = str->add("Bitstream Vera Sans");
-strings[1976] = str->add("bold");
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add("normal");
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add("p");
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add("ascii");
-strings[104] = str->add(strings[104]);
-strings[1980] = str->add("/usr/devel/share/enlightenment/data/fonts/VeraBI.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1976] = str->add(strings[1976]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add("fcd8859");
-strings[1982] = str->add("15");
-strings[1980] = str->add(strings[1980]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1976] = str->add(strings[1976]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add("iso8859");
-strings[101] = str->add(strings[101]);
-strings[1980] = str->add(strings[1980]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1976] = str->add(strings[1976]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1980] = str->add(strings[1980]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1976] = str->add(strings[1976]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1980] = str->add(strings[1980]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add("medium");
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add(strings[1979]);
-strings[104] = str->add(strings[104]);
-strings[1985] = str->add("/usr/devel/share/enlightenment/data/fonts/Vera.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add(strings[1981]);
-strings[1982] = str->add(strings[1982]);
-strings[1985] = str->add(strings[1985]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[101] = str->add(strings[101]);
-strings[1985] = str->add(strings[1985]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1985] = str->add(strings[1985]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1985] = str->add(strings[1985]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add(strings[1979]);
-strings[104] = str->add(strings[104]);
-strings[1986] = str->add("/usr/devel/share/enlightenment/data/fonts/VeraBd.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add(strings[1981]);
-strings[1982] = str->add(strings[1982]);
-strings[1986] = str->add(strings[1986]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[101] = str->add(strings[101]);
-strings[1986] = str->add(strings[1986]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1986] = str->add(strings[1986]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1986] = str->add(strings[1986]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add(strings[1979]);
-strings[104] = str->add(strings[104]);
-strings[1987] = str->add("/usr/devel/share/enlightenment/data/fonts/VeraIt.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add(strings[1981]);
-strings[1982] = str->add(strings[1982]);
-strings[1987] = str->add(strings[1987]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[101] = str->add(strings[101]);
-strings[1987] = str->add(strings[1987]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1987] = str->add(strings[1987]);
-strings[1974] = str->add(strings[1974]);
-strings[1975] = str->add(strings[1975]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1987] = str->add(strings[1987]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add("Bitstream Vera Sans Mono");
-strings[1976] = str->add(strings[1976]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add(strings[1979]);
-strings[104] = str->add(strings[104]);
-strings[1989] = str->add("/usr/devel/share/enlightenment/data/fonts/VeraMoBI.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1976] = str->add(strings[1976]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add(strings[1981]);
-strings[1982] = str->add(strings[1982]);
-strings[1989] = str->add(strings[1989]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1976] = str->add(strings[1976]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[101] = str->add(strings[101]);
-strings[1989] = str->add(strings[1989]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1976] = str->add(strings[1976]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1989] = str->add(strings[1989]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1976] = str->add(strings[1976]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1989] = str->add(strings[1989]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add(strings[1979]);
-strings[104] = str->add(strings[104]);
-strings[1990] = str->add("/usr/devel/share/enlightenment/data/fonts/VeraMoBd.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add(strings[1981]);
-strings[1982] = str->add(strings[1982]);
-strings[1990] = str->add(strings[1990]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[101] = str->add(strings[101]);
-strings[1990] = str->add(strings[1990]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1990] = str->add(strings[1990]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1990] = str->add(strings[1990]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add(strings[1979]);
-strings[104] = str->add(strings[104]);
-strings[1991] = str->add("/usr/devel/share/enlightenment/data/fonts/VeraMoIt.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add(strings[1981]);
-strings[1982] = str->add(strings[1982]);
-strings[1991] = str->add(strings[1991]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[101] = str->add(strings[101]);
-strings[1991] = str->add(strings[1991]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1991] = str->add(strings[1991]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[90] = str->add(strings[90]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1991] = str->add(strings[1991]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add(strings[1979]);
-strings[104] = str->add(strings[104]);
-strings[1992] = str->add("/usr/devel/share/enlightenment/data/fonts/VeraMono.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add(strings[1981]);
-strings[1982] = str->add(strings[1982]);
-strings[1992] = str->add(strings[1992]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[101] = str->add(strings[101]);
-strings[1992] = str->add(strings[1992]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1992] = str->add(strings[1992]);
-strings[1974] = str->add(strings[1974]);
-strings[1988] = str->add(strings[1988]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[125] = str->add(strings[125]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1992] = str->add(strings[1992]);
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add("Bitstream Vera Serif");
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add(strings[1979]);
-strings[104] = str->add(strings[104]);
-strings[1994] = str->add("/usr/devel/share/enlightenment/data/fonts/VeraSe.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add(strings[1993]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add(strings[1981]);
-strings[1982] = str->add(strings[1982]);
-strings[1994] = str->add(strings[1994]);
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add(strings[1993]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[101] = str->add(strings[101]);
-strings[1994] = str->add(strings[1994]);
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add(strings[1993]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1994] = str->add(strings[1994]);
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add(strings[1993]);
-strings[1984] = str->add(strings[1984]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1994] = str->add(strings[1994]);
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add(strings[1993]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1979] = str->add(strings[1979]);
-strings[104] = str->add(strings[104]);
-strings[1995] = str->add("/usr/devel/share/enlightenment/data/fonts/VeraSeBd.ttf");
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add(strings[1993]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1981] = str->add(strings[1981]);
-strings[1982] = str->add(strings[1982]);
-strings[1995] = str->add(strings[1995]);
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add(strings[1993]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[101] = str->add(strings[101]);
-strings[1995] = str->add(strings[1995]);
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add(strings[1993]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[1982] = str->add(strings[1982]);
-strings[1995] = str->add(strings[1995]);
-strings[1974] = str->add(strings[1974]);
-strings[1993] = str->add(strings[1993]);
-strings[1976] = str->add(strings[1976]);
-strings[97] = str->add(strings[97]);
-strings[1977] = str->add(strings[1977]);
-strings[1842] = str->add(strings[1842]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[104] = str->add(strings[104]);
-strings[1978] = str->add(strings[1978]);
-strings[104] = str->add(strings[104]);
-strings[1983] = str->add(strings[1983]);
-strings[120] = str->add(strings[120]);
-strings[1995] = str->add(strings[1995]);
-strings[62] = str->add(strings[62]);
-strings[1985] = str->add(strings[1985]);
-strings[1996] = str->add("VeraBI");
-strings[1980] = str->add(strings[1980]);
-strings[1997] = str->add("VeraBd");
-strings[1986] = str->add(strings[1986]);
-strings[1998] = str->add("VeraIt");
-strings[1987] = str->add(strings[1987]);
-strings[1999] = str->add("VeraMoBI");
-strings[1989] = str->add(strings[1989]);
-strings[2000] = str->add("VeraMoBd");
-strings[1990] = str->add(strings[1990]);
-strings[2001] = str->add("VeraMoIt");
-strings[1991] = str->add(strings[1991]);
-strings[2002] = str->add("VeraMono");
-strings[1992] = str->add(strings[1992]);
-strings[2003] = str->add("VeraSe");
-strings[1994] = str->add(strings[1994]);
-strings[2004] = str->add("VeraSeBd");
-strings[1995] = str->add(strings[1995]);
-strings[2005] = str->add("Vera-Bold-Italic");
-strings[2006] = str->add("Vera-Normal");
-strings[2007] = str->add("Vera-Bold");
-strings[2008] = str->add("Vera-Italic");
-strings[2009] = str->add("Vera-Mono-Bold-Italic");
-strings[2010] = str->add("Vera-Mono-Bold");
-strings[2011] = str->add("Vera-Mono-Italic");
-strings[2012] = str->add("Vera-Mono");
-strings[2013] = str->add("Vera-Serif");
-strings[2014] = str->add("Vera-Serif-Bold");
-strings[62] = str->add(strings[62]);
-str->del(strings[1972]);
-str->del(strings[1973]);
-strings[2015] = str->add("/var/lib/defoma/fontconfig.d/D/DejaVu-Sans-Bold.ttf");
-strings[2016] = str->add("/var/lib/defoma/fontconfig.d/D/DejaVu-Sans-Bold-Oblique.ttf");
-strings[2017] = str->add("/var/lib/defoma/fontconfig.d/D/DejaVu-Sans-ExtraLight.ttf");
-strings[2018] = str->add("/var/lib/defoma/fontconfig.d/D/DejaVu-Sans.ttf");
-strings[2019] = str->add("/var/lib/defoma/fontconfig.d/N/NimbusSanL-Bold.pfb");
-strings[2020] = str->add("/var/lib/defoma/fontconfig.d/K/KochiGothic-Regular.ttf");
-strings[2021] = str->add("/var/lib/defoma/fontconfig.d/D/Dotum-Regular.ttf");
-strings[2022] = str->add("/var/lib/defoma/fontconfig.d/F/FreeSans-Bold.ttf");
-strings[2023] = str->add("/var/lib/defoma/fontconfig.d/F/FreeSans-Medium.ttf");
-strings[2024] = str->add("/var/lib/defoma/fontconfig.d/L/Loma-Bold.ttf");
-strings[2025] = str->add("/var/lib/defoma/fontconfig.d/O/Ouhod.ttf");
-strings[2026] = str->add("/var/lib/defoma/fontconfig.d/N/Norasi-Bold.ttf");
-strings[2027] = str->add("/var/lib/defoma/fontconfig.d/D/DejaVu-Sans-Mono-Bold.ttf");
-strings[2028] = str->add("/var/lib/defoma/fontconfig.d/D/DejaVu-Serif-Bold.ttf");
-strings[2029] = str->add("/var/lib/defoma/fontconfig.d/F/FreeSerif-Bold.ttf");
-strings[2030] = str->add("/var/lib/defoma/fontconfig.d/F/FreeMono-Bold.ttf");
-strings[2031] = str->add("/usr/share/fonts/truetype/ttf-gujarati-fonts/padmaa-Bold.1.1.ttf");
-strings[2032] = str->add("/var/lib/defoma/fontconfig.d/B/Batang-Bold.ttf");
-strings[2033] = str->add("/var/lib/defoma/fontconfig.d/K/Kedage.ttf");
-strings[2034] = str->add("/var/lib/defoma/fontconfig.d/T/TSCuParanar-Bold.ttf");
-strings[2035] = str->add("/var/lib/defoma/fontconfig.d/P/Purisa.ttf");
-strings[2036] = str->add("/var/lib/defoma/fontconfig.d/F/FreeSerif-Medium.ttf");
-strings[2037] = str->add("/var/lib/defoma/fontconfig.d/P/Pothana2000.ttf");
-strings[2038] = str->add("/var/lib/defoma/fontconfig.d/F/FreeMono-Medium.ttf");
-strings[2039] = str->add("/usr/share/fonts/truetype/ttf-devanagari-fonts/chandas1-2.ttf");
-strings[2040] = str->add("/usr/share/fonts/truetype/openoffice/opens___.ttf");
-strings[2041] = str->add("/var/lib/defoma/fontconfig.d/G/Gentium-Italic.ttf");
-strings[2042] = str->add("/var/lib/defoma/fontconfig.d/L/Lohit-Kannada.ttf");
-strings[2043] = str->add("/var/lib/defoma/fontconfig.d/L/Lohit-Oriya.ttf");
-strings[2044] = str->add("/var/lib/defoma/fontconfig.d/T/TAMuKadambri-Regular.ttf");
-strings[2045] = str->add("/var/lib/defoma/fontconfig.d/T/TAMuKalyani-Regular.ttf");
-strings[2046] = str->add("/var/lib/defoma/fontconfig.d/T/TSCuComic-Normal.ttf");
-strings[2047] = str->add("/var/lib/defoma/fontconfig.d/T/TSCuParanar-Regular.ttf");
-strings[2048] = str->add("/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf");
-strings[2049] = str->add("/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf");
-strings[2050] = str->add("/var/lib/defoma/fontconfig.d/A/AnjaliOldLipi.ttf");
-strings[2051] = str->add("/usr/share/fonts/truetype/arphic/ukai.ttf");
-strings[2052] = str->add("/usr/share/fonts/truetype/arphic/uming.ttf");
-strings[2053] = str->add("/var/lib/defoma/fontconfig.d/K/KochiMincho-Regular.ttf");
-strings[2054] = str->add("/usr/share/fonts/truetype/ttf-malayalam-fonts/Rachana_w01.ttf");
-strings[2055] = str->add("/usr/share/fonts/truetype/unfonts/UnBatang.ttf");
-strings[2056] = str->add("/var/lib/defoma/fontconfig.d/S/StandardSymL.pfb");
-strings[2057] = str->add("/var/lib/defoma/fontconfig.d/T/TSCuParanar-Italic.ttf");
-strings[379] = str->add(strings[379]);
-strings[1760] = str->add(strings[1760]);
-strings[1760] = str->add(strings[1760]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1760]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add("images/65");
-strings[2059] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/65");
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[2060] = str->add("e,state,selected");
-strings[1959] = str->add(strings[1959]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1761] = str->add(strings[1761]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1761] = str->add(strings[1761]);
-strings[1761] = str->add(strings[1761]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1761]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1762] = str->add(strings[1762]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1762] = str->add(strings[1762]);
-strings[1762] = str->add(strings[1762]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1762]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1763] = str->add(strings[1763]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1763] = str->add(strings[1763]);
-strings[1763] = str->add(strings[1763]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1763]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1764] = str->add(strings[1764]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1764] = str->add(strings[1764]);
-strings[1764] = str->add(strings[1764]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1764]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1765] = str->add(strings[1765]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1765] = str->add(strings[1765]);
-strings[1765] = str->add(strings[1765]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1765]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1766] = str->add(strings[1766]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1766] = str->add(strings[1766]);
-strings[1766] = str->add(strings[1766]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1766]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1767] = str->add(strings[1767]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1767] = str->add(strings[1767]);
-strings[1767] = str->add(strings[1767]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1767]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1768] = str->add(strings[1768]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1768] = str->add(strings[1768]);
-strings[1768] = str->add(strings[1768]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1768]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[1769] = str->add(strings[1769]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1769] = str->add(strings[1769]);
-strings[1769] = str->add(strings[1769]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1769]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[51] = str->add(strings[51]);
-strings[64] = str->add(strings[64]);
-strings[2061] = str->add("e/shelf/default/inset");
-strings[2061] = str->add(strings[2061]);
-strings[1755] = str->add(strings[1755]);
-strings[1961] = str->add(strings[1961]);
-strings[1959] = str->add(strings[1959]);
-str->del(strings[1755]);
-strings[337] = str->add(strings[337]);
-strings[64] = str->add(strings[64]);
-strings[2062] = str->add("images/54");
-strings[2063] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/54");
-strings[64] = str->add(strings[64]);
-strings[2062] = str->add(strings[2062]);
-strings[1841] = str->add(strings[1841]);
-str->del(strings[337]);
-strings[337] = str->add(strings[337]);
-strings[57] = str->add(strings[57]);
-strings[64] = str->add(strings[64]);
-strings[2061] = str->add(strings[2061]);
-strings[1755] = str->add(strings[1755]);
-strings[1961] = str->add(strings[1961]);
-strings[1959] = str->add(strings[1959]);
-str->del(strings[1755]);
-strings[337] = str->add(strings[337]);
-strings[64] = str->add(strings[64]);
-strings[2062] = str->add(strings[2062]);
-strings[1841] = str->add(strings[1841]);
-str->del(strings[337]);
-strings[337] = str->add(strings[337]);
-strings[2064] = str->add("/home/cedric/.e/e/applications/bar/default/.order");
-strings[2065] = str->add("base/theme/modules/ibar");
-strings[64] = str->add(strings[64]);
-strings[2066] = str->add("e/modules/ibar/icon");
-str->del(strings[64]);
-str->del(strings[2066]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add("e/modules/ibar/icon");
-strings[2067] = str->add(strings[2067]);
-strings[1755] = str->add(strings[1755]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[2068] = str->add("e/modules/ibar/icon_overlay");
-str->del(strings[64]);
-str->del(strings[2068]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add("e/modules/ibar/icon_overlay");
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[1755] = str->add(strings[1755]);
-strings[1841] = str->add(strings[1841]);
-strings[2070] = str->add("/usr/devel/share/enlightenment/data/icons/xterm.png");
-strings[2071] = str->add("/usr/devel/share/enlightenment/data/icons/xterm.png//://(nil)//@/0/0.00000/64x64");
-strings[2070] = str->add(strings[2070]);
-strings[2070] = str->add(strings[2070]);
-strings[471] = str->add(strings[471]);
-strings[471] = str->add(strings[471]);
-strings[2072] = str->add("/usr/devel/share/enlightenment/data/themes/default.edj/fonts/Edje-Vera-Bold");
-str->del(strings[471]);
-strings[471] = str->add(strings[471]);
-strings[469] = str->add(strings[469]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2073] = str->add("XTerm");
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[1755] = str->add(strings[1755]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[1755] = str->add(strings[1755]);
-strings[1841] = str->add(strings[1841]);
-strings[2074] = str->add("/usr/devel/share/enlightenment/data/icons/web_browser.png");
-strings[2075] = str->add("/usr/devel/share/enlightenment/data/icons/web_browser.png//://(nil)//@/0/0.00000/64x64");
-strings[2074] = str->add(strings[2074]);
-strings[2074] = str->add(strings[2074]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2076] = str->add("Firefox");
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[1755] = str->add(strings[1755]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[1755] = str->add(strings[1755]);
-strings[1841] = str->add(strings[1841]);
-strings[2077] = str->add("/usr/devel/share/enlightenment/data/icons/audio_player.png");
-strings[2078] = str->add("/usr/devel/share/enlightenment/data/icons/audio_player.png//://(nil)//@/0/0.00000/64x64");
-strings[2077] = str->add(strings[2077]);
-strings[2077] = str->add(strings[2077]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2079] = str->add("XMMS");
-strings[58] = str->add(strings[58]);
-strings[64] = str->add(strings[64]);
-strings[2061] = str->add(strings[2061]);
-strings[1755] = str->add(strings[1755]);
-strings[1961] = str->add(strings[1961]);
-strings[1959] = str->add(strings[1959]);
-str->del(strings[1755]);
-strings[337] = str->add(strings[337]);
-strings[64] = str->add(strings[64]);
-strings[2062] = str->add(strings[2062]);
-strings[1841] = str->add(strings[1841]);
-str->del(strings[337]);
-strings[337] = str->add(strings[337]);
-strings[2080] = str->add("base/theme/modules/temperature");
-strings[64] = str->add(strings[64]);
-strings[2081] = str->add("e/modules/temperature/main");
-strings[2081] = str->add(strings[2081]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[52] = str->add(strings[52]);
-strings[64] = str->add(strings[64]);
-strings[1960] = str->add(strings[1960]);
-strings[1755] = str->add(strings[1755]);
-strings[1961] = str->add(strings[1961]);
-strings[1959] = str->add(strings[1959]);
-str->del(strings[1755]);
-strings[336] = str->add(strings[336]);
-strings[1841] = str->add(strings[1841]);
-strings[1841] = str->add(strings[1841]);
-str->del(strings[336]);
-strings[336] = str->add(strings[336]);
-strings[2082] = str->add("base/theme/modules/cpufreq");
-strings[64] = str->add(strings[64]);
-strings[2083] = str->add("e/modules/cpufreq/main");
-strings[2083] = str->add(strings[2083]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[2084] = str->add("e,action,governor,next");
-strings[2085] = str->add("*");
-strings[2086] = str->add("e,action,frequency,increase");
-strings[2085] = str->add(strings[2085]);
-strings[2087] = str->add("e,action,frequency,decrease");
-strings[2085] = str->add(strings[2085]);
-strings[53] = str->add(strings[53]);
-strings[64] = str->add(strings[64]);
-strings[1960] = str->add(strings[1960]);
-strings[1755] = str->add(strings[1755]);
-strings[1961] = str->add(strings[1961]);
-strings[1959] = str->add(strings[1959]);
-str->del(strings[1755]);
-strings[336] = str->add(strings[336]);
-strings[1841] = str->add(strings[1841]);
-strings[1841] = str->add(strings[1841]);
-strings[2088] = str->add("e,state,enabled");
-strings[1959] = str->add(strings[1959]);
-str->del(strings[336]);
-strings[336] = str->add(strings[336]);
-strings[2089] = str->add("base/theme/modules/battery");
-strings[64] = str->add(strings[64]);
-strings[2090] = str->add("e/modules/battery/main");
-strings[2090] = str->add(strings[2090]);
-strings[64] = str->add(strings[64]);
-strings[64] = str->add(strings[64]);
-strings[1755] = str->add(strings[1755]);
-strings[54] = str->add(strings[54]);
-strings[64] = str->add(strings[64]);
-strings[1960] = str->add(strings[1960]);
-strings[1755] = str->add(strings[1755]);
-strings[1961] = str->add(strings[1961]);
-strings[1959] = str->add(strings[1959]);
-str->del(strings[1755]);
-strings[336] = str->add(strings[336]);
-strings[1841] = str->add(strings[1841]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[2091] = str->add("images/75");
-strings[2092] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/75");
-strings[64] = str->add(strings[64]);
-strings[2091] = str->add(strings[2091]);
-strings[64] = str->add(strings[64]);
-strings[2093] = str->add("images/76");
-strings[2094] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/76");
-strings[64] = str->add(strings[64]);
-strings[2093] = str->add(strings[2093]);
-strings[64] = str->add(strings[64]);
-strings[2095] = str->add("images/69");
-strings[2096] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/69");
-strings[64] = str->add(strings[64]);
-strings[2095] = str->add(strings[2095]);
-strings[64] = str->add(strings[64]);
-strings[2097] = str->add("images/70");
-strings[2098] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/70");
-strings[64] = str->add(strings[64]);
-strings[2097] = str->add(strings[2097]);
-strings[64] = str->add(strings[64]);
-strings[2099] = str->add("images/71");
-strings[2100] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/71");
-strings[64] = str->add(strings[64]);
-strings[2099] = str->add(strings[2099]);
-strings[64] = str->add(strings[64]);
-strings[2101] = str->add("images/72");
-strings[2102] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/72");
-strings[64] = str->add(strings[64]);
-strings[2101] = str->add(strings[2101]);
-strings[64] = str->add(strings[64]);
-strings[2103] = str->add("images/73");
-strings[2104] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/73");
-strings[64] = str->add(strings[64]);
-strings[2103] = str->add(strings[2103]);
-strings[64] = str->add(strings[64]);
-strings[2105] = str->add("images/74");
-strings[2106] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/74");
-strings[64] = str->add(strings[64]);
-strings[2105] = str->add(strings[2105]);
-strings[64] = str->add(strings[64]);
-strings[2107] = str->add("images/77");
-strings[2108] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/77");
-strings[64] = str->add(strings[64]);
-strings[2107] = str->add(strings[2107]);
-strings[64] = str->add(strings[64]);
-strings[2109] = str->add("images/78");
-strings[2110] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/78");
-strings[64] = str->add(strings[64]);
-strings[2109] = str->add(strings[2109]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[336]);
-strings[336] = str->add(strings[336]);
-strings[2111] = str->add("base/theme/modules/clock");
-strings[64] = str->add(strings[64]);
-strings[2112] = str->add("e/modules/clock/main");
-strings[2112] = str->add(strings[2112]);
-strings[1755] = str->add(strings[1755]);
-strings[1841] = str->add(strings[1841]);
-strings[55] = str->add(strings[55]);
-strings[64] = str->add(strings[64]);
-strings[1960] = str->add(strings[1960]);
-strings[1755] = str->add(strings[1755]);
-strings[1961] = str->add(strings[1961]);
-strings[1959] = str->add(strings[1959]);
-str->del(strings[1755]);
-strings[336] = str->add(strings[336]);
-strings[1841] = str->add(strings[1841]);
-str->del(strings[336]);
-strings[336] = str->add(strings[336]);
-strings[341] = str->add(strings[341]);
-strings[2113] = str->add("/usr/devel/lib/enlightenment/modules/note/e-module-note.edj");
-strings[2114] = str->add("modules/note/main");
-strings[2113] = str->add(strings[2113]);
-strings[379] = str->add(strings[379]);
-strings[2115] = str->add("module_normal");
-strings[2116] = str->add("align=left color=#000000 wrap=word");
-strings[382] = str->add(strings[382]);
-strings[2114] = str->add(strings[2114]);
-strings[1755] = str->add(strings[1755]);
-strings[10] = str->add(strings[10]);
-strings[64] = str->add(strings[64]);
-strings[1960] = str->add(strings[1960]);
-strings[1755] = str->add(strings[1755]);
-strings[1961] = str->add(strings[1961]);
-strings[1959] = str->add(strings[1959]);
-str->del(strings[1755]);
-strings[336] = str->add(strings[336]);
-strings[1841] = str->add(strings[1841]);
-strings[1841] = str->add(strings[1841]);
-str->del(strings[336]);
-strings[336] = str->add(strings[336]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-strings[1864] = str->add(strings[1864]);
-str->del(strings[1755]);
-str->del(strings[1755]);
-str->del(strings[1864]);
-strings[2117] = str->add("program,start");
-strings[1840] = str->add(strings[1840]);
-strings[2117] = str->add(strings[2117]);
-strings[1845] = str->add(strings[1845]);
-strings[2117] = str->add(strings[2117]);
-strings[1847] = str->add(strings[1847]);
-strings[2117] = str->add(strings[2117]);
-strings[1849] = str->add(strings[1849]);
-strings[2117] = str->add(strings[2117]);
-strings[1851] = str->add(strings[1851]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1864]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1864]);
-str->del(strings[1755]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1755]);
-strings[2117] = str->add(strings[2117]);
-strings[2118] = str->add("off");
-str->del(strings[1958]);
-str->del(strings[1959]);
-str->del(strings[1961]);
-str->del(strings[1959]);
-str->del(strings[1841]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-strings[2117] = str->add(strings[2117]);
-strings[2119] = str->add("on");
-str->del(strings[2060]);
-str->del(strings[1959]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1961]);
-str->del(strings[1959]);
-str->del(strings[1841]);
-str->del(strings[1961]);
-str->del(strings[1959]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1961]);
-str->del(strings[1959]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1961]);
-str->del(strings[1959]);
-str->del(strings[1841]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1961]);
-str->del(strings[1959]);
-str->del(strings[1841]);
-str->del(strings[1841]);
-strings[2120] = str->add("2.4");
-strings[2117] = str->add(strings[2117]);
-strings[2121] = str->add("enabled");
-strings[1932] = str->add(strings[1932]);
-strings[2121] = str->add(strings[2121]);
-str->del(strings[2088]);
-str->del(strings[1959]);
-str->del(strings[1755]);
-str->del(strings[1961]);
-str->del(strings[1959]);
-str->del(strings[1841]);
-str->del(strings[1841]);
-strings[2117] = str->add(strings[2117]);
-strings[2122] = str->add("init");
-strings[1932] = str->add(strings[1932]);
-strings[2122] = str->add(strings[2122]);
-str->del(strings[1755]);
-str->del(strings[1841]);
-str->del(strings[1961]);
-str->del(strings[1959]);
-str->del(strings[1841]);
-str->del(strings[1755]);
-str->del(strings[1961]);
-str->del(strings[1959]);
-str->del(strings[1841]);
-str->del(strings[1841]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[1864]);
-str->del(strings[2117]);
-str->del(strings[1840]);
-str->del(strings[2117]);
-str->del(strings[1845]);
-str->del(strings[2117]);
-str->del(strings[1847]);
-str->del(strings[2117]);
-str->del(strings[1849]);
-str->del(strings[2117]);
-str->del(strings[1851]);
-str->del(strings[2117]);
-str->del(strings[2118]);
-str->del(strings[2117]);
-str->del(strings[2119]);
-str->del(strings[2117]);
-str->del(strings[2121]);
-str->del(strings[1932]);
-str->del(strings[2121]);
-str->del(strings[2117]);
-str->del(strings[2122]);
-str->del(strings[1932]);
-str->del(strings[2122]);
-strings[361] = str->add(strings[361]);
-strings[362] = str->add(strings[362]);
-strings[361] = str->add(strings[361]);
-str->del(strings[361]);
-strings[362] = str->add(strings[362]);
-str->del(strings[362]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add("load");
-strings[1760] = str->add(strings[1760]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1760] = str->add(strings[1760]);
-strings[1760] = str->add(strings[1760]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1760]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[2124] = str->add("e,state,selected");
-strings[2125] = str->add("e");
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1761] = str->add(strings[1761]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1761] = str->add(strings[1761]);
-strings[1761] = str->add(strings[1761]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1761]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1762] = str->add(strings[1762]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1762] = str->add(strings[1762]);
-strings[1762] = str->add(strings[1762]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1762]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1763] = str->add(strings[1763]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1763] = str->add(strings[1763]);
-strings[1763] = str->add(strings[1763]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1763]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1764] = str->add(strings[1764]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1764] = str->add(strings[1764]);
-strings[1764] = str->add(strings[1764]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1764]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1765] = str->add(strings[1765]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1765] = str->add(strings[1765]);
-strings[1765] = str->add(strings[1765]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1765]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1766] = str->add(strings[1766]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1766] = str->add(strings[1766]);
-strings[1766] = str->add(strings[1766]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1766]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1767] = str->add(strings[1767]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1767] = str->add(strings[1767]);
-strings[1767] = str->add(strings[1767]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1767]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1768] = str->add(strings[1768]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1768] = str->add(strings[1768]);
-strings[1768] = str->add(strings[1768]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1768]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1769] = str->add(strings[1769]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1769] = str->add(strings[1769]);
-strings[1769] = str->add(strings[1769]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1769]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[2126] = str->add("resize");
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[64] = str->add(strings[64]);
-strings[2127] = str->add("e/modules/pager/popup");
-strings[2127] = str->add(strings[2127]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1760] = str->add(strings[1760]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1949] = str->add(strings[1949]);
-strings[64] = str->add(strings[64]);
-strings[1880] = str->add(strings[1880]);
-strings[2128] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/3");
-strings[64] = str->add(strings[64]);
-strings[1880] = str->add(strings[1880]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[2129] = str->add("Sans:style=Bold");
-strings[2130] = str->add("Edje-Vera-Bold");
-str->del(strings[2129]);
-str->del(strings[2130]);
-strings[379] = str->add(strings[379]);
-strings[1760] = str->add(strings[1760]);
-strings[1760] = str->add(strings[1760]);
-strings[1760] = str->add(strings[1760]);
-strings[64] = str->add(strings[64]);
-strings[1876] = str->add(strings[1876]);
-strings[2131] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/5");
-strings[64] = str->add(strings[64]);
-strings[1876] = str->add(strings[1876]);
-strings[64] = str->add(strings[64]);
-strings[1874] = str->add(strings[1874]);
-strings[2132] = str->add("/home/cedric/.e/e/themes/b_and_w.edj//://images/6");
-strings[64] = str->add(strings[64]);
-strings[1874] = str->add(strings[1874]);
-strings[2126] = str->add(strings[2126]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1760]);
-str->del(strings[1760]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1761]);
-str->del(strings[1761]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1762]);
-str->del(strings[1762]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1763]);
-str->del(strings[1763]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1764]);
-str->del(strings[1764]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1765]);
-str->del(strings[1765]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1766]);
-str->del(strings[1766]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1767]);
-str->del(strings[1767]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1768]);
-str->del(strings[1768]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[1769]);
-str->del(strings[1769]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1760] = str->add(strings[1760]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1760] = str->add(strings[1760]);
-strings[1760] = str->add(strings[1760]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1760]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[2124] = str->add(strings[2124]);
-strings[2125] = str->add(strings[2125]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1761] = str->add(strings[1761]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1761] = str->add(strings[1761]);
-strings[1761] = str->add(strings[1761]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1761]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1762] = str->add(strings[1762]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1762] = str->add(strings[1762]);
-strings[1762] = str->add(strings[1762]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1762]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1763] = str->add(strings[1763]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1763] = str->add(strings[1763]);
-strings[1763] = str->add(strings[1763]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1763]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1764] = str->add(strings[1764]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1764] = str->add(strings[1764]);
-strings[1764] = str->add(strings[1764]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1764]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1765] = str->add(strings[1765]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1765] = str->add(strings[1765]);
-strings[1765] = str->add(strings[1765]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1765]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1766] = str->add(strings[1766]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1766] = str->add(strings[1766]);
-strings[1766] = str->add(strings[1766]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1766]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1767] = str->add(strings[1767]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1767] = str->add(strings[1767]);
-strings[1767] = str->add(strings[1767]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1767]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1768] = str->add(strings[1768]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1768] = str->add(strings[1768]);
-strings[1768] = str->add(strings[1768]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1768]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1769] = str->add(strings[1769]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1769] = str->add(strings[1769]);
-strings[1769] = str->add(strings[1769]);
-strings[1842] = str->add(strings[1842]);
-str->del(strings[1769]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[2126] = str->add(strings[2126]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2124]);
-str->del(strings[2125]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1760]);
-str->del(strings[1760]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1761]);
-str->del(strings[1761]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1762]);
-str->del(strings[1762]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1763]);
-str->del(strings[1763]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1764]);
-str->del(strings[1764]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1765]);
-str->del(strings[1765]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1766]);
-str->del(strings[1766]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1767]);
-str->del(strings[1767]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1768]);
-str->del(strings[1768]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[1933]);
-str->del(strings[1769]);
-str->del(strings[1769]);
-str->del(strings[1842]);
-str->del(strings[64]);
-str->del(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1760] = str->add(strings[1760]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1760] = str->add(strings[1760]);
-strings[1760] = str->add(strings[1760]);
-strings[1760] = str->add(strings[1760]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[2124] = str->add(strings[2124]);
-strings[2125] = str->add(strings[2125]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1761] = str->add(strings[1761]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1761] = str->add(strings[1761]);
-strings[1761] = str->add(strings[1761]);
-strings[1761] = str->add(strings[1761]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1762] = str->add(strings[1762]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1762] = str->add(strings[1762]);
-strings[1762] = str->add(strings[1762]);
-strings[1762] = str->add(strings[1762]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1763] = str->add(strings[1763]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1763] = str->add(strings[1763]);
-strings[1763] = str->add(strings[1763]);
-strings[1763] = str->add(strings[1763]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1764] = str->add(strings[1764]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1764] = str->add(strings[1764]);
-strings[1764] = str->add(strings[1764]);
-strings[1764] = str->add(strings[1764]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1765] = str->add(strings[1765]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1765] = str->add(strings[1765]);
-strings[1765] = str->add(strings[1765]);
-strings[1765] = str->add(strings[1765]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1766] = str->add(strings[1766]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1766] = str->add(strings[1766]);
-strings[1766] = str->add(strings[1766]);
-strings[1766] = str->add(strings[1766]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1767] = str->add(strings[1767]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1767] = str->add(strings[1767]);
-strings[1767] = str->add(strings[1767]);
-strings[1767] = str->add(strings[1767]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1768] = str->add(strings[1768]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1768] = str->add(strings[1768]);
-strings[1768] = str->add(strings[1768]);
-strings[1768] = str->add(strings[1768]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[64] = str->add(strings[64]);
-strings[1963] = str->add(strings[1963]);
-strings[64] = str->add(strings[64]);
-strings[2123] = str->add(strings[2123]);
-strings[1769] = str->add(strings[1769]);
-strings[2126] = str->add(strings[2126]);
-strings[1841] = str->add(strings[1841]);
-strings[64] = str->add(strings[64]);
-strings[1964] = str->add(strings[1964]);
-strings[64] = str->add(strings[64]);
-strings[1966] = str->add(strings[1966]);
-strings[64] = str->add(strings[64]);
-strings[1968] = str->add(strings[1968]);
-strings[64] = str->add(strings[64]);
-strings[1970] = str->add(strings[1970]);
-str->del(strings[64]);
-strings[379] = str->add(strings[379]);
-strings[1769] = str->add(strings[1769]);
-strings[1769] = str->add(strings[1769]);
-strings[1769] = str->add(strings[1769]);
-strings[64] = str->add(strings[64]);
-strings[2058] = str->add(strings[2058]);
-strings[2073] = str->add(strings[2073]);
-str->del(strings[1842]);
-strings[2073] = str->add(strings[2073]);
-str->del(strings[1842]);
-strings[2073] = str->add(strings[2073]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[469]);
-str->del(strings[2067]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[2073]);
-str->del(strings[2073]);
-str->del(strings[2073]);
-str->del(strings[469]);
-str->del(strings[2069]);
-strings[2076] = str->add(strings[2076]);
-str->del(strings[1842]);
-strings[2076] = str->add(strings[2076]);
-str->del(strings[1842]);
-strings[2076] = str->add(strings[2076]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[469]);
-str->del(strings[2067]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[2076]);
-str->del(strings[2076]);
-str->del(strings[2076]);
-str->del(strings[469]);
-str->del(strings[2069]);
-strings[2079] = str->add(strings[2079]);
-str->del(strings[1842]);
-strings[2079] = str->add(strings[2079]);
-str->del(strings[1842]);
-strings[2079] = str->add(strings[2079]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[469]);
-str->del(strings[2067]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[1933]);
-str->del(strings[2079]);
-str->del(strings[2079]);
-str->del(strings[2079]);
-str->del(strings[469]);
-str->del(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[2070] = str->add(strings[2070]);
-strings[2070] = str->add(strings[2070]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2073] = str->add(strings[2073]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[2074] = str->add(strings[2074]);
-strings[2074] = str->add(strings[2074]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2076] = str->add(strings[2076]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[2077] = str->add(strings[2077]);
-strings[2077] = str->add(strings[2077]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2079] = str->add(strings[2079]);
-strings[2073] = str->add(strings[2073]);
-str->del(strings[1842]);
-strings[2073] = str->add(strings[2073]);
-str->del(strings[1842]);
-strings[2073] = str->add(strings[2073]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[469]);
-str->del(strings[2067]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[2073]);
-str->del(strings[2073]);
-str->del(strings[2073]);
-str->del(strings[469]);
-str->del(strings[2069]);
-strings[2076] = str->add(strings[2076]);
-str->del(strings[1842]);
-strings[2076] = str->add(strings[2076]);
-str->del(strings[1842]);
-strings[2076] = str->add(strings[2076]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[469]);
-str->del(strings[2067]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[2076]);
-str->del(strings[2076]);
-str->del(strings[2076]);
-str->del(strings[469]);
-str->del(strings[2069]);
-strings[2079] = str->add(strings[2079]);
-str->del(strings[1842]);
-strings[2079] = str->add(strings[2079]);
-str->del(strings[1842]);
-strings[2079] = str->add(strings[2079]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[469]);
-str->del(strings[2067]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[2079]);
-str->del(strings[2079]);
-str->del(strings[2079]);
-str->del(strings[469]);
-str->del(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[2070] = str->add(strings[2070]);
-strings[2070] = str->add(strings[2070]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2073] = str->add(strings[2073]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[2074] = str->add(strings[2074]);
-strings[2074] = str->add(strings[2074]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2076] = str->add(strings[2076]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[2077] = str->add(strings[2077]);
-strings[2077] = str->add(strings[2077]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2079] = str->add(strings[2079]);
-strings[2073] = str->add(strings[2073]);
-str->del(strings[1842]);
-strings[2073] = str->add(strings[2073]);
-str->del(strings[1842]);
-strings[2073] = str->add(strings[2073]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[469]);
-str->del(strings[2067]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[2073]);
-str->del(strings[2073]);
-str->del(strings[2073]);
-str->del(strings[469]);
-str->del(strings[2069]);
-strings[2076] = str->add(strings[2076]);
-str->del(strings[1842]);
-strings[2076] = str->add(strings[2076]);
-str->del(strings[1842]);
-strings[2076] = str->add(strings[2076]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[469]);
-str->del(strings[2067]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[2076]);
-str->del(strings[2076]);
-str->del(strings[2076]);
-str->del(strings[469]);
-str->del(strings[2069]);
-strings[2079] = str->add(strings[2079]);
-str->del(strings[1842]);
-strings[2079] = str->add(strings[2079]);
-str->del(strings[1842]);
-strings[2079] = str->add(strings[2079]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[469]);
-str->del(strings[2067]);
-strings[1933] = str->add(strings[1933]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[1933]);
-str->del(strings[2079]);
-str->del(strings[2079]);
-str->del(strings[2079]);
-str->del(strings[469]);
-str->del(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[2070] = str->add(strings[2070]);
-strings[2070] = str->add(strings[2070]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2073] = str->add(strings[2073]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[2074] = str->add(strings[2074]);
-strings[2074] = str->add(strings[2074]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2076] = str->add(strings[2076]);
-strings[469] = str->add(strings[469]);
-strings[2067] = str->add(strings[2067]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[469] = str->add(strings[469]);
-strings[2069] = str->add(strings[2069]);
-strings[469] = str->add(strings[469]);
-strings[2123] = str->add(strings[2123]);
-strings[1841] = str->add(strings[1841]);
-strings[2077] = str->add(strings[2077]);
-strings[2077] = str->add(strings[2077]);
-strings[471] = str->add(strings[471]);
-strings[1842] = str->add(strings[1842]);
-strings[1842] = str->add(strings[1842]);
-strings[2079] = str->add(strings[2079]);
-strings[2133] = str->add("e,action,mouse,move");
-strings[2125] = str->add(strings[2125]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[1737] = str->add(strings[1737]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add("mouse,move");
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2133] = str->add(strings[2133]);
-strings[2125] = str->add(strings[2125]);
-strings[2134] = str->add(strings[2134]);
-strings[1853] = str->add(strings[1853]);
-strings[2135] = str->add("e,state,known");
-strings[1842] = str->add(strings[1842]);
-strings[2136] = str->add("40°C");
-strings[2137] = str->add("e,state,discharging");
-strings[2125] = str->add(strings[2125]);
-strings[2138] = str->add("0%");
-str->del(strings[2138]);
-strings[2139] = str->add("N/A");
-strings[2140] = str->add("0:00");
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-strings[2141] = str->add("program,start");
-strings[2142] = str->add("on");
-str->del(strings[2124]);
-str->del(strings[2125]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2126]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-strings[2141] = str->add(strings[2141]);
-strings[2142] = str->add(strings[2142]);
-str->del(strings[2124]);
-str->del(strings[2125]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[2126]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2123]);
-str->del(strings[1841]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[1737]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
-str->del(strings[1853]);
-str->del(strings[2133]);
-str->del(strings[2125]);
-str->del(strings[2134]);
<