summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--cmakeconfig/EolianHelper.cmake.in4
-rw-r--r--doc/elementary_examples.dox2
-rw-r--r--old/ChangeLog.eet2
-rw-r--r--old/ChangeLog.evas4
-rw-r--r--old/NEWS.evas2
-rw-r--r--po/POTFILES.in4
-rw-r--r--src/benchmarks/eina/Ecore_Data.h75
-rw-r--r--src/benchmarks/eina/ecore_hash.c952
-rw-r--r--src/benchmarks/eina/ecore_strings.c164
-rw-r--r--src/benchmarks/eina/eina_bench.c3
-rw-r--r--src/benchmarks/eina/eina_bench.h3
-rw-r--r--src/benchmarks/eina/eina_bench_hash.c551
-rw-r--r--src/benchmarks/eina/eina_bench_stringshare.c8
-rw-r--r--src/benchmarks/eina/eina_bench_stringshare_e17.c121
-rw-r--r--src/benchmarks/eina/meson.build4
-rw-r--r--src/bindings/mono/eina_mono/eina_stringshare.cs10
-rw-r--r--src/lib/ecore_imf/Ecore_IMF.h4
-rw-r--r--src/lib/edje/Edje_Legacy.h322
-rw-r--r--src/lib/eet/eet_lib.c2
-rw-r--r--src/lib/elementary/efl_ui_collection.c6
-rw-r--r--src/lib/elementary/efl_ui_collection_view.c2
-rw-r--r--src/lib/elementary/efl_ui_exact_model.c2
-rw-r--r--src/lib/elementary/efl_ui_internal_text_interactive.c2
-rw-r--r--src/lib/elementary/efl_ui_select_model.c6
-rw-r--r--src/lib/elementary/elc_ctxpopup.h8
-rw-r--r--src/lib/elementary/elc_ctxpopup_legacy.h2
-rw-r--r--src/lib/elementary/elc_multibuttonentry.h2
-rw-r--r--src/lib/elementary/elm_box.h2
-rw-r--r--src/lib/elementary/elm_box_common.h2
-rw-r--r--src/lib/elementary/elm_box_eo.h40
-rw-r--r--src/lib/elementary/elm_box_legacy.h4
-rw-r--r--src/lib/elementary/elm_calendar_eo.h4
-rw-r--r--src/lib/elementary/elm_calendar_eo.legacy.h4
-rw-r--r--src/lib/elementary/elm_config.h12
-rw-r--r--src/lib/elementary/elm_ctxpopup_eo.h46
-rw-r--r--src/lib/elementary/elm_ctxpopup_eo.legacy.h2
-rw-r--r--src/lib/elementary/elm_ctxpopup_item_eo.h22
-rw-r--r--src/lib/elementary/elm_deprecated.h12
-rw-r--r--src/lib/elementary/elm_entry.h2
-rw-r--r--src/lib/elementary/elm_entry_common.h2
-rw-r--r--src/lib/elementary/elm_entry_eo.h244
-rw-r--r--src/lib/elementary/elm_entry_eo.legacy.h4
-rw-r--r--src/lib/elementary/elm_entry_legacy.h12
-rw-r--r--src/lib/elementary/elm_flipselector_eo.h2
-rw-r--r--src/lib/elementary/elm_flipselector_eo.legacy.h2
-rw-r--r--src/lib/elementary/elm_general.h12
-rw-r--r--src/lib/elementary/elm_gengrid.h4
-rw-r--r--src/lib/elementary/elm_gengrid_common.h32
-rw-r--r--src/lib/elementary/elm_gengrid_eo.h114
-rw-r--r--src/lib/elementary/elm_gengrid_eo.legacy.h2
-rw-r--r--src/lib/elementary/elm_gengrid_item_eo.h46
-rw-r--r--src/lib/elementary/elm_gengrid_item_eo.legacy.h5
-rw-r--r--src/lib/elementary/elm_gengrid_legacy.h22
-rw-r--r--src/lib/elementary/elm_genlist.h4
-rw-r--r--src/lib/elementary/elm_genlist_common.h32
-rw-r--r--src/lib/elementary/elm_genlist_eo.h158
-rw-r--r--src/lib/elementary/elm_genlist_item_eo.h72
-rw-r--r--src/lib/elementary/elm_genlist_item_eo.legacy.h5
-rw-r--r--src/lib/elementary/elm_genlist_legacy.h4
-rw-r--r--src/lib/elementary/elm_gesture_layer.h2
-rw-r--r--src/lib/elementary/elm_gesture_layer_legacy.h6
-rw-r--r--src/lib/elementary/elm_map_common.h4
-rw-r--r--src/lib/elementary/elm_map_eo.h2
-rw-r--r--src/lib/elementary/elm_map_eo.legacy.h2
-rw-r--r--src/lib/elementary/elm_prefs.h2
-rw-r--r--src/lib/elementary/elm_prefs_eo.h8
-rw-r--r--src/lib/elementary/elm_prefs_eo.legacy.h8
-rw-r--r--src/lib/elementary/elm_removed.h2
-rw-r--r--src/lib/elementary/elm_spinner_eo.h4
-rw-r--r--src/lib/elementary/elm_spinner_eo.legacy.h4
-rw-r--r--src/lib/elementary/elm_toolbar.c2
-rw-r--r--src/lib/evas/Evas_Legacy.h2
-rw-r--r--src/lib/evas/common/evas_font.h1
-rw-r--r--src/lib/evas/common/evas_font_main.c102
-rw-r--r--src/lib/evas/common/evas_font_ot.c2
-rw-r--r--src/lib/evas/common/evas_scale_smooth_scaler_downx_downy.c2
-rw-r--r--src/lib/evas/common/evas_text_utils.c4
-rw-r--r--src/lib/evil/evil_util.c2
-rw-r--r--src/modules/evas/image_loaders/gif/evas_image_load_gif.c2
-rw-r--r--src/modules/evas/image_loaders/png/evas_image_load_png.c2
-rw-r--r--src/tests/eina/eina_test_file.c7
82 files changed, 815 insertions, 2556 deletions
diff --git a/NEWS b/NEWS
index d76230a801..a79ca6aa84 100644
--- a/NEWS
+++ b/NEWS
@@ -4527,7 +4527,7 @@ Fixes:
4527 * ecore-drm: Send proper keycode to ecore key event, and remove erroneous variable. 4527 * ecore-drm: Send proper keycode to ecore key event, and remove erroneous variable.
4528 * edje/Edje_Edit: _edje_edit_real_part_add init field of Edje_Real_part 4528 * edje/Edje_Edit: _edje_edit_real_part_add init field of Edje_Real_part
4529 * fix ecore_con_url using 100% cpu and just let fd handler do work (T1251) 4529 * fix ecore_con_url using 100% cpu and just let fd handler do work (T1251)
4530 * fix behavior of edje entry to match other toolkit entires (T1229) 4530 * fix behavior of edje entry to match other toolkit entries (T1229)
4531 * fix ecore_thread_global_data_wait to work when no data exists yet 4531 * fix ecore_thread_global_data_wait to work when no data exists yet
4532 * Eo: Fix deref after free. (CID1039898) 4532 * Eo: Fix deref after free. (CID1039898)
4533 * evas/render - fix segfault because of null cow access. (T1252) 4533 * evas/render - fix segfault because of null cow access. (T1252)
diff --git a/cmakeconfig/EolianHelper.cmake.in b/cmakeconfig/EolianHelper.cmake.in
index e79d3c8325..b1ca845bd1 100644
--- a/cmakeconfig/EolianHelper.cmake.in
+++ b/cmakeconfig/EolianHelper.cmake.in
@@ -47,14 +47,14 @@ function(eo_rule_create build_files relative_include_dirs)
47 ${EOLIAN_EO_DIR_WITHOUT_NEWLINE} 47 ${EOLIAN_EO_DIR_WITHOUT_NEWLINE}
48 ) 48 )
49 49
50 # convert relative to absolut 50 # convert relative to absolute
51 foreach(relative_include_dir ${relative_include_dirs}) 51 foreach(relative_include_dir ${relative_include_dirs})
52 list(APPEND include_dirs 52 list(APPEND include_dirs
53 ${CMAKE_CURRENT_SOURCE_DIR}/${relative_include_dir} 53 ${CMAKE_CURRENT_SOURCE_DIR}/${relative_include_dir}
54 ) 54 )
55 endforeach() 55 endforeach()
56 56
57 # work with the absolut paths 57 # work with the absolute paths
58 foreach(include_cmd ${include_dirs}) 58 foreach(include_cmd ${include_dirs})
59 # build include cmd 59 # build include cmd
60 string(CONCAT includes "${includes}" " -I${include_cmd}") 60 string(CONCAT includes "${includes}" " -I${include_cmd}")
diff --git a/doc/elementary_examples.dox b/doc/elementary_examples.dox
index 76aa37e953..b705b1ac26 100644
--- a/doc/elementary_examples.dox
+++ b/doc/elementary_examples.dox
@@ -2750,7 +2750,7 @@
2750 * 2750 *
2751 * The both states and the item are using the same callback function, 2751 * The both states and the item are using the same callback function,
2752 * that will cycle between states and unselect the item. Unseleting 2752 * that will cycle between states and unselect the item. Unseleting
2753 * is required because it won't call the callback if an user clicks 2753 * is required because it won't call the callback if a user clicks
2754 * over an item already selected: 2754 * over an item already selected:
2755 * @dontinclude toolbar_example_02.c 2755 * @dontinclude toolbar_example_02.c
2756 * @skip static 2756 * @skip static
diff --git a/old/ChangeLog.eet b/old/ChangeLog.eet
index 1f29bdac31..e90308bd77 100644
--- a/old/ChangeLog.eet
+++ b/old/ChangeLog.eet
@@ -544,7 +544,7 @@
5442011-11-16 Carsten Haitzler (The Rasterman) 5442011-11-16 Carsten Haitzler (The Rasterman)
545 545
546 * JPEG encode and decode in eet now uses ISLOW (not IFAST) due to 546 * JPEG encode and decode in eet now uses ISLOW (not IFAST) due to
547 noticable quality losses in the chase for speed. It will use 547 noticeable quality losses in the chase for speed. It will use
548 IFAST for quality less than 60 when encoding 548 IFAST for quality less than 60 when encoding
549 549
5502011-12-02 Carsten Haitzler (The Rasterman) 5502011-12-02 Carsten Haitzler (The Rasterman)
diff --git a/old/ChangeLog.evas b/old/ChangeLog.evas
index 4b81090e92..0b9a353652 100644
--- a/old/ChangeLog.evas
+++ b/old/ChangeLog.evas
@@ -502,7 +502,7 @@
5022011-11-16 Carsten Haitzler (The Rasterman) 5022011-11-16 Carsten Haitzler (The Rasterman)
503 503
504 * JPEG encode and decode in eet now uses ISLOW (not IFAST) due to 504 * JPEG encode and decode in eet now uses ISLOW (not IFAST) due to
505 noticable quality losses in the chase for speed. It will use 505 noticeable quality losses in the chase for speed. It will use
506 IFAST for quality less than 60 when encoding 506 IFAST for quality less than 60 when encoding
507 507
5082011-11-20 Carsten Haitzler (The Rasterman) 5082011-11-20 Carsten Haitzler (The Rasterman)
@@ -808,7 +808,7 @@
808 808
8092012-06-14 Cedric Bail 8092012-06-14 Cedric Bail
810 810
811 * Cache convertion from Evas_Map to RGBA_Map. 811 * Cache conversion from Evas_Map to RGBA_Map.
812 812
8132012-06-15 Vincent Torri 8132012-06-15 Vincent Torri
814 814
diff --git a/old/NEWS.evas b/old/NEWS.evas
index 3cc32ad5fa..cdb93ca51a 100644
--- a/old/NEWS.evas
+++ b/old/NEWS.evas
@@ -60,7 +60,7 @@ Improvements:
60 * Reduce cost of propagating event by limiting the object we explore by using a bouncing box. 60 * Reduce cost of propagating event by limiting the object we explore by using a bouncing box.
61 * Don't wake up prepare thread if there is nothing to prepare. 61 * Don't wake up prepare thread if there is nothing to prepare.
62 * Limit the updated region to fit in CPU cache for Pipe rendering. 62 * Limit the updated region to fit in CPU cache for Pipe rendering.
63 * Cache convertion from Evas_Map to RGBA_Map. 63 * Cache conversion from Evas_Map to RGBA_Map.
64 * evas_object_smart_members_get() now returns NULL on non-smart objects. 64 * evas_object_smart_members_get() now returns NULL on non-smart objects.
65 * Pipeline rendering use prepare stage more extensively. 65 * Pipeline rendering use prepare stage more extensively.
66 * Properly warn when user try to link object from different canvas. 66 * Properly warn when user try to link object from different canvas.
diff --git a/po/POTFILES.in b/po/POTFILES.in
index acba1b008e..d6879babc1 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -2188,10 +2188,8 @@ src/benchmarks/evas/evas_bench_saver.c
2188src/benchmarks/evas/evas_bench_loader.c 2188src/benchmarks/evas/evas_bench_loader.c
2189src/benchmarks/elementary/collection.c 2189src/benchmarks/elementary/collection.c
2190src/benchmarks/elementary/focus_widget_tree.c 2190src/benchmarks/elementary/focus_widget_tree.c
2191src/benchmarks/eina/eina_bench_stringshare_e17.c
2192src/benchmarks/eina/eina_bench_convert.c 2191src/benchmarks/eina/eina_bench_convert.c
2193src/benchmarks/eina/eina_bench_mempool.c 2192src/benchmarks/eina/eina_bench_mempool.c
2194src/benchmarks/eina/ecore_hash.c
2195src/benchmarks/eina/eina_bench_stringshare.c 2193src/benchmarks/eina/eina_bench_stringshare.c
2196src/benchmarks/eina/eina_bench_crc_hash.c 2194src/benchmarks/eina/eina_bench_crc_hash.c
2197src/benchmarks/eina/evas_object_list.c 2195src/benchmarks/eina/evas_object_list.c
@@ -2201,10 +2199,8 @@ src/benchmarks/eina/eina_bench_rectangle_pool.c
2201src/benchmarks/eina/eina_bench_quad.c 2199src/benchmarks/eina/eina_bench_quad.c
2202src/benchmarks/eina/evas_mempool.c 2200src/benchmarks/eina/evas_mempool.c
2203src/benchmarks/eina/eina_bench_array.c 2201src/benchmarks/eina/eina_bench_array.c
2204src/benchmarks/eina/ecore_strings.c
2205src/benchmarks/eina/eina_bench_sort.c 2202src/benchmarks/eina/eina_bench_sort.c
2206src/benchmarks/eina/ecore_list.c 2203src/benchmarks/eina/ecore_list.c
2207src/benchmarks/eina/evas_stringshare.c 2204src/benchmarks/eina/evas_stringshare.c
2208src/benchmarks/eina/ecore_sheap.c 2205src/benchmarks/eina/ecore_sheap.c
2209src/benchmarks/eina/eina_bench_hash.c
2210src/benchmarks/eina/evas_list.c 2206src/benchmarks/eina/evas_list.c
diff --git a/src/benchmarks/eina/Ecore_Data.h b/src/benchmarks/eina/Ecore_Data.h
index a085401242..e959eb59fc 100644
--- a/src/benchmarks/eina/Ecore_Data.h
+++ b/src/benchmarks/eina/Ecore_Data.h
@@ -299,76 +299,6 @@ EAPI int ecore_dlist_free_cb_set(Ecore_DList *dlist,
299 Ecore_Free_Cb free_func); 299 Ecore_Free_Cb free_func);
300 300
301 301
302
303/*
304 * Hash Table Implementation:
305 *
306 * Traditional hash table implementation. I had tried a list of tables
307 * approach to save on the realloc's but it ended up being much slower than
308 * the traditional approach.
309 */
310
311typedef struct _ecore_hash_node Ecore_Hash_Node;
312# define ECORE_HASH_NODE(hash) ((Ecore_Hash_Node *)hash)
313
314struct _ecore_hash_node
315{
316 Ecore_Hash_Node *next; /* Pointer to the next node in the bucket list */
317 void *key; /* The key for the data node */
318 void *value; /* The value associated with this node */
319};
320
321typedef struct _ecore_hash Ecore_Hash;
322# define ECORE_HASH(hash) ((Ecore_Hash *)hash)
323
324struct _ecore_hash
325{
326 Ecore_Hash_Node **buckets;
327 int size; /* An index into the table of primes to
328 determine size */
329 int nodes; /* The number of nodes currently in the hash */
330
331 int index; /* The current index into the bucket table */
332
333 Ecore_Compare_Cb compare; /* The function used to compare node values */
334 Ecore_Hash_Cb hash_func; /* The callback function to determine hash */
335
336 Ecore_Free_Cb free_key; /* The callback function to free key */
337 Ecore_Free_Cb free_value; /* The callback function to free value */
338};
339
340/* Create and initialize a hash */
341EAPI Ecore_Hash *ecore_hash_new(Ecore_Hash_Cb hash_func,
342 Ecore_Compare_Cb compare);
343EAPI int ecore_hash_init(Ecore_Hash *hash,
344 Ecore_Hash_Cb hash_func,
345 Ecore_Compare_Cb compare);
346
347/* Functions related to freeing the data in the hash table */
348EAPI int ecore_hash_free_key_cb_set(Ecore_Hash *hash,
349 Ecore_Free_Cb function);
350EAPI int ecore_hash_free_value_cb_set(Ecore_Hash *hash,
351 Ecore_Free_Cb function);
352EAPI void ecore_hash_destroy(Ecore_Hash *hash);
353
354EAPI int ecore_hash_count(Ecore_Hash *hash);
355EAPI int ecore_hash_for_each_node(Ecore_Hash *hash,
356 Ecore_For_Each for_each_func,
357 void *user_data);
358EAPI Ecore_List *ecore_hash_keys(Ecore_Hash *hash);
359
360/* Retrieve and store data into the hash */
361EAPI void * ecore_hash_get(Ecore_Hash *hash, const void *key);
362EAPI int ecore_hash_set(Ecore_Hash *hash, void *key, void *value);
363EAPI int ecore_hash_hash_set(Ecore_Hash *hash, Ecore_Hash *set);
364EAPI void * ecore_hash_remove(Ecore_Hash *hash, const void *key);
365EAPI void * ecore_hash_find(Ecore_Hash *hash,
366 Ecore_Compare_Cb compare,
367 const void *value);
368EAPI void ecore_hash_dump_graph(Ecore_Hash *hash);
369EAPI void ecore_hash_dump_stats(Ecore_Hash *hash);
370
371
372typedef struct _ecore_heap Ecore_Sheap; 302typedef struct _ecore_heap Ecore_Sheap;
373# define ECORE_HEAP(heap) ((Ecore_Sheap *)heap) 303# define ECORE_HEAP(heap) ((Ecore_Sheap *)heap)
374 304
@@ -415,11 +345,6 @@ struct _ecore_string
415 int references; 345 int references;
416}; 346};
417 347
418EAPI int ecore_string_init();
419EAPI int ecore_string_shutdown();
420EAPI const char *ecore_string_instance(const char *string);
421EAPI void ecore_string_release(const char *string);
422
423typedef struct _Ecore_Tree_Node Ecore_Tree_Node; 348typedef struct _Ecore_Tree_Node Ecore_Tree_Node;
424# define ECORE_TREE_NODE(object) ((Ecore_Tree_Node *)object) 349# define ECORE_TREE_NODE(object) ((Ecore_Tree_Node *)object)
425struct _Ecore_Tree_Node 350struct _Ecore_Tree_Node
diff --git a/src/benchmarks/eina/ecore_hash.c b/src/benchmarks/eina/ecore_hash.c
deleted file mode 100644
index 24ff219029..0000000000
--- a/src/benchmarks/eina/ecore_hash.c
+++ /dev/null
@@ -1,952 +0,0 @@
1#ifdef HAVE_CONFIG_H
2# include <config.h>
3#endif
4
5#include <stdlib.h>
6#include <stdio.h>
7#include <string.h>
8
9#include "Ecore_Data.h"
10
11#define PRIME_TABLE_MAX 21
12#define PRIME_MIN 17
13#define PRIME_MAX 16777213
14
15#define ECORE_HASH_CHAIN_MAX 3
16
17#define ECORE_COMPUTE_HASH(hash, key) hash->hash_func(key) % \
18 ecore_prime_table[hash->size];
19
20#define ECORE_HASH_INCREASE(hash) ((hash && ecore_prime_table[hash->size] < \
21 PRIME_MAX) ? \
22 (hash->nodes / \
23 ecore_prime_table[hash->size]) > \
24 ECORE_HASH_CHAIN_MAX : FALSE)
25#define ECORE_HASH_REDUCE(hash) ((hash && ecore_prime_table[hash->size] > \
26 PRIME_MIN) ? \
27 (double)hash->nodes / \
28 (double)ecore_prime_table[hash->size - 1] \
29 < ((double)ECORE_HASH_CHAIN_MAX * \
30 0.375) : FALSE)
31
32
33static const unsigned int ecore_prime_table[] =
34{
35 17, 31, 61, 127, 257, 509, 1021,
36 2053, 4093, 8191, 16381, 32771, 65537, 131071, 262147, 524287, 1048573,
37 2097143, 4194301, 8388617, 16777213
38};
39
40
41/* Private hash manipulation functions */
42static int _ecore_hash_node_add(Ecore_Hash *hash,
43 Ecore_Hash_Node *node);
44static Ecore_Hash_Node * _ecore_hash_node_get(Ecore_Hash *hash,
45 const void *key);
46static int _ecore_hash_increase(Ecore_Hash *hash);
47static int _ecore_hash_decrease(Ecore_Hash *hash);
48static inline int _ecore_hash_rehash(Ecore_Hash *hash,
49 Ecore_Hash_Node **old_table,
50 int old_size);
51static int _ecore_hash_bucket_destroy(Ecore_Hash_Node *list,
52 Ecore_Free_Cb keyd,
53 Ecore_Free_Cb valued);
54static inline Ecore_Hash_Node *_ecore_hash_bucket_get(Ecore_Hash *hash,
55 Ecore_Hash_Node *bucket,
56 const void *key);
57
58static Ecore_Hash_Node * _ecore_hash_node_new(void *key, void *value);
59static int _ecore_hash_node_init(Ecore_Hash_Node *node,
60 void *key,
61 void *value);
62static int _ecore_hash_node_destroy(Ecore_Hash_Node *node,
63 Ecore_Free_Cb keyd,
64 Ecore_Free_Cb valued);
65
66/**
67 * @defgroup Ecore_Data_Hash_ADT_Creation_Group Hash Creation Functions
68 *
69 * Functions that create hash tables.
70 */
71
72/**
73 * Creates and initializes a new hash
74 * @param hash_func The function for determining hash position.
75 * @param compare The function for comparing node keys.
76 * @return @c NULL on error, a new hash on success.
77 * @ingroup Ecore_Data_Hash_ADT_Creation_Group
78 */
79EAPI Ecore_Hash *
80ecore_hash_new(Ecore_Hash_Cb hash_func, Ecore_Compare_Cb compare)
81{
82 Ecore_Hash *new_hash = (Ecore_Hash *)malloc(sizeof(Ecore_Hash));
83 if (!new_hash)
84 return NULL;
85
86 if (!ecore_hash_init(new_hash, hash_func, compare))
87 {
88 FREE(new_hash);
89 return NULL;
90 }
91
92 return new_hash;
93}
94
95/**
96 * Initializes the given hash.
97 * @param hash The given hash.
98 * @param hash_func The function used for hashing node keys.
99 * @param compare The function used for comparing node keys.
100 * @return @c TRUE on success, @c FALSE on an error.
101 * @ingroup Ecore_Data_Hash_ADT_Creation_Group
102 */
103EAPI int
104ecore_hash_init(Ecore_Hash *hash,
105 Ecore_Hash_Cb hash_func,
106 Ecore_Compare_Cb compare)
107{
108 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
109
110 memset(hash, 0, sizeof(Ecore_Hash));
111
112 hash->hash_func = hash_func;
113 hash->compare = compare;
114
115 hash->buckets = (Ecore_Hash_Node **)calloc(ecore_prime_table[0],
116 sizeof(Ecore_Hash_Node *));
117
118 return TRUE;
119}
120
121/**
122 * @defgroup Ecore_Data_Hash_ADT_Destruction_Group Hash Destruction Functions
123 *
124 * Functions that destroy hash tables and their contents.
125 */
126
127/**
128 * Sets the function to destroy the keys of the given hash.
129 * @param hash The given hash.
130 * @param function The function used to free the node keys. NULL is a
131 * valid value and means that no function will be called.
132 * @return @c TRUE on success, @c FALSE on error.
133 * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
134 */
135EAPI int
136ecore_hash_free_key_cb_set(Ecore_Hash *hash, Ecore_Free_Cb function)
137{
138 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
139
140 hash->free_key = function;
141
142 return TRUE;
143}
144
145/**
146 * Sets the function to destroy the values in the given hash.
147 * @param hash The given hash.
148 * @param function The function that will free the node values. NULL is a
149 * valid value and means that no function will be called.
150 * @return @c TRUE on success, @c FALSE on error
151 * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
152 */
153EAPI int
154ecore_hash_free_value_cb_set(Ecore_Hash *hash, Ecore_Free_Cb function)
155{
156 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
157
158 hash->free_value = function;
159
160 return TRUE;
161}
162
163/**
164 * @defgroup Ecore_Data_Hash_ADT_Data_Group Hash Data Functions
165 *
166 * Functions that set, access and delete values from the hash tables.
167 */
168
169/**
170 * Sets a key-value pair in the given hash table.
171 * @param hash The given hash table.
172 * @param key The key.
173 * @param value The value.
174 * @return @c TRUE if successful, @c FALSE if not.
175 * @ingroup Ecore_Data_Hash_ADT_Data_Group
176 */
177EAPI int
178ecore_hash_set(Ecore_Hash *hash, void *key, void *value)
179{
180 int ret = FALSE;
181 Ecore_Hash_Node *node;
182
183 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
184
185 node = _ecore_hash_node_get(hash, key);
186 if (node)
187 {
188 if (hash->free_key)
189 hash->free_key(key);
190
191 if (node->value && hash->free_value)
192 hash->free_value(node->value);
193
194 node->value = value;
195 ret = TRUE;
196 }
197 else
198 {
199 node = _ecore_hash_node_new(key, value);
200 if (node)
201 ret = _ecore_hash_node_add(hash, node);
202 }
203
204 return ret;
205}
206
207/**
208 * Sets all key-value pairs from set in the given hash table.
209 * @param hash The given hash table.
210 * @param set The hash table to import.
211 * @return @c TRUE if successful, @c FALSE if not.
212 * @ingroup Ecore_Data_Hash_ADT_Data_Group
213 */
214EAPI int
215ecore_hash_hash_set(Ecore_Hash *hash, Ecore_Hash *set)
216{
217 unsigned int i;
218 Ecore_Hash_Node *node, *old;
219
220 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
221 CHECK_PARAM_POINTER_RETURN("set", set, FALSE);
222
223 for (i = 0; i < ecore_prime_table[set->size]; i++)
224 {
225 /* Hash into a new list to avoid loops of rehashing the same nodes */
226 while ((old = set->buckets[i]))
227 {
228 set->buckets[i] = old->next;
229 old->next = NULL;
230 node = _ecore_hash_node_get(hash, old->key);
231 if (node)
232 {
233 /* This key already exists. Delete the old and add the new
234 * value */
235 if (hash->free_key)
236 hash->free_key(node->key);
237
238 if (hash->free_value)
239 hash->free_value(node->value);
240
241 node->key = old->key;
242 node->value = old->value;
243 free(old);
244 }
245 else
246 _ecore_hash_node_add(hash, old);
247 }
248 }
249 FREE(set->buckets);
250 ecore_hash_init(set, set->hash_func, set->compare);
251 return TRUE;
252}
253
254/**
255 * @brief Frees the hash table and the data contained inside it.
256 * @param hash: The hash table to destroy.
257 * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
258 */
259EAPI void
260ecore_hash_destroy(Ecore_Hash *hash)
261{
262 unsigned int i = 0;
263
264 CHECK_PARAM_POINTER("hash", hash);
265
266 if (hash->buckets)
267 {
268 while (i < ecore_prime_table[hash->size])
269 {
270 if (hash->buckets[i])
271 {
272 Ecore_Hash_Node *bucket;
273
274 /*
275 * Remove the bucket list to avoid possible recursion
276 * on the free callbacks.
277 */
278 bucket = hash->buckets[i];
279 hash->buckets[i] = NULL;
280 _ecore_hash_bucket_destroy(bucket,
281 hash->free_key,
282 hash->free_value);
283 }
284
285 i++;
286 }
287
288 FREE(hash->buckets);
289 }
290
291 FREE(hash);
292
293 return;
294}
295
296/**
297 * @defgroup Ecore_Data_Hash_ADT_Traverse_Group Hash Traverse Functions
298 *
299 * Functions that iterate through hash tables.
300 */
301
302/**
303 * Counts the number of nodes in a hash table.
304 * @param hash The hash table to count current nodes.
305 * @return The number of nodes in the hash.
306 * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
307 */
308EAPI int
309ecore_hash_count(Ecore_Hash *hash)
310{
311 CHECK_PARAM_POINTER_RETURN("hash", hash, 0);
312
313 return hash->nodes;
314}
315
316/**
317 * Runs the @p for_each_func function on each entry in the given hash.
318 * @param hash The given hash.
319 * @param for_each_func The function that each entry is passed to.
320 * @param user_data a pointer passed to calls of for_each_func
321 * @return TRUE on success, FALSE otherwise.
322 * @ingroup Ecore_Data_Hash_ADT_Traverse_Group
323 */
324EAPI int
325ecore_hash_for_each_node(Ecore_Hash *hash,
326 Ecore_For_Each for_each_func,
327 void *user_data)
328{
329 unsigned int i = 0;
330
331 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
332 CHECK_PARAM_POINTER_RETURN("for_each_func", for_each_func, FALSE);
333
334 while (i < ecore_prime_table[hash->size])
335 {
336 if (hash->buckets[i])
337 {
338 Ecore_Hash_Node *node;
339
340 for (node = hash->buckets[i]; node; node = node->next)
341 {
342 for_each_func(node, user_data);
343 }
344 }
345
346 i++;
347 }
348
349 return TRUE;
350}
351
352/**
353 * Retrieves an ecore_list of all keys in the given hash.
354 * @param hash The given hash.
355 * @return new ecore_list on success, NULL otherwise
356 * @ingroup Ecore_Data_Hash_ADT_Traverse_Group
357 */
358EAPI Ecore_List *
359ecore_hash_keys(Ecore_Hash *hash)
360{
361 unsigned int i = 0;
362 Ecore_List *keys;
363
364 CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
365
366 keys = ecore_list_new();
367 while (i < ecore_prime_table[hash->size])
368 {
369 if (hash->buckets[i])
370 {
371 Ecore_Hash_Node *node;
372
373 for (node = hash->buckets[i]; node; node = node->next)
374 {
375 ecore_list_append(keys, node->key);
376 }
377 }
378
379 i++;
380 }
381 ecore_list_first_goto(keys);
382
383 return keys;
384}
385
386/**
387 * Prints the distribution of the given hash table for graphing.
388 * @param hash The given hash table.
389 */
390EAPI void
391ecore_hash_dump_graph(Ecore_Hash *hash)
392{
393 unsigned int i;
394
395 for (i = 0; i < ecore_prime_table[hash->size]; i++)
396 if (hash->buckets[i])
397 {
398 unsigned int n = 0;
399 Ecore_Hash_Node *node;
400 for (node = hash->buckets[i]; node; node = node->next)
401 n++;
402 printf("%u\t%u", i, n);
403 }
404 else
405 printf("%u\t0", i);
406
407}
408
409/**
410 * Prints the distribution of the given hash table for graphing.
411 * @param hash The given hash table.
412 */
413EAPI void
414ecore_hash_dump_stats(Ecore_Hash *hash)
415{
416 unsigned int i;
417 double variance, sum_n_2 = 0, sum_n = 0;
418
419 if (!hash->size) return;
420 for (i = 0; i < ecore_prime_table[hash->size]; i++)
421 {
422 if (hash->buckets[i])
423 {
424 int n = 0;
425 Ecore_Hash_Node *node;
426 for (node = hash->buckets[i]; node; node = node->next)
427 n++;
428 sum_n_2 += ((double)n * (double)n);
429 sum_n += (double)n;
430 }
431 }
432 if (i)
433 {
434 variance = (sum_n_2 - ((sum_n * sum_n) / (double)i)) / (double)i;
435 printf("Average length: %f\n\tvariance^2: %f", (sum_n / (double)i),
436 variance);
437 }
438}
439
440static int
441_ecore_hash_bucket_destroy(Ecore_Hash_Node *list,
442 Ecore_Free_Cb keyd,
443 Ecore_Free_Cb valued)
444{
445 Ecore_Hash_Node *node;
446
447 CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
448
449 for (node = list; node; node = list)
450 {
451 list = list->next;
452 _ecore_hash_node_destroy(node, keyd, valued);
453 }
454
455 return TRUE;
456}
457
458/*
459 * @brief Add the node to the hash table
460 * @param hash: the hash table to add the key
461 * @param node: the node to add to the hash table
462 * @return Returns FALSE on error, TRUE on success
463 */
464static int
465_ecore_hash_node_add(Ecore_Hash *hash, Ecore_Hash_Node *node)
466{
467 size_t hash_val;
468
469 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
470 CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
471
472 /* Check to see if the hash needs to be resized */
473 if (ECORE_HASH_INCREASE(hash))
474 _ecore_hash_increase(hash);
475
476 /* Compute the position in the table */
477 if (!hash->hash_func)
478 hash_val = (size_t)node->key % ecore_prime_table[hash->size];
479 else
480 hash_val = ECORE_COMPUTE_HASH(hash, node->key);
481
482 /* Prepend the node to the list at the index position */
483 node->next = hash->buckets[hash_val];
484 hash->buckets[hash_val] = node;
485 hash->nodes++;
486
487 return TRUE;
488}
489
490/**
491 * Retrieves the value associated with the given key from the given hash
492 * table.
493 * @param hash The given hash table.
494 * @param key The key to search for.
495 * @return The value corresponding to key on success, @c NULL otherwise.
496 * @ingroup Ecore_Data_Hash_ADT_Data_Group
497 */
498EAPI void *
499ecore_hash_get(Ecore_Hash *hash, const void *key)
500{
501 void *data;
502 Ecore_Hash_Node *node;
503
504 CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
505
506 node = _ecore_hash_node_get(hash, key);
507 if (!node)
508 return NULL;
509
510 data = node->value;
511
512 return data;
513}
514
515/**
516 * Removes the value associated with the given key in the given hash
517 * table.
518 * @param hash The given hash table.
519 * @param key The key to search for.
520 * @return The value corresponding to the key on success. @c NULL is
521 * returned if there is an error.
522 * @ingroup Ecore_Data_Hash_ADT_Data_Group
523 */
524EAPI void *
525ecore_hash_remove(Ecore_Hash *hash, const void *key)
526{
527 Ecore_Hash_Node *node = NULL;
528 Ecore_Hash_Node *list;
529 size_t hash_val;
530 void *ret = NULL;
531
532 CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
533
534 /* Compute the position in the table */
535 if (!hash->hash_func)
536 hash_val = (size_t)key % ecore_prime_table[hash->size];
537 else
538 hash_val = ECORE_COMPUTE_HASH(hash, key);
539
540 /*
541 * If their is a list that could possibly hold the key/value pair
542 * traverse it and remove the hash node.
543 */
544 if (hash->buckets[hash_val])
545 {
546 list = hash->buckets[hash_val];
547
548 /*
549 * Traverse the list to find the specified key
550 */
551 node = list;
552 if (hash->compare)
553 while ((node) && (hash->compare(node->key, key) != 0))
554 {
555 list = node;
556 node = node->next;
557 }
558 else
559 while ((node) && (node->key != key))
560 {
561 list = node;
562 node = node->next;
563 }
564
565 /*
566 * Remove the node with the matching key and free it's memory
567 */
568 if (node)
569 {
570 if (list == node)
571 hash->buckets[hash_val] = node->next;
572 else
573 list->next = node->next;
574
575 ret = node->value;
576 node->value = NULL;
577 _ecore_hash_node_destroy(node, hash->free_key, NULL);
578 hash->nodes--;
579 }
580 }
581
582 if (ECORE_HASH_REDUCE(hash))
583 _ecore_hash_decrease(hash);
584
585 return ret;
586}
587
588/**
589 * Retrieves the first value that matches
590 * table.
591 * @param hash The given hash table.
592 * @param key The key to search for.
593 * @return The value corresponding to key on success, @c NULL otherwise.
594 * @ingroup Ecore_Data_Hash_ADT_Data_Group
595 */
596EAPI void *
597ecore_hash_find(Ecore_Hash *hash, Ecore_Compare_Cb compare, const void *value)
598{
599 unsigned int i = 0;
600
601 CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
602 CHECK_PARAM_POINTER_RETURN("compare", compare, NULL);
603 CHECK_PARAM_POINTER_RETURN("value", value, NULL);
604
605 while (i < ecore_prime_table[hash->size])
606 {
607 if (hash->buckets[i])
608 {
609 Ecore_Hash_Node *node;
610
611 for (node = hash->buckets[i]; node; node = node->next)
612 {
613 if (!compare(node->value, value))
614 return node->value;
615 }
616 }
617
618 i++;
619 }
620
621 return NULL;
622}
623
624/*
625 * @brief Retrieve the node associated with key
626 * @param hash: the hash table to search for the key
627 * @param key: the key to search for in the hash table
628 * @return Returns NULL on error, node corresponding to key on success
629 */
630static Ecore_Hash_Node *
631_ecore_hash_node_get(Ecore_Hash *hash, const void *key)
632{
633 size_t hash_val;
634 Ecore_Hash_Node *node = NULL;
635
636 CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
637
638 if (!hash->buckets)
639 return NULL;
640
641 /* Compute the position in the table */
642 if (!hash->hash_func)
643 hash_val = (size_t)key % ecore_prime_table[hash->size];
644 else
645 hash_val = ECORE_COMPUTE_HASH(hash, key);
646
647 /* Grab the bucket at the specified position */
648 if (hash->buckets[hash_val])
649 {
650 node = _ecore_hash_bucket_get(hash, hash->buckets[hash_val], key);
651 /*
652 * Move matched node to the front of the list as it's likely
653 * to be searched for again soon.
654 */
655 if (node && node != hash->buckets[hash_val])
656 {
657 node->next = hash->buckets[hash_val];
658 hash->buckets[hash_val] = node;
659 }
660 }
661
662 return node;
663}
664
665/*
666 * @brief Search the hash bucket for a specified key
667 * @param hash: the hash table to retrieve the comparison function
668 * @param bucket: the list to search for the key
669 * @param key: the key to search for in the list
670 * @return Returns NULL on error or not found, the found node on success
671 */
672static inline Ecore_Hash_Node *
673_ecore_hash_bucket_get(Ecore_Hash *hash,
674 Ecore_Hash_Node *bucket,
675 const void *key)
676{
677 Ecore_Hash_Node *prev = NULL;
678 Ecore_Hash_Node *node = NULL;
679
680 /*
681 * Traverse the list to find the desired node, if the node is in the
682 * list, then return the node.
683 */
684 if (hash->compare)
685 for (node = bucket; node; node = node->next)
686 {
687 if (hash->compare(node->key, key) == 0)
688 break;
689
690 prev = node;
691 }
692 else
693 for (node = bucket; node; node = node->next)
694 {
695 if (node->key == key)
696 break;
697
698 prev = node;
699 }
700
701 /*
702 * Remove node from the list to replace it at the beginning.
703 */
704 if (node && prev)
705 {
706 prev->next = node->next;
707 node->next = NULL;
708 }
709
710 return node;
711}
712
713/*
714 * @brief Increase the size of the hash table by approx. 2 * current size
715 * @param hash: the hash table to increase the size of
716 * @return Returns TRUE on success, FALSE on error
717 */
718static int
719_ecore_hash_increase(Ecore_Hash *hash)
720{
721 void *old;
722
723 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
724
725 /* Max size reached so return FALSE */
726 if ((ecore_prime_table[hash->size] == PRIME_MAX) ||
727 (hash->size == PRIME_TABLE_MAX))
728 return FALSE;
729
730 /*
731 * Increase the size of the hash and save a pointer to the old data
732 */
733 hash->size++;
734 old = hash->buckets;
735
736 /*
737 * Allocate a new bucket area, of the new larger size
738 */
739 hash->buckets =
740 calloc(ecore_prime_table[hash->size], sizeof(Ecore_Hash_Node *));
741
742 /*
743 * Make sure the allocation succeeded, if not replace the old data and
744 * return a failure.
745 */
746 if (!hash->buckets)
747 {
748 hash->buckets = old;
749 hash->size--;
750 return FALSE;
751 }
752
753 hash->nodes = 0;
754
755 /*
756 * Now move all of the old data into the new bucket area
757 */
758 if (_ecore_hash_rehash(hash, old, hash->size - 1))
759 {
760 FREE(old);
761 return TRUE;
762 }
763
764 /*
765 * Free the old buckets regardless of success.
766 */
767 FREE(old);
768
769 return FALSE;
770}
771
772/*
773 * @brief Decrease the size of the hash table by < 1/2 * current size
774 * @param hash: the hash table to decrease the size of
775 * @return Returns TRUE on success, FALSE on error
776 */
777static int
778_ecore_hash_decrease(Ecore_Hash *hash)
779{
780 Ecore_Hash_Node **old;
781
782 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
783
784 if (ecore_prime_table[hash->size] == PRIME_MIN)
785 return FALSE;
786
787 /*
788 * Decrease the hash size and store a pointer to the old data
789 */
790 hash->size--;
791 old = hash->buckets;
792
793 /*
794 * Allocate a new area to store the data
795 */
796 hash->buckets = (Ecore_Hash_Node **)calloc(ecore_prime_table[hash->size],
797 sizeof(Ecore_Hash_Node *));
798
799 /*
800 * Make sure allocation succeeded otherwise rreturn to the previous
801 * state
802 */
803 if (!hash->buckets)
804 {
805 hash->buckets = old;
806 hash->size++;
807 return FALSE;
808 }
809
810 hash->nodes = 0;
811
812 if (_ecore_hash_rehash(hash, old, hash->size + 1))
813 {
814 FREE(old);
815 return TRUE;
816 }
817
818 return FALSE;
819}
820
821/*
822 * @brief Rehash the nodes of a table into the hash table
823 * @param hash: the hash to place the nodes of the table
824 * @param table: the table to remove the nodes from and place in hash
825 * @return Returns TRUE on success, FALSE on error
826 */
827static inline int
828_ecore_hash_rehash(Ecore_Hash *hash, Ecore_Hash_Node **old_table, int old_size)
829{
830 unsigned int i;
831 Ecore_Hash_Node *old;
832
833 CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
834 CHECK_PARAM_POINTER_RETURN("old_table", old_table, FALSE);
835
836 for (i = 0; i < ecore_prime_table[old_size]; i++)
837 {
838 /* Hash into a new list to avoid loops of rehashing the same nodes */
839 while ((old = old_table[i]))
840 {
841 old_table[i] = old->next;
842 old->next = NULL;
843 _ecore_hash_node_add(hash, old);
844 }
845 }
846
847 return TRUE;
848}
849
850/*
851 * @brief Create a new hash node for key and value storage
852 * @param key: the key for this node
853 * @param value: the value that the key references
854 * @return Returns NULL on error, a new hash node on success
855 */
856static Ecore_Hash_Node *
857_ecore_hash_node_new(void *key, void *value)
858{
859 Ecore_Hash_Node *node;
860
861 node = (Ecore_Hash_Node *)malloc(sizeof(Ecore_Hash_Node));
862 if (!node)
863 return NULL;
864
865 if (!_ecore_hash_node_init(node, key, value))
866 {
867 FREE(node);
868 return NULL;
869 }
870
871 return node;
872}
873
874/*
875 * @brief Initialize a hash node to some sane default values
876 * @param node: the node to set the values
877 * @param key: the key to reference this node
878 * @param value: the value that key refers to
879 * @return Returns TRUE on success, FALSE on error
880 */
881static int
882_ecore_hash_node_init(Ecore_Hash_Node *node, void *key, void *value)
883{
884 CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
885
886 node->key = key;
887 node->value = value;
888
889 return TRUE;
890}
891
892/*
893 * @brief Destroy a node and call the specified callbacks to free data
894 * @param node: the node to be destroyed
895 * @param keyd: the function to free the key
896 * @param valued: the function to free the value
897 * @return Returns TRUE on success, FALSE on error
898 */
899static int
900_ecore_hash_node_destroy(Ecore_Hash_Node *node,
901 Ecore_Free_Cb keyd,
902 Ecore_Free_Cb valued)
903{
904 CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
905
906 if (keyd)
907 keyd(node->key);
908
909 if (valued)
910 valued(node->value);
911
912 FREE(node);
913
914 return TRUE;
915}
916
917int
918ecore_str_compare(const void *key1, const void *key2)
919{
920 const char *k1, *k2;
921
922 if (!key1 || !key2)
923 return ecore_direct_compare(key1, key2);
924 else if (key1 == key2)
925 return 0;
926
927 k1 = key1;
928 k2 = key2;
929
930 return strcmp(k1, k2);
931}
932
933unsigned int
934ecore_str_hash(const void *key)
935{
936 int i;
937 unsigned int mask;
938 unsigned int value = 0;
939 const char *k = key;
940
941 if (!k)
942 return 0;
943
944 mask = (sizeof(unsigned int) * 8) - 1;
945
946 for (i = 0; k[i] != '\0'; i++)
947 {
948 value ^= ((unsigned int)k[i] << ((i * 5) & mask));
949 }
950
951 return value;
952}
diff --git a/src/benchmarks/eina/ecore_strings.c b/src/benchmarks/eina/ecore_strings.c
deleted file mode 100644
index e56235226c..0000000000
--- a/src/benchmarks/eina/ecore_strings.c
+++ /dev/null
@@ -1,164 +0,0 @@
1#include <stdlib.h>
2#include <string.h>
3
4#include "Ecore_Data.h"
5
6static void ecore_string_free_cb(void *data);
7
8static Ecore_Hash *ecore_strings = NULL;
9static int ecore_string_init_count = 0;
10
11/**
12 * @defgroup Ecore_String_Group String Instance Functions
13 *
14 * These functions allow you to store one copy of a string, and use it
15 * throughout your program.
16 *
17 * This is a method to reduce the number of duplicated strings kept in
18 * memory. It's pretty common for the same strings to be dynamically
19 * allocated repeatedly between applications and libraries, especially in
20 * circumstances where you could have multiple copies of a structure that
21 * allocates the string. So rather than duplicating and freeing these
22 * strings, you request a read-only pointer to an existing string and
23 * only incur the overhead of a hash lookup.
24 *
25 * It sounds like micro-optimizing, but profiling has shown this can have
26 * a significant impact as you scale the number of copies up. It improves
27 * string creation/destruction speed, reduces memory use and decreases
28 * memory fragmentation, so a win all-around.
29 */
30
31/**
32 * Initialize the ecore string internal structure.
33 * @return Zero on failure, non-zero on successful initialization.
34 */
35EAPI int
36ecore_string_init(void)
37{
38 /*
39 * No strings have been loaded at this point, so create the hash
40 * table for storing string info for later.
41 */
42 if (!ecore_string_init_count)
43 {
44 ecore_strings = ecore_hash_new(ecore_str_hash, ecore_str_compare);
45 if (!ecore_strings)
46 return 0;
47
48 ecore_hash_free_value_cb_set(ecore_strings, ecore_string_free_cb);
49 }
50
51 ecore_string_init_count++;
52
53 return 1;
54}
55
56/**
57 * Retrieves an instance of a string for use in an ecore program.
58 * @param string The string to retrieve an instance of.
59 * @return A pointer to an instance of the string on success.
60 * @c NULL on failure.
61 * @ingroup Ecore_String_Group
62 */
63EAPI const char *
64ecore_string_instance(const char *string)
65{
66 Ecore_String *str;
67
68 CHECK_PARAM_POINTER_RETURN("string", string, NULL);
69
70 /*
71 * Check for a previous instance of the string, if not found, create
72 * it.
73 */
74 str = ecore_hash_get(ecore_strings, string);
75 if (!str)
76 {
77 int length;
78
79 /*
80 * Allocate and initialize a new string reference.
81 */
82 length = strlen(string) + 1;
83
84 str =
85 (Ecore_String *)malloc(sizeof(Ecore_String) + length * sizeof(char));
86 if (!str) return NULL;
87
88 str->string = (char *)(str + 1);
89 str->references = 0;
90
91 memcpy(str->string, string, length);
92
93 ecore_hash_set(ecore_strings, str->string, str);
94 }
95
96 str->references++;
97
98 return str->string;
99}
100
101/**
102 * Notes that the given string has lost an instance.
103 *
104 * It will free the string if no other instances are left.
105 *
106 * @param string The given string.
107 * @ingroup Ecore_String_Group
108 */
109EAPI void
110ecore_string_release(const char *string)
111{
112 Ecore_String *str;
113
114 CHECK_PARAM_POINTER("string", string);
115
116 str = ecore_hash_get(ecore_strings, (char *)string);
117 if (!str)
118 return;
119
120 str->references--;
121 if (str->references < 1)
122 {
123 ecore_hash_remove(ecore_strings, (char *)string);
124 FREE(str);
125 }
126}
127
128EAPI void
129ecore_string_hash_dump_graph(void)
130{
131 ecore_hash_dump_graph(ecore_strings);
132}
133
134EAPI void
135ecore_string_hash_dump_stats(void)
136{
137 ecore_hash_dump_stats(ecore_strings);
138}
139
140/**
141 * Shutdown the ecore string internal structures
142 * @return 0 when the module is completely shut down, 1 or
143 * greater otherwise.
144 */
145EAPI int
146ecore_string_shutdown(void)
147{
148 --ecore_string_init_count;
149 if (!ecore_string_init_count)
150 {
151 ecore_hash_destroy(ecore_strings);
152 ecore_strings = NULL;
153 }
154 return ecore_string_init_count;
155}
156
157static void
158ecore_string_free_cb(void *data)
159{
160 Ecore_String *str;
161
162 str = data;
163 FREE(str);
164}
diff --git a/src/benchmarks/eina/eina_bench.c b/src/benchmarks/eina/eina_bench.c
index 1ca7e51c18..5d758485f6 100644
--- a/src/benchmarks/eina/eina_bench.c
+++ b/src/benchmarks/eina/eina_bench.c
@@ -36,7 +36,6 @@ struct _Eina_Benchmark_Case
36}; 36};
37 37
38static const Eina_Benchmark_Case etc[] = { 38static const Eina_Benchmark_Case etc[] = {
39 { "Hash", eina_bench_hash, EINA_TRUE },
40 { "Hash_Short_Key", eina_bench_crc_hash_short, EINA_TRUE }, 39 { "Hash_Short_Key", eina_bench_crc_hash_short, EINA_TRUE },
41 { "Hash_Medium_Key", eina_bench_crc_hash_medium, EINA_TRUE }, 40 { "Hash_Medium_Key", eina_bench_crc_hash_medium, EINA_TRUE },
42 { "Hash_Large_key", eina_bench_crc_hash_large, EINA_TRUE }, 41 { "Hash_Large_key", eina_bench_crc_hash_large, EINA_TRUE },
@@ -129,8 +128,6 @@ main(int argc, char **argv)
129 break; 128 break;
130 } 129 }
131 130
132 eina_bench_e17();
133
134 eina_shutdown(); 131 eina_shutdown();
135 132
136 _mempool_shutdown(); 133 _mempool_shutdown();
diff --git a/src/benchmarks/eina/eina_bench.h b/src/benchmarks/eina/eina_bench.h
index 747ac6f39f..053bbba793 100644
--- a/src/benchmarks/eina/eina_bench.h
+++ b/src/benchmarks/eina/eina_bench.h
@@ -36,7 +36,4 @@ void eina_bench_rectangle_pool(Eina_Benchmark *bench);
36void eina_bench_quadtree(Eina_Benchmark *bench); 36void eina_bench_quadtree(Eina_Benchmark *bench);
37void eina_bench_promise(Eina_Benchmark *bench); 37void eina_bench_promise(Eina_Benchmark *bench);
38 38
39/* Specific benchmark. */
40void eina_bench_e17(void);
41
42#endif 39#endif
diff --git a/src/benchmarks/eina/eina_bench_hash.c b/src/benchmarks/eina/eina_bench_hash.c
deleted file mode 100644
index 96748183e0..0000000000
--- a/src/benchmarks/eina/eina_bench_hash.c
+++ /dev/null
@@ -1,551 +0,0 @@
1/* EINA - EFL data type library
2 * Copyright (C) 2008 Cedric Bail
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library;
16 * if not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifdef HAVE_CONFIG_H
20# include "config.h"
21#endif
22
23#include <stdlib.h>
24#include <stdio.h>
25#include <string.h>
26#include <time.h>
27
28#ifdef EINA_BENCH_HAVE_GLIB
29# include <glib.h>
30#endif
31
32#include "Evas_Data.h"
33#include "Ecore_Data.h"
34
35#include "eina_hash.h"
36#include "eina_array.h"
37#include "eina_bench.h"
38#include "eina_rbtree.h"
39#include "eina_convert.h"
40
41#ifdef CITYHASH_BENCH
42// Hash function for a byte array.
43uint64_t CityHash64(const char *buf, size_t len);
44
45static int
46city_hash(const char *buf, int len)
47{
48 return (int)CityHash64(buf, len);
49}
50
51static unsigned int
52_eina_string_key_length(const char *key)
53{
54 if (!key)
55 return 0;
56
57 return (int)strlen(key) + 1;
58}
59
60static int
61_eina_string_key_cmp(const char *key1, EINA_UNUSED int key1_length,
62 const char *key2, EINA_UNUSED int key2_length)
63{
64 return strcmp(key1, key2);
65}
66#endif
67
68
69typedef struct _Eina_Bench_Rbtree Eina_Bench_Rbtree;
70struct _Eina_Bench_Rbtree
71{
72 Eina_Rbtree node;
73 char key[10];
74 int value;
75};
76
77static Eina_Rbtree_Direction
78_eina_bench_rbtree_cmp(const Eina_Bench_Rbtree *left,
79 const Eina_Bench_Rbtree *right,
80 EINA_UNUSED void *data)
81{
82 if (!left)
83 return EINA_RBTREE_RIGHT;
84
85 if (!right)
86 return EINA_RBTREE_LEFT;
87
88 return strcmp(left->key,
89 right->key) < 0 ? EINA_RBTREE_LEFT : EINA_RBTREE_RIGHT;
90}
91
92static inline int
93_eina_bench_rbtree_key(const Eina_Bench_Rbtree *node,
94 const char *key,
95 int length,
96 EINA_UNUSED void *data)
97{
98 return strncmp(node->key, key, length);
99}
100
101static void
102_eina_bench_rbtree_free(Eina_Rbtree *node, EINA_UNUSED void *data)
103{
104 free(node);
105}
106
107static void
108eina_bench_lookup_rbtree(int request)
109{
110 Eina_Rbtree *root = NULL;
111 int i;
112 int j;
113
114 for (i = 0; i < request; ++i)
115 {
116 Eina_Bench_Rbtree *tmp;
117
118 tmp = malloc(sizeof (Eina_Bench_Rbtree));
119 if (!tmp)
120 continue;
121
122 tmp->value = i;
123 eina_convert_itoa(i, tmp->key);
124
125 root = eina_rbtree_inline_insert(root,
126 &tmp->node,
127 EINA_RBTREE_CMP_NODE_CB(
128 _eina_bench_rbtree_cmp),
129 NULL);
130 }
131
132 srand(time(NULL));
133
134 for (j = 0; j < 200; ++j)
135 for (i = 0; i < request; ++i)
136 {
137 Eina_Rbtree *tmp;
138 char tmp_key[10];
139
140 eina_convert_itoa(rand() % request, tmp_key);
141
142 tmp = eina_rbtree_inline_lookup(root,
143 tmp_key,
144 10,
145 EINA_RBTREE_CMP_KEY_CB(
146 _eina_bench_rbtree_key),
147 NULL);
148 /* Suppress warnings as we really don't want to do anything. */
149 (void) tmp;
150 }
151
152 eina_rbtree_delete(root, EINA_RBTREE_FREE_CB(_eina_bench_rbtree_free), NULL);
153}
154
155static void
156eina_bench_lookup_murmur(int request)
157{
158 Eina_Hash *hash = NULL;
159 int *tmp_val;
160 unsigned int i;
161 unsigned int j;
162
163 hash = eina_hash_new(EINA_KEY_LENGTH(_eina_string_key_length),
164 EINA_KEY_CMP(_eina_string_key_cmp),
165 EINA_KEY_HASH(eina_hash_murmur3),
166 free,
167 8);
168
169 for (i = 0; i < (unsigned int)request; ++i)
170 {
171 char tmp_key[10];
172
173 tmp_val = malloc(sizeof (int));
174
175 if (!tmp_val)
176 continue;
177
178 eina_convert_itoa(i, tmp_key);
179 *tmp_val = i;
180
181 eina_hash_add(hash, tmp_key, tmp_val);
182 }
183
184 srand(time(NULL));
185
186 for (j = 0; j < 200; ++j)
187 for (i = 0; i < (unsigned int)request; ++i)
188 {
189 char tmp_key[10];
190
191 eina_convert_itoa(rand() % request, tmp_key);
192 tmp_val = eina_hash_find(hash, tmp_key);
193 }
194
195 eina_hash_free(hash);
196}
197
198#ifdef CITYHASH_BENCH
199static void
200eina_bench_lookup_cityhash(int request)
201{
202 Eina_Hash *hash = NULL;
203 int *tmp_val;
204 unsigned int i;
205 unsigned int j;
206
207 hash = eina_hash_new(EINA_KEY_LENGTH(_eina_string_key_length),
208 EINA_KEY_CMP(_eina_string_key_cmp),
209 EINA_KEY_HASH(city_hash),
210 free,
211 8);
212
213 for (i = 0; i < (unsigned int)request; ++i)
214 {
215 char tmp_key[10];
216
217 tmp_val = malloc(sizeof (int));
218
219 if (!tmp_val)
220 continue;
221
222 eina_convert_itoa(i, tmp_key);
223 *tmp_val = i;
224
225 eina_hash_add(hash, tmp_key, tmp_val);
226 }
227
228 srand(time(NULL));
229
230 for (j = 0; j < 200; ++j)
231 for (i = 0; i < (unsigned int)request; ++i)
232 {
233 char tmp_key[10];
234
235 eina_convert_itoa(rand() % request, tmp_key);
236 tmp_val = eina_hash_find(hash, tmp_key);
237 }
238
239 eina_hash_free(hash);
240}
241#endif
242
243static void
244eina_bench_lookup_superfast(int request)
245{
246 Eina_Hash *hash = NULL;
247 int *tmp_val;
248 unsigned int i;
249 unsigned int j;
250
251 hash = eina_hash_string_superfast_new(free);
252
253 for (i = 0; i < (unsigned int)request; ++i)
254 {
255 char tmp_key[10];
256
257 tmp_val = malloc(sizeof (int));
258
259 if (!tmp_val)
260 continue;
261
262 eina_convert_itoa(i, tmp_key);
263 *tmp_val = i;
264
265 eina_hash_add(hash, tmp_key, tmp_val);
266 }
267
268 srand(time(NULL));
269
270 for (j = 0; j < 200; ++j)
271 for (i = 0; i < (unsigned int)request; ++i)
272 {
273 char tmp_key[10];
274
275 eina_convert_itoa(rand() % request, tmp_key);
276 tmp_val = eina_hash_find(hash, tmp_key);
277 }
278
279 eina_hash_free(hash);
280}
281
282static void
283eina_bench_lookup_djb2(int request)
284{
285 Eina_Hash *hash = NULL;
286 int *tmp_val;
287 unsigned int i;
288 unsigned int j;
289
290 hash = eina_hash_string_djb2_new(free);
291
292 for (i = 0; i < (unsigned int)request; ++i)
293 {
294 char tmp_key[10];
295
296 tmp_val = malloc(sizeof (int));
297
298 if (!tmp_val)
299 continue;
300
301 eina_convert_itoa(i, tmp_key);
302 *tmp_val = i;
303
304 eina_hash_add(hash, tmp_key, tmp_val);
305 }
306
307 srand(time(NULL));
308
309 for (j = 0; j < 200; ++j)
310 for (i = 0; i < (unsigned int)request; ++i)
311 {
312 char tmp_key[10];
313
314 eina_convert_itoa(rand() % request, tmp_key);
315
316 tmp_val = eina_hash_find(hash, tmp_key);
317 }
318
319 eina_hash_free(hash);
320}
321
322typedef struct _Eina_Bench_DJB2 Eina_Bench_DJB2;
323struct _Eina_Bench_DJB2
324{
325 char *key;
326 int value;
327};
328
329static void
330eina_bench_lookup_djb2_inline(int request)
331{
332 Eina_Hash *hash = NULL;
333 Eina_Bench_DJB2 *elm;
334 unsigned int i;
335 unsigned int j;
336
337 hash = eina_hash_string_djb2_new(free);
338
339 for (i = 0; i < (unsigned int)request; ++i)
340 {
341 int length;
342
343 elm = malloc(sizeof (Eina_Bench_DJB2) + 10);
344 if (!elm)
345 continue;
346
347 elm->key = (char *)(elm + 1);
348
349 length = eina_convert_itoa(i, elm->key) + 1;
350 elm->value = i;
351
352 eina_hash_direct_add_by_hash(hash, elm->key, length,
353 eina_hash_djb2(elm->key, length), elm);
354 }
355
356 srand(time(NULL));
357
358 for (j = 0; j < 200; ++j)
359 for (i = 0; i < (unsigned int)request; ++i)
360 {
361 char tmp_key[10];
362 int length = eina_convert_itoa(rand() % request, tmp_key) + 1;
363
364 elm =
365 eina_hash_find_by_hash(hash, tmp_key, length,
366 eina_hash_djb2(tmp_key, length));
367 }
368
369 eina_hash_free(hash);
370}
371
372#ifdef EINA_BENCH_HAVE_GLIB
373typedef struct _Eina_Bench_Glib Eina_Bench_Glib;
374struct _Eina_Bench_Glib
375{
376 char *key;
377 int value;
378};
379
380static void
381eina_bench_lookup_ghash(int request)
382{
383 Eina_Bench_Glib *elm;
384 GHashTable *hash;
385 unsigned int i;
386 unsigned int j;
387
388 hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, free);
389
390 for (i = 0; i < (unsigned int)request; ++i)
391 {
392 elm = malloc(sizeof (Eina_Bench_Glib) + 10);
393 if (!elm)
394 continue;
395
396 elm->key = (char *)(elm + 1);
397
398 eina_convert_itoa(i, elm->key);
399 elm->value = i;
400
401 g_hash_table_insert(hash, elm->key, elm);
402 }
403
404 srand(time(NULL));
405
406 for (j = 0; j < 200; ++j)
407 for (i = 0; i < (unsigned int)request; ++i)
408 {
409 char tmp_key[10];
410
411 eina_convert_itoa(rand() % request, tmp_key);
412
413 elm = g_hash_table_lookup(hash, tmp_key);
414 }
415
416 g_hash_table_destroy(hash);
417}
418#endif
419
420static void
421eina_bench_lookup_evas(int request)
422{
423 Evas_Hash *hash = NULL;
424 Eina_Array *array = NULL;
425 int *tmp_val;
426 Eina_Array_Iterator it;
427 unsigned int i;
428 unsigned int j;
429
430 array = eina_array_new(10000);
431
432 for (i = 0; i < (unsigned int)request; ++i)
433 {
434 char tmp_key[10];
435
436 tmp_val = malloc(sizeof (int));
437
438 if (!tmp_val)
439 continue;
440
441 eina_convert_itoa(i, tmp_key);
442 *tmp_val = i;
443
444 hash = evas_hash_add(hash, tmp_key, tmp_val);
445
446 eina_array_push(array, tmp_val);
447 }
448
449 srand(time(NULL));
450
451 for (j = 0; j < 200; ++j)
452 for (i = 0; i < (unsigned int)request; ++i)
453 {
454 char tmp_key[10];
455
456 eina_convert_itoa(rand() % request, tmp_key);
457
458 tmp_val = evas_hash_find(hash, tmp_key);
459 }
460
461 evas_hash_free(hash);
462
463 EINA_ARRAY_ITER_NEXT(array, i, tmp_val, it)
464 free(tmp_val);
465
466 eina_array_free(array);
467}
468
469typedef struct _Eina_Bench_Ecore Eina_Bench_Ecore;
470struct _Eina_Bench_Ecore
471{
472 char *key;
473 int value;
474};
475
476static void
477eina_bench_lookup_ecore(int request)
478{
479 Ecore_Hash *hash = NULL;
480 Eina_Bench_Ecore *elm;
481 unsigned int i;
482 unsigned int j;
483
484 hash = ecore_hash_new(ecore_str_hash, ecore_str_compare);
485
486 ecore_hash_free_key_cb_set(hash, NULL);
487 ecore_hash_free_value_cb_set(hash, free);
488
489 for (i = 0; i < (unsigned int)request; ++i)
490 {
491 elm = malloc(sizeof (Eina_Bench_Ecore) + 10);
492 if (!elm)
493 continue;
494
495 elm->key = (char *)(elm + 1);
496 eina_convert_itoa(i, elm->key);
497 elm->value = i;
498
499 ecore_hash_set(hash, elm->key, elm);
500 }
501
502 srand(time(NULL));
503
504 for (j = 0; j < 200; ++j)
505 for (i = 0; i < (unsigned int)request; ++i)
506 {
507 char tmp_key[10];
508
509 eina_convert_itoa(rand() % request, tmp_key);
510
511 elm = ecore_hash_get(hash, tmp_key);
512 }
513
514 ecore_hash_destroy(hash);
515}
516
517void eina_bench_hash(Eina_Benchmark *bench)
518{
519 eina_benchmark_register(bench, "superfast-lookup",
520 EINA_BENCHMARK(
521 eina_bench_lookup_superfast), 10, 10000, 10);
522 eina_benchmark_register(bench, "djb2-lookup",
523 EINA_BENCHMARK(
524 eina_bench_lookup_djb2), 10, 10000, 10);
525 eina_benchmark_register(bench, "djb2-lookup-inline",
526 EINA_BENCHMARK(
527 eina_bench_lookup_djb2_inline), 10, 10000, 10);
528 eina_benchmark_register(bench, "murmur",
529 EINA_BENCHMARK(
530 eina_bench_lookup_murmur), 10, 10000, 10);
531#ifdef CITYHASH_BENCH
532 eina_benchmark_register(bench, "cityhash",
533 EINA_BENCHMARK(
534 eina_bench_lookup_cityhash), 10, 10000, 10);
535#endif
536 eina_benchmark_register(bench, "rbtree",
537 EINA_BENCHMARK(
538 eina_bench_lookup_rbtree), 10, 10000, 10);
539#ifdef EINA_BENCH_HAVE_GLIB
540 eina_benchmark_register(bench, "ghash-lookup",
541 EINA_BENCHMARK(
542 eina_bench_lookup_ghash), 10, 10000, 10);
543#endif
544 eina_benchmark_register(bench, "evas-lookup",
545 EINA_BENCHMARK(
546 eina_bench_lookup_evas), 10, 10000, 10);
547 eina_benchmark_register(bench, "ecore-lookup",
548 EINA_BENCHMARK(
549 eina_bench_lookup_ecore), 10, 10000, 10);
550
551}
diff --git a/src/benchmarks/eina/eina_bench_stringshare.c b/src/benchmarks/eina/eina_bench_stringshare.c
index 22d18fa485..1b19154493 100644
--- a/src/benchmarks/eina/eina_bench_stringshare.c
+++ b/src/benchmarks/eina/eina_bench_stringshare.c
@@ -139,14 +139,14 @@ eina_bench_ecore_job(int request)
139 unsigned int j; 139 unsigned int j;
140 int i; 140 int i;
141 141
142 ecore_string_init(); 142 //ecore_string_init();
143 143
144 for (i = 0; i < request; ++i) 144 for (i = 0; i < request; ++i)
145 { 145 {
146 char build[64] = "string_"; 146 char build[64] = "string_";
147 147
148 eina_convert_xtoa(i, build + 7); 148 eina_convert_xtoa(i, build + 7);
149 tmp = ecore_string_instance(build); 149 //tmp = ecore_string_instance(build);
150 } 150 }
151 151
152 srand(time(NULL)); 152 srand(time(NULL));
@@ -157,13 +157,13 @@ eina_bench_ecore_job(int request)
157 char build[64] = "string_"; 157 char build[64] = "string_";
158 158
159 eina_convert_xtoa(rand() % request, build + 7); 159 eina_convert_xtoa(rand() % request, build + 7);
160 tmp = ecore_string_instance(build); 160 //tmp = ecore_string_instance(build);
161 } 161 }
162 162
163 /* Suppress warnings as we really don't want to do anything. */ 163 /* Suppress warnings as we really don't want to do anything. */
164 (void) tmp; 164 (void) tmp;
165 165
166 ecore_string_shutdown(); 166 //ecore_string_shutdown();
167} 167}
168 168
169void eina_bench_stringshare(Eina_Benchmark *bench) 169void eina_bench_stringshare(Eina_Benchmark *bench)
diff --git a/src/benchmarks/eina/eina_bench_stringshare_e17.c b/src/benchmarks/eina/eina_bench_stringshare_e17.c
deleted file mode 100644
index 2b2b45cb34..0000000000
--- a/src/benchmarks/eina/eina_bench_stringshare_e17.c
+++ /dev/null
@@ -1,121 +0,0 @@
1/* EINA - EFL data type library
2 * Copyright (C) 2008 Cedric Bail
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library;
16 * if not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifdef HAVE_CONFIG_H
20# include "config.h"
21#endif
22
23#include <stdlib.h>
24#include <stdio.h>
25#include <time.h>
26
27#ifdef EINA_BENCH_HAVE_GLIB
28# include <glib.h>
29#endif
30
31#include "Evas_Data.h"
32#include "Ecore_Data.h"
33
34#include "Eina.h"
35
36#if EINA_ENABLE_BENCH_E17
37
38typedef struct _Eina_Stringshare_Test Eina_Stringshare_Test;
39struct _Eina_Stringshare_Test
40{
41 const char *name;
42
43 int (*init)(void);
44 const char *(*add)(const char *str);
45 void (*del)(const char *str);
46 int (*shutdown)(void);
47};
48
49static Eina_Stringshare_Test eina_str = {
50 "eina",
51 eina_init,
52 eina_stringshare_add,
53 eina_stringshare_del,
54 eina_shutdown
55};
56
57static Eina_Stringshare_Test evas_str = {
58 "evas",
59 NULL,
60 evas_stringshare_add,
61 evas_stringshare_del,
62 NULL
63};
64
65static Eina_Stringshare_Test ecore_str = {
66 "ecore",
67 ecore_string_init,
68 ecore_string_instance,
69 ecore_string_release,
70 ecore_string_shutdown
71};
72
73static Eina_Stringshare_Test *tests[] = {
74 &eina_str,
75 &evas_str,
76 &ecore_str,
77 NULL
78};
79
80static void
81eina_bench_e17_stringshare(Eina_Stringshare_Test *str)
82{
83 Eina_Counter *cnt;
84 char *result;
85
86 cnt = eina_counter_new(str->name);
87
88 eina_counter_start(cnt);
89
90 if (str->init)
91 str->init();
92
93//#include "strlog"
94
95 if (str->shutdown)
96 str->shutdown();
97
98 eina_counter_stop(cnt, 1);
99
100 result = eina_counter_dump(cnt);
101 fprintf(stderr, "For `%s`:\n%s\n", str->name, result);
102 free(result);
103
104 eina_counter_free(cnt);
105}
106#endif
107
108void
109eina_bench_e17(void)
110{
111#if EINA_ENABLE_BENCH_E17
112 int i;
113
114 eina_init();
115
116 for (i = 0; tests[i]; ++i)
117 eina_bench_e17_stringshare(tests[i]);
118
119 eina_shutdown();
120#endif
121}
diff --git a/src/benchmarks/eina/meson.build b/src/benchmarks/eina/meson.build
index ba126987fb..8243511d6e 100644
--- a/src/benchmarks/eina/meson.build
+++ b/src/benchmarks/eina/meson.build
@@ -1,17 +1,13 @@
1eina_bench_src = files( 1eina_bench_src = files(
2'eina_bench.c', 2'eina_bench.c',
3'eina_bench_sort.c', 3'eina_bench_sort.c',
4'eina_bench_hash.c',
5'eina_bench_crc_hash.c', 4'eina_bench_crc_hash.c',
6'eina_bench_stringshare.c', 5'eina_bench_stringshare.c',
7'eina_bench_convert.c', 6'eina_bench_convert.c',
8'eina_bench_mempool.c', 7'eina_bench_mempool.c',
9'eina_bench_stringshare_e17.c',
10'eina_bench_array.c', 8'eina_bench_array.c',
11'eina_bench_rectangle_pool.c', 9'eina_bench_rectangle_pool.c',
12'ecore_list.c', 10'ecore_list.c',
13'ecore_strings.c',
14'ecore_hash.c',
15'ecore_sheap.c', 11'ecore_sheap.c',
16'evas_hash.c', 12'evas_hash.c',
17'evas_list.c', 13'evas_list.c',
diff --git a/src/bindings/mono/eina_mono/eina_stringshare.cs b/src/bindings/mono/eina_mono/eina_stringshare.cs
index 58656fe8ca..741817294d 100644
--- a/src/bindings/mono/eina_mono/eina_stringshare.cs
+++ b/src/bindings/mono/eina_mono/eina_stringshare.cs
@@ -69,7 +69,7 @@ public class Stringshare : IEquatable<Stringshare>, IEquatable<string>
69 /// <summary> 69 /// <summary>
70 /// Main constructor. Wrap the given string. 70 /// Main constructor. Wrap the given string.
71 /// Have private acess to avoid wrapping a null reference, 71 /// Have private acess to avoid wrapping a null reference,
72 /// use convertion or the factory method to create a new instance. 72 /// use conversion or the factory method to create a new instance.
73 /// <para>Since EFL 1.23.</para> 73 /// <para>Since EFL 1.23.</para>
74 /// <see cref="Create(string)"/> 74 /// <see cref="Create(string)"/>
75 /// <see cref="implicit operator Stringshare(string)"/> 75 /// <see cref="implicit operator Stringshare(string)"/>
@@ -108,7 +108,7 @@ public class Stringshare : IEquatable<Stringshare>, IEquatable<string>
108 } 108 }
109 109
110 /// <summary> 110 /// <summary>
111 /// Implicit convertion to string. 111 /// Implicit conversion to string.
112 /// </summary> 112 /// </summary>
113 public static implicit operator string(Stringshare ss) 113 public static implicit operator string(Stringshare ss)
114 { 114 {
@@ -121,12 +121,12 @@ public class Stringshare : IEquatable<Stringshare>, IEquatable<string>
121 } 121 }
122 122
123 /// <summary> 123 /// <summary>
124 /// Implicit convertion from string to Stringshare. 124 /// Implicit conversion from string to Stringshare.
125 /// <para>Since EFL 1.23.</para> 125 /// <para>Since EFL 1.23.</para>
126 /// </summary> 126 /// </summary>
127 /// <remarks> 127 /// <remarks>
128 /// Note that this method can be used to create an instance of this class, 128 /// Note that this method can be used to create an instance of this class,
129 /// either via an explicit cast or an implicit convertion. 129 /// either via an explicit cast or an implicit conversion.
130 /// <seealso cref="Create(string)"/> 130 /// <seealso cref="Create(string)"/>
131 /// </remarks> 131 /// </remarks>
132 public static implicit operator Stringshare(string s) 132 public static implicit operator Stringshare(string s)
@@ -145,7 +145,7 @@ public class Stringshare : IEquatable<Stringshare>, IEquatable<string>
145 /// </summary> 145 /// </summary>
146 /// <remarks> 146 /// <remarks>
147 /// Note that this method can be used to create an instance of this class, 147 /// Note that this method can be used to create an instance of this class,
148 /// either via an explicit cast or an implicit convertion. 148 /// either via an explicit cast or an implicit conversion.
149 /// <seealso cref="Create(string)"/> 149 /// <seealso cref="Create(string)"/>
150 /// </remarks> 150 /// </remarks>
151 public static Stringshare FromString(string s) => s; 151 public static Stringshare FromString(string s) => s;
diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h
index 28ed81bd00..f293fe10a6 100644
--- a/src/lib/ecore_imf/Ecore_IMF.h
+++ b/src/lib/ecore_imf/Ecore_IMF.h
@@ -1971,7 +1971,7 @@ EAPI void ecore_imf_context_candidate_panel_geometry_ge
1971 1971
1972/** 1972/**
1973 * @ingroup Ecore_IMF_Context_Group 1973 * @ingroup Ecore_IMF_Context_Group
1974 * @brief Sets whether the Input Method Context should request to show the input panel in case of only an user's explicit Mouse Up event. 1974 * @brief Sets whether the Input Method Context should request to show the input panel in case of only a user's explicit Mouse Up event.
1975 * It doesn't request to show the input panel even though the Input Method Context has focus. 1975 * It doesn't request to show the input panel even though the Input Method Context has focus.
1976 * 1976 *
1977 * @param ctx An #Ecore_IMF_Context. 1977 * @param ctx An #Ecore_IMF_Context.
@@ -1982,7 +1982,7 @@ EAPI void ecore_imf_context_input_panel_show_on_demand_
1982 1982
1983/** 1983/**
1984 * @ingroup Ecore_IMF_Context_Group 1984 * @ingroup Ecore_IMF_Context_Group
1985 * @brief Gets whether the Input Method Context should request to show the input panel in case of only an user's explicit Mouse Up event. 1985 * @brief Gets whether the Input Method Context should request to show the input panel in case of only a user's explicit Mouse Up event.
1986 * 1986 *
1987 * @param ctx An #Ecore_IMF_Context. 1987 * @param ctx An #Ecore_IMF_Context.
1988 * @return @c EINA_TRUE if the input panel will be shown in case of only Mouse up event. 1988 * @return @c EINA_TRUE if the input panel will be shown in case of only Mouse up event.
diff --git a/src/lib/edje/Edje_Legacy.h b/src/lib/edje/Edje_Legacy.h
index 24ef3f8b7f..a571ea297e 100644
--- a/src/lib/edje/Edje_Legacy.h
+++ b/src/lib/edje/Edje_Legacy.h
@@ -48,6 +48,9 @@
48 * @note Before creating the first Edje object in your code, remember 48 * @note Before creating the first Edje object in your code, remember
49 * to initialize the library, with edje_init(), or unexpected behavior 49 * to initialize the library, with edje_init(), or unexpected behavior
50 * might occur. 50 * might occur.
51 *
52 * @ingroup Edje_Object_Group
53 *
51 */ 54 */
52EAPI Evas_Object *edje_object_add (Evas *evas); 55EAPI Evas_Object *edje_object_add (Evas *evas);
53 56
@@ -67,6 +70,9 @@ EAPI Evas_Object *edje_object_add (Evas *evas);
67 * will remove it (if it was issued before). 70 * will remove it (if it was issued before).
68 * 71 *
69 * @return @c false if obj was not a valid Edje object otherwise @c true 72 * @return @c false if obj was not a valid Edje object otherwise @c true
73 *
74 * @ingroup Edje_Object_Group
75 *
70 */ 76 */
71EAPI Eina_Bool edje_object_preload(Evas_Object *obj, Eina_Bool cancel); 77EAPI Eina_Bool edje_object_preload(Evas_Object *obj, Eina_Bool cancel);
72 78
@@ -110,6 +116,9 @@ EAPI Eina_Bool edje_object_preload(Evas_Object *obj, Eina_Bool cancel);
110 * @param[in] func The callback function to be executed when the signal is 116 * @param[in] func The callback function to be executed when the signal is
111 * emitted. 117 * emitted.
112 * @param[in] data A pointer to data to pass in to func. 118 * @param[in] data A pointer to data to pass in to func.
119 *
120 * @ingroup Edje_Object_Group
121 *
113 */ 122 */
114EAPI void edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); 123EAPI void edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
115 124
@@ -125,6 +134,9 @@ EAPI void edje_object_signal_callback_add(Evas_Object *obj, const char *emission
125 * 134 *
126 * @param[in] emission The signal's "emission" string 135 * @param[in] emission The signal's "emission" string
127 * @param[in] source The signal's "source" string 136 * @param[in] source The signal's "source" string
137 *
138 * @ingroup Edje_Object_Group
139 *
128 */ 140 */
129EAPI void edje_object_signal_emit(Evas_Object *obj, const char *emission, const char *source); 141EAPI void edje_object_signal_emit(Evas_Object *obj, const char *emission, const char *source);
130 142
@@ -146,6 +158,8 @@ EAPI void edje_object_signal_emit(Evas_Object *obj, const char *emission, const
146 * @see edje_object_signal_callback_add(). 158 * @see edje_object_signal_callback_add().
147 * @see edje_object_signal_callback_del_full(). 159 * @see edje_object_signal_callback_del_full().
148 * 160 *
161 * @ingroup Edje_Object_Group
162 *
149 */ 163 */
150EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func); 164EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
151 165
@@ -171,6 +185,8 @@ EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char
171 * @see edje_object_signal_callback_add(). 185 * @see edje_object_signal_callback_add().
172 * @see edje_object_signal_callback_del(). 186 * @see edje_object_signal_callback_del().
173 * 187 *
188 * @ingroup Edje_Object_Group
189 *
174 */ 190 */
175EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); 191EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
176 192
@@ -207,6 +223,9 @@ typedef enum
207 * #EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED - #EDJE_LOAD_ERROR_CORRUPT_FILE 223 * #EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED - #EDJE_LOAD_ERROR_CORRUPT_FILE
208 * - #EDJE_LOAD_ERROR_UNKNOWN_FORMAT - #EDJE_LOAD_ERROR_INCOMPATIBLE_FILE - 224 * - #EDJE_LOAD_ERROR_UNKNOWN_FORMAT - #EDJE_LOAD_ERROR_INCOMPATIBLE_FILE -
209 * #EDJE_LOAD_ERROR_UNKNOWN_COLLECTION - #EDJE_LOAD_ERROR_RECURSIVE_REFERENCE 225 * #EDJE_LOAD_ERROR_UNKNOWN_COLLECTION - #EDJE_LOAD_ERROR_RECURSIVE_REFERENCE
226 *
227 * @ingroup Edje_Object_Group
228 *
210 */ 229 */
211EAPI Edje_Load_Error edje_object_load_error_get(const Evas_Object *obj); 230EAPI Edje_Load_Error edje_object_load_error_get(const Evas_Object *obj);
212 231
@@ -223,6 +242,9 @@ EAPI Edje_Load_Error edje_object_load_error_get(const Evas_Object *obj);
223 * edje_object_load_error_get(). The function in question is meant 242 * edje_object_load_error_get(). The function in question is meant
224 * to be used in conjunction with the latter, for pretty-printing any 243 * to be used in conjunction with the latter, for pretty-printing any
225 * possible error cause. 244 * possible error cause.
245 *
246 * @ingroup Edje_Object_Group
247 *
226 */ 248 */
227EAPI const char *edje_load_error_str (Edje_Load_Error error); 249EAPI const char *edje_load_error_str (Edje_Load_Error error);
228 250
@@ -248,7 +270,7 @@ EAPI const char *edje_load_error_str (Edje_Load_Error error);
248 * 270 *
249 * @return @c true on success, @c false otherwise 271 * @return @c true on success, @c false otherwise
250 * 272 *
251 * @ingroup Edje_Object 273 * @ingroup Edje_Object_Group
252 */ 274 */
253EAPI Eina_Bool edje_object_part_geometry_get(const Evas_Object *obj, const char * part, int *x, int *y, int *w, int *h); 275EAPI Eina_Bool edje_object_part_geometry_get(const Evas_Object *obj, const char * part, int *x, int *y, int *w, int *h);
254 276
@@ -260,7 +282,7 @@ EAPI Eina_Bool edje_object_part_geometry_get(const Evas_Object *obj, const char
260 * 282 *
261 * @return The part state: "default" for the default state "" for other states 283 * @return The part state: "default" for the default state "" for other states
262 * 284 *
263 * @ingroup Edje_Object 285 * @ingroup Edje_Object_Group
264 */ 286 */
265EAPI const char *edje_object_part_state_get(const Evas_Object *obj, const char * part, double *val_ret); 287EAPI const char *edje_object_part_state_get(const Evas_Object *obj, const char * part, double *val_ret);
266 288
@@ -286,7 +308,7 @@ EAPI const char *edje_object_part_state_get(const Evas_Object *obj, const char *
286 * @return A pointer to the Evas object implementing the given part, @c null on 308 * @return A pointer to the Evas object implementing the given part, @c null on
287 * failure (e.g. the given part doesn't exist) 309 * failure (e.g. the given part doesn't exist)
288 * 310 *
289 * @ingroup Edje_Object 311 * @ingroup Edje_Object_Group
290 */ 312 */
291EAPI const Efl_Canvas_Object *edje_object_part_object_get(const Evas_Object *obj, const char * part); 313EAPI const Efl_Canvas_Object *edje_object_part_object_get(const Evas_Object *obj, const char * part);
292 314
@@ -307,7 +329,7 @@ EAPI const Efl_Canvas_Object *edje_object_part_object_get(const Evas_Object *obj
307 * 329 *
308 * @param[in] update Whether or not update the size hints. 330 * @param[in] update Whether or not update the size hints.
309 * 331 *
310 * @ingroup Edje_Object 332 * @ingroup Edje_Object_Group
311 */ 333 */
312EAPI void edje_object_update_hints_set(Evas_Object *obj, Eina_Bool update); 334EAPI void edje_object_update_hints_set(Evas_Object *obj, Eina_Bool update);
313 335
@@ -328,7 +350,7 @@ EAPI void edje_object_update_hints_set(Evas_Object *obj, Eina_Bool update);
328 * 350 *
329 * @return Whether or not update the size hints. 351 * @return Whether or not update the size hints.
330 * 352 *
331 * @ingroup Edje_Object 353 * @ingroup Edje_Object_Group
332 */ 354 */
333EAPI Eina_Bool edje_object_update_hints_get(const Evas_Object *obj); 355EAPI Eina_Bool edje_object_update_hints_get(const Evas_Object *obj);
334 356
@@ -341,7 +363,7 @@ EAPI Eina_Bool edje_object_update_hints_get(const Evas_Object *obj);
341 * @param[out] minw The minimum required width (return value) 363 * @param[out] minw The minimum required width (return value)
342 * @param[out] minh The minimum required height (return value) 364 * @param[out] minh The minimum required height (return value)
343 * 365 *
344 * @ingroup Edje_Object 366 * @ingroup Edje_Object_Group
345 */ 367 */
346EAPI void edje_object_size_min_calc(Evas_Object *obj, int *minw, int *minh); 368EAPI void edje_object_size_min_calc(Evas_Object *obj, int *minw, int *minh);
347 369
@@ -368,7 +390,7 @@ EAPI void edje_object_size_min_calc(Evas_Object *obj, int *minw, int *minh);
368 * @param[in] restrictedh The minimum height constraint as input, @c minh can 390 * @param[in] restrictedh The minimum height constraint as input, @c minh can
369 * not be lower than this 391 * not be lower than this
370 * 392 *
371 * @ingroup Edje_Object 393 * @ingroup Edje_Object_Group
372 */ 394 */
373EAPI void edje_object_size_min_restricted_calc(Evas_Object *obj, int *minw, int *minh, int restrictedw, int restrictedh); 395EAPI void edje_object_size_min_restricted_calc(Evas_Object *obj, int *minw, int *minh, int restrictedw, int restrictedh);
374 396
@@ -392,7 +414,7 @@ EAPI void edje_object_size_min_restricted_calc(Evas_Object *obj, int *minw, int
392 * 414 *
393 * @return @c true on success, @c false otherwise 415 * @return @c true on success, @c false otherwise
394 * 416 *
395 * @ingroup Edje_Object 417 * @ingroup Edje_Object_Group
396 */ 418 */
397EAPI Eina_Bool edje_object_parts_extends_calc(Evas_Object *obj, int *x, int *y, int *w, int *h); 419EAPI Eina_Bool edje_object_parts_extends_calc(Evas_Object *obj, int *x, int *y, int *w, int *h);
398 420
@@ -403,7 +425,7 @@ EAPI Eina_Bool edje_object_parts_extends_calc(Evas_Object *obj, int *x, int *y,
403 * 425 *
404 * See also @ref edje_object_freeze and @ref edje_object_thaw. 426 * See also @ref edje_object_freeze and @ref edje_object_thaw.
405 * 427 *
406 * @ingroup Edje_Object 428 * @ingroup Edje_Object_Group
407 */ 429 */
408EAPI void edje_object_calc_force(Evas_Object *obj); 430EAPI void edje_object_calc_force(Evas_Object *obj);
409 431
@@ -417,7 +439,7 @@ EAPI void edje_object_calc_force(Evas_Object *obj);
417 * 439 *
418 * @return The frozen state or 0 on error 440 * @return The frozen state or 0 on error
419 * 441 *
420 * @ingroup Edje_Object 442 * @ingroup Edje_Object_Group
421 */ 443 */
422EAPI int edje_object_freeze(Evas_Object *obj); 444EAPI int edje_object_freeze(Evas_Object *obj);
423 445
@@ -433,7 +455,7 @@ EAPI int edje_object_freeze(Evas_Object *obj);
433 * 455 *
434 * @return The frozen state or 0 if the object is not frozen or on error. 456 * @return The frozen state or 0 if the object is not frozen or on error.
435 * 457 *
436 * @ingroup Edje_Object 458 * @ingroup Edje_Object_Group
437 */ 459 */
438EAPI int edje_object_thaw(Evas_Object *obj); 460EAPI int edje_object_thaw(Evas_Object *obj);
439 461
@@ -657,7 +679,7 @@ EAPI void edje_object_message_signal_recursive_process(Evas_Object *obj);
657 */ 679 */
658 680
659/** 681/**
660 * @addgroup Edje_Object 682 * @addgroup Edje_Object_Group
661 * 683 *
662 * @{ 684 * @{
663 */ 685 */
@@ -671,7 +693,7 @@ EAPI void edje_object_message_signal_recursive_process(Evas_Object *obj);
671 * @return @ref EDJE_EXTERNAL_PARAM_TYPE_MAX on errors, or another value from 693 * @return @ref EDJE_EXTERNAL_PARAM_TYPE_MAX on errors, or another value from
672 * @ref Edje_External_Param_Type on success. 694 * @ref Edje_External_Param_Type on success.
673 * 695 *
674 * @ingroup Edje_Object 696 * @ingroup Edje_Object_Part
675 */ 697 */
676EAPI Edje_External_Param_Type edje_object_part_external_param_type_get(const Evas_Object *obj, const char *part, const char * param); 698EAPI Edje_External_Param_Type edje_object_part_external_param_type_get(const Evas_Object *obj, const char *part, const char * param);
677 699
@@ -700,7 +722,7 @@ EAPI Edje_External_Param_Type edje_object_part_external_param_type_get(const Eva
700 * 722 *
701 * @return @c true if everything went fine, @c false on errors. 723 * @return @c true if everything went fine, @c false on errors.
702 * 724 *
703 * @ingroup Edje_Object 725 * @ingroup Edje_Object_Part
704 */ 726 */
705EAPI Eina_Bool edje_object_part_external_param_set(Evas_Object *obj, const char *part, const Edje_External_Param *param); 727EAPI Eina_Bool edje_object_part_external_param_set(Evas_Object *obj, const char *part, const Edje_External_Param *param);
706 728
@@ -726,7 +748,7 @@ EAPI Eina_Bool edje_object_part_external_param_set(Evas_Object *obj, const char
726 * information, @c false on errors and param member values are not set or 748 * information, @c false on errors and param member values are not set or
727 * valid. 749 * valid.
728 * 750 *
729 * @ingroup Edje_Object 751 * @ingroup Edje_Object_Part
730 */ 752 */
731EAPI Eina_Bool edje_object_part_external_param_get(const Evas_Object *obj, const char *part, Edje_External_Param *param); 753EAPI Eina_Bool edje_object_part_external_param_get(const Evas_Object *obj, const char *part, Edje_External_Param *param);
732 754
@@ -749,7 +771,7 @@ EAPI Eina_Bool edje_object_part_external_param_get(const Evas_Object *obj, const
749 * @return The externally created object, or @c null if there is none or part 771 * @return The externally created object, or @c null if there is none or part
750 * is not an external. 772 * is not an external.
751 * 773 *
752 * @ingroup Edje_Object 774 * @ingroup Edje_Object_Part
753 */ 775 */
754EAPI Evas_Object *edje_object_part_external_object_get(const Evas_Object *obj, const char * part); 776EAPI Evas_Object *edje_object_part_external_object_get(const Evas_Object *obj, const char * part);
755 777
@@ -765,7 +787,7 @@ EAPI Evas_Object *edje_object_part_external_object_get(const Evas_Object *obj, c
765 * 787 *
766 * @return Canvas object 788 * @return Canvas object
767 * 789 *
768 * @ingroup Edje_Object 790 * @ingroup Edje_Object_Part
769 */ 791 */
770EAPI Evas_Object *edje_object_part_external_content_get(const Evas_Object *obj, const char *part, const char *content); 792EAPI Evas_Object *edje_object_part_external_content_get(const Evas_Object *obj, const char *part, const char *content);
771 793
@@ -783,6 +805,8 @@ EAPI Evas_Object *edje_object_part_external_content_get(const Evas_Object *obj,
783 * 805 *
784 * This sets the minimum size restriction for the object. 806 * This sets the minimum size restriction for the object.
785 * 807 *
808 * @ingroup Edje_Object_Group
809 *
786 */ 810 */
787EINA_DEPRECATED EAPI void edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw, Evas_Coord minh); 811EINA_DEPRECATED EAPI void edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw, Evas_Coord minh);
788 812
@@ -796,6 +820,8 @@ EINA_DEPRECATED EAPI void edje_extern_object_min_size_set (Evas_Object *
796 * 820 *
797 * This sets the maximum size restriction for the object. 821 * This sets the maximum size restriction for the object.
798 * 822 *
823 * @ingroup Edje_Object_Group
824 *
799 */ 825 */
800EINA_DEPRECATED EAPI void edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh); 826EINA_DEPRECATED EAPI void edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh);
801 827
@@ -813,6 +839,8 @@ EINA_DEPRECATED EAPI void edje_extern_object_max_size_set (Evas_Object *
813 * ASPECT and the object may be scaled to be larger or smaller, but 839 * ASPECT and the object may be scaled to be larger or smaller, but
814 * retaining the relative scale of both aspect width and height. 840 * retaining the relative scale of both aspect width and height.
815 * 841 *
842 * @ingroup Edje_Object_Group
843 *
816 */ 844 */
817EINA_DEPRECATED EAPI void edje_extern_object_aspect_set (Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah); 845EINA_DEPRECATED EAPI void edje_extern_object_aspect_set (Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah);
818 846
@@ -847,7 +875,7 @@ EINA_DEPRECATED EAPI void edje_extern_object_aspect_set (Evas_Object *
847 * @param[in] group The name of the group, in @p file, which implements an 875 * @param[in] group The name of the group, in @p file, which implements an
848Edje object 876Edje object
849 * 877 *
850 * @ingroup Edje_Object 878 * @ingroup Edje_Object_Group
851 */ 879 */
852EAPI Eina_Bool edje_object_file_set(Evas_Object *obj, const char *file, const char *group); 880EAPI Eina_Bool edje_object_file_set(Evas_Object *obj, const char *file, const char *group);
853 881
@@ -869,7 +897,7 @@ EAPI Eina_Bool edje_object_file_set(Evas_Object *obj, const char *file, const ch
869 * @param[out] group The name of the group, in @p file, which implements an 897 * @param[out] group The name of the group, in @p file, which implements an
870Edje object 898Edje object
871 * 899 *
872 * @ingroup Edje_Object 900 * @ingroup Edje_Object_Group
873 */ 901 */
874EAPI void edje_object_file_get(const Evas_Object *obj, const char **file, const char **group); 902EAPI void edje_object_file_get(const Evas_Object *obj, const char **file, const char **group);
875 903
@@ -905,7 +933,7 @@ EAPI void edje_object_file_get(const Evas_Object *obj, const char **file, const
905 * @param[in] group The name of the group, in @p file, which implements an 933 * @param[in] group The name of the group, in @p file, which implements an
906Edje object 934Edje object
907 * 935 *
908 * @ingroup Edje_Object 936 * @ingroup Edje_Object_Group
909 * 937 *
910 */ 938 */
911EAPI Eina_Bool edje_object_mmap_set(Evas_Object *obj, const Eina_File *file, const char *group); 939EAPI Eina_Bool edje_object_mmap_set(Evas_Object *obj, const Eina_File *file, const char *group);
@@ -941,7 +969,7 @@ EAPI Eina_Bool edje_object_mmap_set(Evas_Object *obj, const Eina_File *file, con
941 * 969 *
942 * @param[in] obj_swallow The object to occupy that part 970 * @param[in] obj_swallow The object to occupy that part
943 * 971 *
944 * @ingroup Edje_Object 972 * @ingroup Edje_Object_Part
945 */ 973 */
946EAPI Eina_Bool edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_swallow); 974EAPI Eina_Bool edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_swallow);
947 975
@@ -952,7 +980,7 @@ EAPI Eina_Bool edje_object_part_swallow(Evas_Object *obj, const char *part, Evas
952 * 980 *
953 * @return The swallowed object, or @c null if there is none. 981 * @return The swallowed object, or @c null if there is none.
954 * 982 *
955 * @ingroup Edje_Object 983 * @ingroup Edje_Object_Part
956 */ 984 */
957EAPI Evas_Object *edje_object_part_swallow_get(const Evas_Object *obj, const char *part); 985EAPI Evas_Object *edje_object_part_swallow_get(const Evas_Object *obj, const char *part);
958 986
@@ -967,7 +995,7 @@ EAPI Evas_Object *edje_object_part_swallow_get(const Evas_Object *obj, const cha
967 * 995 *
968 * @param[in] obj_swallow The swallowed object 996 * @param[in] obj_swallow The swallowed object
969 * 997 *
970 * @ingroup Edje_Object 998 * @ingroup Edje_Object_Part
971 */ 999 */
972EAPI void edje_object_part_unswallow(Evas_Object *obj, Evas_Object *obj_swallow); 1000EAPI void edje_object_part_unswallow(Evas_Object *obj, Evas_Object *obj_swallow);
973 1001
@@ -978,7 +1006,7 @@ EAPI void edje_object_part_unswallow(Evas_Object *obj, Evas_Object *obj_swallow)
978 * 1006 *
979 * @since 1.7.0 1007 * @since 1.7.0
980 * 1008 *
981 * @ingroup Edje_Object 1009 * @ingroup Edje_Object_Part
982 */ 1010 */
983EAPI Eina_List *edje_object_access_part_list_get(const Evas_Object *obj); 1011EAPI Eina_List *edje_object_access_part_list_get(const Evas_Object *obj);
984 1012
@@ -996,7 +1024,7 @@ EAPI Eina_List *edje_object_access_part_list_get(const Evas_Object *obj);
996 * 1024 *
997 * @return @c true: Successfully added. @c false: An error occurred. 1025 * @return @c true: Successfully added. @c false: An error occurred.
998 * 1026 *
999 * @ingroup Edje_Object 1027 * @ingroup Edje_Object_Part
1000 */ 1028 */
1001EAPI Eina_Bool edje_object_part_box_append(Evas_Object *obj, const char *part, Evas_Object *child); 1029EAPI Eina_Bool edje_object_part_box_append(Evas_Object *obj, const char *part, Evas_Object *child);
1002 1030
@@ -1014,7 +1042,7 @@ EAPI Eina_Bool edje_object_part_box_append(Evas_Object *obj, const char *part, E
1014 * 1042 *
1015 * @return @c true: Successfully added. @c false: An error occurred. 1043 * @return @c true: Successfully added. @c false: An error occurred.
1016 * 1044 *
1017 * @ingroup Edje_Object 1045 * @ingroup Edje_Object_Part
1018 */ 1046 */
1019EAPI Eina_Bool edje_object_part_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child); 1047EAPI Eina_Bool edje_object_part_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child);
1020 1048
@@ -1033,7 +1061,7 @@ EAPI Eina_Bool edje_object_part_box_prepend(Evas_Object *obj, const char *part,
1033 * 1061 *
1034 * @return @c true: Successfully added. @c false: An error occurred. 1062 * @return @c true: Successfully added. @c false: An error occurred.
1035 * 1063 *
1036 * @ingroup Edje_Object 1064 * @ingroup Edje_Object_Part
1037 */ 1065 */
1038EAPI Eina_Bool edje_object_part_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference); 1066EAPI Eina_Bool edje_object_part_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference);
1039 1067
@@ -1072,7 +1100,7 @@ EAPI Eina_Bool edje_object_part_box_insert_after(Evas_Object *obj, const char *p
1072 * 1100 *
1073 * @return @c true: Successfully added. @c false: An error occurred. 1101 * @return @c true: Successfully added. @c false: An error occurred.
1074 * 1102 *
1075 * @ingroup Edje_Object 1103 * @ingroup Edje_Object_Part
1076 */ 1104 */
1077EAPI Eina_Bool edje_object_part_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos); 1105EAPI Eina_Bool edje_object_part_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos);
1078 1106
@@ -1088,7 +1116,7 @@ EAPI Eina_Bool edje_object_part_box_insert_at(Evas_Object *obj, const char *part
1088 * 1116 *
1089 * @return Pointer to the object removed, or @c null. 1117 * @return Pointer to the object removed, or @c null.
1090 * 1118 *
1091 * @ingroup Edje_Object 1119 * @ingroup Edje_Object_Part
1092 */ 1120 */
1093EAPI Evas_Object *edje_object_part_box_remove_at(Evas_Object *obj, const char *part, unsigned int pos); 1121EAPI Evas_Object *edje_object_part_box_remove_at(Evas_Object *obj, const char *part, unsigned int pos);
1094 1122
@@ -1104,7 +1132,7 @@ EAPI Evas_Object *edje_object_part_box_remove_at(Evas_Object *obj, const char *p
1104 * 1132 *
1105 * @return Pointer to the object removed, or @c null. 1133 * @return Pointer to the object removed, or @c null.
1106 * 1134 *
1107 * @ingroup Edje_Object 1135 * @ingroup Edje_Object_Part
1108 */ 1136 */
1109EAPI Evas_Object *edje_object_part_box_remove(Evas_Object *obj, const char *part, Evas_Object *child); 1137EAPI Evas_Object *edje_object_part_box_remove(Evas_Object *obj, const char *part, Evas_Object *child);
1110 1138
@@ -1121,7 +1149,7 @@ EAPI Evas_Object *edje_object_part_box_remove(Evas_Object *obj, const char *part
1121 * 1149 *
1122 * @return 1: Successfully cleared. 0: An error occurred. 1150 * @return 1: Successfully cleared. 0: An error occurred.
1123 * 1151 *
1124 * @ingroup Edje_Object 1152 * @ingroup Edje_Object_Part
1125 */ 1153 */
1126EAPI Eina_Bool edje_object_part_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear); 1154EAPI Eina_Bool edje_object_part_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear);
1127 1155
@@ -1138,7 +1166,7 @@ EAPI Eina_Bool edje_object_part_box_remove_all(Evas_Object *obj, const char *par
1138 * 1166 *
1139 * @return @c true object was added, @c false on failure 1167 * @return @c true object was added, @c false on failure
1140 * 1168 *
1141 * @ingroup Edje_Object 1169 * @ingroup Edje_Object_Part
1142 */ 1170 */
1143EAPI Eina_Bool edje_object_part_table_pack(Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan); 1171EAPI Eina_Bool edje_object_part_table_pack(Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan);
1144 1172
@@ -1151,7 +1179,7 @@ EAPI Eina_Bool edje_object_part_table_pack(Evas_Object *obj, const char *part, E
1151 * 1179 *
1152 * @return @c true object removed, @c false on failure 1180 * @return @c true object removed, @c false on failure
1153 * 1181 *
1154 * @ingroup Edje_Object 1182 * @ingroup Edje_Object_Part
1155 */ 1183 */
1156EAPI Eina_Bool edje_object_part_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj); 1184EAPI Eina_Bool edje_object_part_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj);
1157 1185
@@ -1165,7 +1193,7 @@ EAPI Eina_Bool edje_object_part_table_unpack(Evas_Object *obj, const char *part,
1165 * 1193 *
1166 * @return @c true get some data, @c false on failure 1194 * @return @c true get some data, @c false on failure
1167 * 1195 *
1168 * @ingroup Edje_Object 1196 * @ingroup Edje_Object_Part
1169 */ 1197 */
1170EAPI Eina_Bool edje_object_part_table_col_row_size_get(const Evas_Object *obj, const char *part, int *cols, int *rows); 1198EAPI Eina_Bool edje_object_part_table_col_row_size_get(const Evas_Object *obj, const char *part, int *cols, int *rows);
1171 1199
@@ -1177,7 +1205,7 @@ EAPI Eina_Bool edje_object_part_table_col_row_size_get(const Evas_Object *obj, c
1177 * 1205 *
1178 * @return The child Efl.Canvas.Object 1206 * @return The child Efl.Canvas.Object
1179 * 1207 *
1180 * @ingroup Edje_Object 1208 * @ingroup Edje_Object_Part
1181 */ 1209 */
1182EAPI Evas_Object *edje_object_part_table_child_get(const Evas_Object *obj, const char *part, unsigned int col, unsigned int row); 1210EAPI Evas_Object *edje_object_part_table_child_get(const Evas_Object *obj, const char *part, unsigned int col, unsigned int row);
1183 1211
@@ -1191,7 +1219,7 @@ EAPI Evas_Object *edje_object_part_table_child_get(const Evas_Object *obj, const
1191 * 1219 *
1192 * @return @c true clear the table, @c false on failure 1220 * @return @c true clear the table, @c false on failure
1193 * 1221 *
1194 * @ingroup Edje_Object 1222 * @ingroup Edje_Object_Part
1195 */ 1223 */
1196EAPI Eina_Bool edje_object_part_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear); 1224EAPI Eina_Bool edje_object_part_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear);
1197 1225
@@ -1225,7 +1253,7 @@ EAPI Eina_Bool edje_object_part_table_clear(Evas_Object *obj, const char *part,
1225 * @param[in] b3 Shadow Blue value 1253 * @param[in] b3 Shadow Blue value
1226 * @param[in] a3 Shadow Alpha value 1254 * @param[in] a3 Shadow Alpha value
1227 * 1255 *
1228 * @ingroup Edje_Object 1256 * @ingroup Edje_Object_Color_Class
1229 */ 1257 */
1230EAPI Eina_Bool edje_object_color_class_set(Evas_Object *obj, const char * color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3); 1258EAPI Eina_Bool edje_object_color_class_set(Evas_Object *obj, const char * color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
1231 1259
@@ -1257,7 +1285,7 @@ EAPI Eina_Bool edje_object_color_class_set(Evas_Object *obj, const char * color_
1257 * 1285 *
1258 * @return true if found or false if not found and all values are zeroed. 1286 * @return true if found or false if not found and all values are zeroed.
1259 * 1287 *
1260 * @ingroup Edje_Object 1288 * @ingroup Edje_Object_Color_Class
1261 */ 1289 */
1262EAPI Eina_Bool edje_object_color_class_get(const Evas_Object *obj, const char * color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3); 1290EAPI Eina_Bool edje_object_color_class_get(const Evas_Object *obj, const char * color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3);
1263 1291
@@ -1275,7 +1303,7 @@ EAPI Eina_Bool edje_object_color_class_get(const Evas_Object *obj, const char *
1275 * 1303 *
1276 * @param[in] color_class The color class to be deleted. 1304 * @param[in] color_class The color class to be deleted.
1277 * 1305 *
1278 * @ingroup Edje_Object 1306 * @ingroup Edje_Object_Color_Class
1279 */ 1307 */
1280EAPI void edje_object_color_class_del(Evas_Object *obj, const char *color_class); 1308EAPI void edje_object_color_class_del(Evas_Object *obj, const char *color_class);
1281 1309
@@ -1290,7 +1318,7 @@ EAPI void edje_object_color_class_del(Evas_Object *obj, const char *color_class)
1290 * 1318 *
1291 * @since 1.17.0 1319 * @since 1.17.0
1292 * 1320 *
1293 * @ingroup Edje_Object 1321 * @ingroup Edje_Object_Color_Class
1294 */ 1322 */
1295EAPI Eina_Bool edje_object_color_class_clear(const Evas_Object *obj); 1323EAPI Eina_Bool edje_object_color_class_clear(const Evas_Object *obj);
1296 1324
@@ -1305,7 +1333,7 @@ EAPI Eina_Bool edje_object_color_class_clear(const Evas_Object *obj);
1305 * 1333 *
1306 * @return @c true, on success or @c false, on error 1334 * @return @c true, on success or @c false, on error
1307 * 1335 *
1308 * @ingroup Edje_Object 1336 * @ingroup Edje_Object_Text_Class
1309 */ 1337 */
1310EAPI Eina_Bool edje_object_text_class_set(Evas_Object *obj, const char * text_class, const char *font, Evas_Font_Size size); 1338EAPI Eina_Bool edje_object_text_class_set(Evas_Object *obj, const char * text_class, const char *font, Evas_Font_Size size);
1311 1339
@@ -1322,7 +1350,7 @@ EAPI Eina_Bool edje_object_text_class_set(Evas_Object *obj, const char * text_cl
1322 * 1350 *
1323 * @return @c true, on success or @c false, on error 1351 * @return @c true, on success or @c false, on error
1324 * 1352 *
1325 * @ingroup Edje_Object 1353 * @ingroup Edje_Object_Text_Class
1326 */ 1354 */
1327EAPI Eina_Bool edje_object_text_class_get(const Evas_Object *obj, const char * text_class, const char **font, Evas_Font_Size *size); 1355EAPI Eina_Bool edje_object_text_class_get(const Evas_Object *obj, const char * text_class, const char **font, Evas_Font_Size *size);
1328 1356
@@ -1339,7 +1367,7 @@ EAPI Eina_Bool edje_object_text_class_get(const Evas_Object *obj, const char * t
1339 * 1367 *
1340 * @since 1.17 1368 * @since 1.17
1341 * 1369 *
1342 * @ingroup Edje_Object 1370 * @ingroup Edje_Object_Text_Class
1343 */ 1371 */
1344EAPI void edje_object_text_class_del(Evas_Object *obj, const char *text_class); 1372EAPI void edje_object_text_class_del(Evas_Object *obj, const char *text_class);
1345 1373
@@ -1360,7 +1388,7 @@ EAPI void edje_object_text_class_del(Evas_Object *obj, const char *text_class);
1360 * 1388 *
1361 * @since 1.17 1389 * @since 1.17
1362 * 1390 *
1363 * @ingroup Edje_Object 1391 * @ingroup Edje_Object_Size_Class
1364 */ 1392 */
1365EAPI Eina_Bool edje_object_size_class_set(Evas_Object *obj, const char * size_class, int minw, int minh, int maxw, int maxh); 1393EAPI Eina_Bool edje_object_size_class_set(Evas_Object *obj, const char * size_class, int minw, int minh, int maxw, int maxh);
1366 1394
@@ -1381,7 +1409,7 @@ EAPI Eina_Bool edje_object_size_class_set(Evas_Object *obj, const char * size_cl
1381 * 1409 *
1382 * @since 1.17 1410 * @since 1.17
1383 * 1411 *
1384 * @ingroup Edje_Object 1412 * @ingroup Edje_Object_Size_Class
1385 */ 1413 */
1386EAPI Eina_Bool edje_object_size_class_get(const Evas_Object *obj, const char * size_class, int *minw, int *minh, int *maxw, int *maxh); 1414EAPI Eina_Bool edje_object_size_class_get(const Evas_Object *obj, const char * size_class, int *minw, int *minh, int *maxw, int *maxh);
1387 1415
@@ -1398,7 +1426,7 @@ EAPI Eina_Bool edje_object_size_class_get(const Evas_Object *obj, const char * s
1398 * 1426 *
1399 * @since 1.17 1427 * @since 1.17
1400 * 1428 *
1401 * @ingroup Edje_Object 1429 * @ingroup Edje_Object_Size_Class
1402 */ 1430 */
1403EAPI void edje_object_size_class_del(Evas_Object *obj, const char *size_class); 1431EAPI void edje_object_size_class_del(Evas_Object *obj, const char *size_class);
1404 1432
@@ -1412,7 +1440,7 @@ EAPI void edje_object_size_class_del(Evas_Object *obj, const char *size_class);
1412 * @param[in] part The part name 1440 * @param[in] part The part name
1413 * @param[in] allow true to enable, false otherwise 1441 * @param[in] allow true to enable, false otherwise
1414 * 1442 *
1415 * @ingroup Edje_Object 1443 * @ingroup Edje_Object_Part
1416 */ 1444 */
1417EAPI void edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, Eina_Bool allow); 1445EAPI void edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, Eina_Bool allow);
1418 1446
@@ -1423,7 +1451,7 @@ EAPI void edje_object_part_text_select_allow_set(const Evas_Object *obj, const c
1423 * 1451 *
1424 * @since 1.1.0 1452 * @since 1.1.0
1425 * 1453 *
1426 * @ingroup Edje_Object 1454 * @ingroup Edje_Object_Group
1427 */ 1455 */
1428EAPI void edje_object_mirrored_set(Evas_Object *obj, Eina_Bool rtl); 1456EAPI void edje_object_mirrored_set(Evas_Object *obj, Eina_Bool rtl);
1429 1457
@@ -1436,7 +1464,7 @@ EAPI void edje_object_mirrored_set(Evas_Object *obj, Eina_Bool rtl);
1436 * 1464 *
1437 * @since 1.1.0 1465 * @since 1.1.0
1438 * 1466 *
1439 * @ingroup Edje_Object 1467 * @ingroup Edje_Object_Group
1440 */ 1468 */
1441EAPI Eina_Bool edje_object_mirrored_get(const Evas_Object *obj); 1469EAPI Eina_Bool edje_object_mirrored_get(const Evas_Object *obj);
1442 1470
@@ -1447,7 +1475,7 @@ EAPI Eina_Bool edje_object_mirrored_get(const Evas_Object *obj);
1447 * 1475 *
1448 * @since 1.1.0 1476 * @since 1.1.0
1449 * 1477 *
1450 * @ingroup Edje_Object 1478 * @ingroup Edje_Object_Group
1451 */ 1479 */
1452EAPI void edje_object_language_set(Evas_Object *obj, const char *language); 1480EAPI void edje_object_language_set(Evas_Object *obj, const char *language);
1453 1481
@@ -1458,7 +1486,7 @@ EAPI void edje_object_language_set(Evas_Object *obj, const char *language);
1458 * 1486 *
1459 * @since 1.1.0 1487 * @since 1.1.0
1460 * 1488 *
1461 * @ingroup Edje_Object 1489 * @ingroup Edje_Object_Group
1462 */ 1490 */
1463EAPI const char *edje_object_language_get(const Evas_Object *obj); 1491EAPI const char *edje_object_language_get(const Evas_Object *obj);
1464 1492
@@ -1482,7 +1510,7 @@ EAPI const char *edje_object_language_get(const Evas_Object *obj);
1482 * 1510 *
1483 * @return @c true on success, @c false otherwise 1511 * @return @c true on success, @c false otherwise
1484 * 1512 *
1485 * @ingroup Edje_Object 1513 * @ingroup Edje_Object_Scale
1486 */ 1514 */
1487EAPI Eina_Bool edje_object_scale_set(Evas_Object *obj, double scale); 1515EAPI Eina_Bool edje_object_scale_set(Evas_Object *obj, double scale);
1488 1516
@@ -1497,7 +1525,7 @@ EAPI Eina_Bool edje_object_scale_set(Evas_Object *obj, double scale);
1497 * @return The scaling factor (the default value is @0.0, meaning individual 1525 * @return The scaling factor (the default value is @0.0, meaning individual
1498 * scaling not set) 1526 * scaling not set)
1499 * 1527 *
1500 * @ingroup Edje_Object 1528 * @ingroup Edje_Object_Scale
1501 */ 1529 */
1502EAPI double edje_object_scale_get(const Evas_Object *obj); 1530EAPI double edje_object_scale_get(const Evas_Object *obj);
1503 1531
@@ -1511,7 +1539,7 @@ EAPI double edje_object_scale_get(const Evas_Object *obj);
1511 * @return The base_scale factor (the default value is @ 1.0, that means the 1539 * @return The base_scale factor (the default value is @ 1.0, that means the
1512 * edc file is made based on scale 1.0. 1540 * edc file is made based on scale 1.0.
1513 * 1541 *
1514 * @ingroup Edje_Object 1542 * @ingroup Edje_Object_Scale
1515 */ 1543 */
1516EAPI double edje_object_base_scale_get(const Evas_Object *obj); 1544EAPI double edje_object_base_scale_get(const Evas_Object *obj);
1517 1545
@@ -1772,7 +1800,7 @@ EAPI Eina_Bool edje_object_part_drag_page(Evas_Object *obj, const char *part, do
1772 * @param[in] part The part name 1800 * @param[in] part The part name
1773 * @param[in] text The text to set on that part 1801 * @param[in] text The text to set on that part
1774 * 1802 *
1775 * @ingroup Edje_Object 1803 * @ingroup Edje_Object_Part
1776 */ 1804 */
1777EAPI Eina_Bool edje_object_part_text_set(const Evas_Object *obj, const char *part, const char *text); 1805EAPI Eina_Bool edje_object_part_text_set(const Evas_Object *obj, const char *part, const char *text);
1778 1806
@@ -1783,7 +1811,7 @@ EAPI Eina_Bool edje_object_part_text_set(const Evas_Object *obj, const char *par
1783 * 1811 *
1784 * @return The text set on the part, @c null otherwise. 1812 * @return The text set on the part, @c null otherwise.
1785 * 1813 *
1786 * @ingroup Edje_Object 1814 * @ingroup Edje_Object_Part
1787 */ 1815 */
1788EAPI const char * edje_object_part_text_get(const Evas_Object *obj, const char *part); 1816EAPI const char * edje_object_part_text_get(const Evas_Object *obj, const char *part);
1789 1817
@@ -1794,7 +1822,7 @@ EAPI const char * edje_object_part_text_get(const Evas_Object *obj, const char *
1794 * @param[in] part The part name 1822 * @param[in] part The part name
1795 * @param[in] cur The edje cursor to work on 1823 * @param[in] cur The edje cursor to work on
1796 * 1824 *
1797 * @ingroup Edje_Object 1825 * @ingroup Edje_Object_Part
1798 */ 1826 */
1799EAPI void edje_object_part_text_cursor_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur); 1827EAPI void edje_object_part_text_cursor_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur);
1800 1828
@@ -1805,7 +1833,7 @@ EAPI void edje_object_part_text_cursor_begin_set(Evas_Object *obj, const char *p
1805 * @param[in] part The part name 1833 * @param[in] part The part name
1806 * @param[in] cur The edje cursor to work on 1834 * @param[in] cur The edje cursor to work on
1807 * 1835 *
1808 * @ingroup Edje_Object 1836 * @ingroup Edje_Object_Part
1809 */ 1837 */
1810EAPI void edje_object_part_text_cursor_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur); 1838EAPI void edje_object_part_text_cursor_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur);
1811 1839
@@ -1818,7 +1846,7 @@ EAPI void edje_object_part_text_cursor_end_set(Evas_Object *obj, const char *par
1818 * 1846 *
1819 * @since 1.1.0 1847 * @since 1.1.0
1820 * 1848 *
1821 * @ingroup Edje_Object 1849 * @ingroup Edje_Object_Part
1822 */ 1850 */
1823EAPI void edje_object_part_text_cursor_pos_set(Evas_Object *obj, const char * part, Edje_Cursor cur, int pos); 1851EAPI void edje_object_part_text_cursor_pos_set(Evas_Object *obj, const char * part, Edje_Cursor cur, int pos);
1824 1852
@@ -1832,7 +1860,7 @@ EAPI void edje_object_part_text_cursor_pos_set(Evas_Object *obj, const char * pa
1832 * 1860 *
1833 * @since 1.1.0 1861 * @since 1.1.0
1834 * 1862 *
1835 * @ingroup Edje_Object 1863 * @ingroup Edje_Object_Part
1836 */ 1864 */
1837EAPI int edje_object_part_text_cursor_pos_get(const Evas_Object *obj, const char * part, Edje_Cursor cur); 1865EAPI int edje_object_part_text_cursor_pos_get(const Evas_Object *obj, const char * part, Edje_Cursor cur);
1838 1866
@@ -1848,7 +1876,7 @@ EAPI int edje_object_part_text_cursor_pos_get(const Evas_Object *obj, const char
1848 * 1876 *
1849 * @return @c true on success, @c false otherwise 1877 * @return @c true on success, @c false otherwise
1850 * 1878 *
1851 * @ingroup Edje_Object 1879 * @ingroup Edje_Object_Part
1852 */ 1880 */
1853EAPI Eina_Bool edje_object_part_text_cursor_coord_set(Evas_Object *obj, const char *part, Edje_Cursor cur, int x, int y); 1881EAPI Eina_Bool edje_object_part_text_cursor_coord_set(Evas_Object *obj, const char *part, Edje_Cursor cur, int x, int y);
1854 1882
@@ -1859,7 +1887,7 @@ EAPI Eina_Bool edje_object_part_text_cursor_coord_set(Evas_Object *obj, const ch
1859 * @param[in] part The part name 1887 * @param[in] part The part name
1860 * @param[in] cur The edje cursor to work on 1888 * @param[in] cur The edje cursor to work on
1861 * 1889 *
1862 * @ingroup Edje_Object 1890 * @ingroup Edje_Object_Part
1863 */ 1891 */
1864EAPI void edje_object_part_text_cursor_line_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur); 1892EAPI void edje_object_part_text_cursor_line_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur);
1865 1893
@@ -1870,7 +1898,7 @@ EAPI void edje_object_part_text_cursor_line_begin_set(Evas_Object *obj, const ch
1870 * @param[in] part The part name 1898 * @param[in] part The part name
1871 * @param[in] cur The edje cursor to work on 1899 * @param[in] cur The edje cursor to work on
1872 * 1900 *
1873 * @ingroup Edje_Object 1901 * @ingroup Edje_Object_Part
1874 */ 1902 */
1875EAPI void edje_object_part_text_cursor_line_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur); 1903EAPI void edje_object_part_text_cursor_line_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur);
1876 1904
@@ -1883,7 +1911,7 @@ EAPI void edje_object_part_text_cursor_line_end_set(Evas_Object *obj, const char
1883 * 1911 *
1884 * @return @c true on success, @c false otherwise 1912 * @return @c true on success, @c false otherwise
1885 * 1913 *
1886 * @ingroup Edje_Object 1914 * @ingroup Edje_Object_Part
1887 */ 1915 */
1888EAPI Eina_Bool edje_object_part_text_cursor_prev(Evas_Object *obj, const char *part, Edje_Cursor cur); 1916EAPI Eina_Bool edje_object_part_text_cursor_prev(Evas_Object *obj, const char *part, Edje_Cursor cur);
1889 1917
@@ -1896,7 +1924,7 @@ EAPI Eina_Bool edje_object_part_text_cursor_prev(Evas_Object *obj, const char *p
1896 * 1924 *
1897 * @return @c true on success, @c false otherwise 1925 * @return @c true on success, @c false otherwise
1898 * 1926 *
1899 * @ingroup Edje_Object 1927 * @ingroup Edje_Object_Part
1900 */ 1928 */
1901EAPI Eina_Bool edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur); 1929EAPI Eina_Bool edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur);
1902 1930
@@ -1908,7 +1936,7 @@ EAPI Eina_Bool edje_object_part_text_cursor_next(Evas_Object *obj, const char *p
1908 * 1936 *
1909 * @return @c true on success, @c false otherwise 1937 * @return @c true on success, @c false otherwise
1910 * 1938 *
1911 * @ingroup Edje_Object 1939 * @ingroup Edje_Object_Part
1912 */ 1940 */
1913EAPI Eina_Bool edje_object_part_text_cursor_up(Evas_Object *obj, const char *part, Edje_Cursor cur); 1941EAPI Eina_Bool edje_object_part_text_cursor_up(Evas_Object *obj, const char *part, Edje_Cursor cur);
1914 1942
@@ -1920,7 +1948,7 @@ EAPI Eina_Bool edje_object_part_text_cursor_up(Evas_Object *obj, const char *par
1920 * 1948 *
1921 * @return @c true on success, @c false otherwise 1949 * @return @c true on success, @c false otherwise
1922 * 1950 *
1923 * @ingroup Edje_Object 1951 * @ingroup Edje_Object_Part
1924 */ 1952 */
1925EAPI Eina_Bool edje_object_part_text_cursor_down(Evas_Object *obj, const char *part, Edje_Cursor cur); 1953EAPI Eina_Bool edje_object_part_text_cursor_down(Evas_Object *obj, const char *part, Edje_Cursor cur);
1926 1954
@@ -1931,7 +1959,7 @@ EAPI Eina_Bool edje_object_part_text_cursor_down(Evas_Object *obj, const char *p
1931 * @param[in] src The cursor to copy from 1959 * @param[in] src The cursor to copy from
1932 * @param[in] dst The cursor to copy to 1960 * @param[in] dst The cursor to copy to
1933 * 1961 *
1934 * @ingroup Edje_Object 1962 * @ingroup Edje_Object_Part
1935 */ 1963 */
1936EAPI void edje_object_part_text_cursor_copy(Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst); 1964EAPI void edje_object_part_text_cursor_copy(Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst);
1937 1965
@@ -1947,7 +1975,7 @@ EAPI void edje_object_part_text_cursor_copy(Evas_Object *obj, const char *part,
1947 * @return The character string pointed to (may be a multi-byte utf8 sequence) 1975 * @return The character string pointed to (may be a multi-byte utf8 sequence)
1948 * terminated by a null byte. 1976 * terminated by a null byte.
1949 * 1977 *
1950 * @ingroup Edje_Object 1978 * @ingroup Edje_Object_Part
1951 */ 1979 */
1952EAPI char *edje_object_part_text_cursor_content_get(const Evas_Object *obj, const char * part, Edje_Cursor cur); 1980EAPI char *edje_object_part_text_cursor_content_get(const Evas_Object *obj, const char * part, Edje_Cursor cur);
1953 1981
@@ -1960,7 +1988,7 @@ EAPI char *edje_object_part_text_cursor_content_get(const Evas_Object *obj, cons
1960 * @param[out] w Cursor width 1988 * @param[out] w Cursor width
1961 * @param[out] h Cursor height 1989 * @param[out] h Cursor height
1962 * 1990 *
1963 * @ingroup Edje_Object 1991 * @ingroup Edje_Object_Part
1964 */ 1992 */
1965EAPI void edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, const char * part, int *x, int *y, int *w, int *h); 1993EAPI void edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, const char * part, int *x, int *y, int *w, int *h);
1966 1994
@@ -1974,7 +2002,7 @@ EAPI void edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, cons
1974 * 2002 *
1975 * @since 1.18.0 2003 * @since 1.18.0
1976 * 2004 *
1977 * @ingroup Edje_Object 2005 * @ingroup Edje_Object_Part
1978 */ 2006 */
1979EAPI Eina_Bool edje_object_part_text_hide_visible_password(Evas_Object *obj, const char *part); 2007EAPI Eina_Bool edje_object_part_text_hide_visible_password(Evas_Object *obj, const char *part);
1980 2008
@@ -1987,7 +2015,7 @@ EAPI Eina_Bool edje_object_part_text_hide_visible_password(Evas_Object *obj, con
1987 * 2015 *
1988 * @return @c true if the cursor points to a format, @c false otherwise. 2016 * @return @c true if the cursor points to a format, @c false otherwise.
1989 * 2017 *
1990 * @ingroup Edje_Object 2018 * @ingroup Edje_Object_Part
1991 */ 2019 */
1992EAPI Eina_Bool edje_object_part_text_cursor_is_format_get(const Evas_Object *obj, const char * part, Edje_Cursor cur); 2020EAPI Eina_Bool edje_object_part_text_cursor_is_format_get(const Evas_Object *obj, const char * part, Edje_Cursor cur);
1993 2021
@@ -2001,7 +2029,7 @@ EAPI Eina_Bool edje_object_part_text_cursor_is_format_get(const Evas_Object *obj
2001 * @return @c true if the cursor points to a visible format, @c false 2029 * @return @c true if the cursor points to a visible format, @c false
2002 * otherwise. 2030 * otherwise.
2003 * 2031 *
2004 * @ingroup Edje_Object 2032 * @ingroup Edje_Object_Part
2005 */ 2033 */
2006EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char * part, Edje_Cursor cur); 2034EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char * part, Edje_Cursor cur);
2007 2035
@@ -2016,7 +2044,7 @@ EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Obj
2016 * @return The list of anchor rects (const Evas_Textblock_Rectangle *), do not 2044 * @return The list of anchor rects (const Evas_Textblock_Rectangle *), do not
2017 * modify! Geometry is relative to entry part. 2045 * modify! Geometry is relative to entry part.
2018 * 2046 *
2019 * @ingroup Edje_Object 2047 * @ingroup Edje_Object_Part
2020 */ 2048 */
2021EAPI const Eina_List *edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char * part, const char * anchor); 2049EAPI const Eina_List *edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char * part, const char * anchor);
2022 2050
@@ -2029,7 +2057,7 @@ EAPI const Eina_List *edje_object_part_text_anchor_geometry_get(const Evas_Objec
2029 * 2057 *
2030 * @return The list of anchors (const char *), do not modify! 2058 * @return The list of anchors (const char *), do not modify!
2031 * 2059 *
2032 * @ingroup Edje_Object 2060 * @ingroup Edje_Object_Part
2033 */ 2061 */
2034EAPI const Eina_List *edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char * part); 2062EAPI const Eina_List *edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char * part);
2035 2063
@@ -2044,7 +2072,7 @@ EAPI const Eina_List *edje_object_part_text_anchor_list_get(const Evas_Object *o
2044 * 2072 *
2045 * @since 1.2.0 2073 * @since 1.2.0
2046 * 2074 *
2047 * @ingroup Edje_Object 2075 * @ingroup Edje_Object_Part
2048 */ 2076 */
2049EAPI const char *edje_object_part_text_style_user_peek(const Evas_Object *obj, const char *part); 2077EAPI const char *edje_object_part_text_style_user_peek(const Evas_Object *obj, const char *part);
2050 2078
@@ -2058,7 +2086,7 @@ EAPI const char *edje_object_part_text_style_user_peek(const Evas_Object *obj, c
2058 * 2086 *
2059 * @since 1.2.0 2087 * @since 1.2.0
2060 * 2088 *
2061 * @ingroup Edje_Object 2089 * @ingroup Edje_Object_Part
2062 */ 2090 */
2063EAPI void edje_object_part_text_style_user_push(Evas_Object *obj, const char *part, const char *style); 2091EAPI void edje_object_part_text_style_user_push(Evas_Object *obj, const char *part, const char *style);
2064 2092
@@ -2069,7 +2097,7 @@ EAPI void edje_object_part_text_style_user_push(Evas_Object *obj, const char *pa
2069 * 2097 *
2070 * @since 1.2.0 2098 * @since 1.2.0
2071 * 2099 *
2072 * @ingroup Edje_Object 2100 * @ingroup Edje_Object_Part
2073 */ 2101 */
2074EAPI void edje_object_part_text_style_user_pop(Evas_Object *obj, const char *part); 2102EAPI void edje_object_part_text_style_user_pop(Evas_Object *obj, const char *part);
2075 2103
@@ -2087,7 +2115,7 @@ EAPI void edje_object_part_text_style_user_pop(Evas_Object *obj, const char *par
2087 * 2115 *
2088 * @return $1 if item exists, $0 if not 2116 * @return $1 if item exists, $0 if not
2089 * 2117 *
2090 * @ingroup Edje_Object 2118 * @ingroup Edje_Object_Part
2091 */ 2119 */
2092EAPI Eina_Bool edje_object_part_text_item_geometry_get(const Evas_Object *obj, const char * part, const char * item, int *cx, int *cy, int *cw, int *ch); 2120EAPI Eina_Bool edje_object_part_text_item_geometry_get(const Evas_Object *obj, const char * part, const char * item, int *cx, int *cy, int *cw, int *ch);
2093 2121
@@ -2100,7 +2128,7 @@ EAPI Eina_Bool edje_object_part_text_item_geometry_get(const Evas_Object *obj, c
2100 * 2128 *
2101 * @return The list of items (const char *), do not modify! 2129 * @return The list of items (const char *), do not modify!
2102 * 2130 *
2103 * @ingroup Edje_Object 2131 * @ingroup Edje_Object_Part
2104 */ 2132 */
2105EAPI const Eina_List *edje_object_part_text_item_list_get(const Evas_Object *obj, const char * part); 2133EAPI const Eina_List *edje_object_part_text_item_list_get(const Evas_Object *obj, const char * part);
2106 2134
@@ -2135,7 +2163,7 @@ EAPI const Eina_List *edje_object_part_text_item_list_get(const Evas_Object *obj
2135 * @param[in] func The callback function that will act as filter 2163 * @param[in] func The callback function that will act as filter
2136 * @param[in] data User provided data to pass to the filter function 2164 * @param[in] data User provided data to pass to the filter function
2137 * 2165 *
2138 * @ingroup Edje_Object 2166 * @ingroup Edje_Object_Group
2139 */ 2167 */
2140EAPI void edje_object_text_insert_filter_callback_add(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data); 2168EAPI void edje_object_text_insert_filter_callback_add(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
2141 2169
@@ -2153,7 +2181,7 @@ EAPI void edje_object_text_insert_filter_callback_add(Evas_Object *obj, const ch
2153 * 2181 *
2154 * @return The user data pointer if successful, or @c null otherwise 2182 * @return The user data pointer if successful, or @c null otherwise
2155 * 2183 *
2156 * @ingroup Edje_Object 2184 * @ingroup Edje_Object_Group
2157 */ 2185 */
2158EAPI void *edje_object_text_insert_filter_callback_del(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func); 2186EAPI void *edje_object_text_insert_filter_callback_del(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func);
2159 2187
@@ -2172,7 +2200,7 @@ EAPI void *edje_object_text_insert_filter_callback_del(Evas_Object *obj, const c
2172 * 2200 *
2173 * @return The same data pointer if successful, or @c null otherwise 2201 * @return The same data pointer if successful, or @c null otherwise
2174 * 2202 *
2175 * @ingroup Edje_Object 2203 * @ingroup Edje_Object_Group
2176 */ 2204 */
2177EAPI void *edje_object_text_insert_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data); 2205EAPI void *edje_object_text_insert_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
2178 2206
@@ -2205,7 +2233,7 @@ EAPI void *edje_object_text_insert_filter_callback_del_full(Evas_Object *obj, co
2205 * 2233 *
2206 * @since 1.2.0 2234 * @since 1.2.0
2207 * 2235 *
2208 * @ingroup Edje_Object 2236 * @ingroup Edje_Object_Group
2209 */ 2237 */
2210EAPI void edje_object_text_markup_filter_callback_add(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data); 2238EAPI void edje_object_text_markup_filter_callback_add(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data);
2211 2239
@@ -2225,7 +2253,7 @@ EAPI void edje_object_text_markup_filter_callback_add(Evas_Object *obj, const ch
2225 * 2253 *
2226 * @since 1.2.0 2254 * @since 1.2.0
2227 * 2255 *
2228 * @ingroup Edje_Object 2256 * @ingroup Edje_Object_Group
2229 */ 2257 */
2230EAPI void *edje_object_text_markup_filter_callback_del(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func); 2258EAPI void *edje_object_text_markup_filter_callback_del(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func);
2231 2259
@@ -2247,7 +2275,7 @@ EAPI void *edje_object_text_markup_filter_callback_del(Evas_Object *obj, const c
2247 * 2275 *
2248 * @since 1.2.0 2276 * @since 1.2.0
2249 * 2277 *
2250 * @ingroup Edje_Object 2278 * @ingroup Edje_Object_Group
2251 */ 2279 */
2252EAPI void *edje_object_text_markup_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data); 2280EAPI void *edje_object_text_markup_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data);
2253 2281
@@ -2262,7 +2290,7 @@ EAPI void *edje_object_text_markup_filter_callback_del_full(Evas_Object *obj, co
2262 * 2290 *
2263 * @since 1.2.0 2291 * @since 1.2.0
2264 * 2292 *
2265 * @ingroup Edje_Object 2293 * @ingroup Edje_Object_Part
2266 */ 2294 */
2267EAPI void edje_object_part_text_user_insert(const Evas_Object *obj, const char *part, const char *text); 2295EAPI void edje_object_part_text_user_insert(const Evas_Object *obj, const char *part, const char *text);
2268 2296
@@ -2277,7 +2305,7 @@ EAPI void edje_object_part_text_user_insert(const Evas_Object *obj, const char *
2277 * 2305 *
2278 * @since 1.1 2306 * @since 1.1
2279 * 2307 *
2280 * @ingroup Edje_Object 2308 * @ingroup Edje_Object_Part
2281 */ 2309 */
2282EAPI void edje_object_part_text_append(Evas_Object *obj, const char *part, const char *text); 2310EAPI void edje_object_part_text_append(Evas_Object *obj, const char *part, const char *text);
2283 2311
@@ -2295,7 +2323,7 @@ EAPI void edje_object_part_text_append(Evas_Object *obj, const char *part, const
2295 * 2323 *
2296 * @since 1.2 2324 * @since 1.2
2297 * 2325 *
2298 * @ingroup Edje_Object 2326 * @ingroup Edje_Object_Part
2299 */ 2327 */
2300EAPI Eina_Bool edje_object_part_text_escaped_set(Evas_Object *obj, const char *part, const char *text); 2328EAPI Eina_Bool edje_object_part_text_escaped_set(Evas_Object *obj, const char *part, const char *text);
2301 2329
@@ -2313,7 +2341,7 @@ EAPI Eina_Bool edje_object_part_text_escaped_set(Evas_Object *obj, const char *p
2313 * 2341 *
2314 * @return @c true on success, @c false otherwise 2342 * @return @c true on success, @c false otherwise
2315 * 2343 *
2316 * @ingroup Edje_Object 2344 * @ingroup Edje_Object_Part
2317 */ 2345 */
2318EAPI Eina_Bool edje_object_part_text_unescaped_set(Evas_Object *obj, const char * part, const char *text_to_escape); 2346EAPI Eina_Bool edje_object_part_text_unescaped_set(Evas_Object *obj, const char * part, const char *text_to_escape);
2319 2347
@@ -2330,7 +2358,7 @@ EAPI Eina_Bool edje_object_part_text_unescaped_set(Evas_Object *obj, const char
2330 * 2358 *
2331 * @return The text string 2359 * @return The text string
2332 * 2360 *
2333 * @ingroup Edje_Object 2361 * @ingroup Edje_Object_Part
2334 */ 2362 */
2335EAPI char *edje_object_part_text_unescaped_get(const Evas_Object *obj, const char * part); 2363EAPI char *edje_object_part_text_unescaped_get(const Evas_Object *obj, const char * part);
2336 2364
@@ -2343,7 +2371,7 @@ EAPI char *edje_object_part_text_unescaped_get(const Evas_Object *obj, const cha
2343 * @param[in] part The part name 2371 * @param[in] part The part name
2344 * @param[in] text The text string 2372 * @param[in] text The text string
2345 * 2373 *
2346 * @ingroup Edje_Object 2374 * @ingroup Edje_Object_Part
2347 */ 2375 */
2348EAPI void edje_object_part_text_insert(Evas_Object *obj, const char *part, const char *text); 2376EAPI void edje_object_part_text_insert(Evas_Object *obj, const char *part, const char *text);
2349 2377
@@ -2355,7 +2383,7 @@ EAPI void edje_object_part_text_insert(Evas_Object *obj, const char *part, const
2355 * 2383 *
2356 * @since 1.1.0 2384 * @since 1.1.0
2357 * 2385 *
2358 * @ingroup Edje_Object 2386 * @ingroup Edje_Object_Part
2359 */ 2387 */
2360EAPI void edje_object_part_text_autocapital_type_set(Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type); 2388EAPI void edje_object_part_text_autocapital_type_set(Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type);
2361 2389
@@ -2368,7 +2396,7 @@ EAPI void edje_object_part_text_autocapital_type_set(Evas_Object *obj, const cha
2368 * 2396 *
2369 * @since 1.1.0 2397 * @since 1.1.0
2370 * 2398 *
2371 * @ingroup Edje_Object 2399 * @ingroup Edje_Object_Part
2372 */ 2400 */
2373EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get(const Evas_Object *obj, const char *part); 2401EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get(const Evas_Object *obj, const char *part);
2374 2402
@@ -2380,7 +2408,7 @@ EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get(const
2380 * 2408 *
2381 * @since 1.2.0 2409 * @since 1.2.0
2382 * 2410 *
2383 * @ingroup Edje_Object 2411 * @ingroup Edje_Object_Part
2384 */ 2412 */
2385EAPI void edje_object_part_text_prediction_allow_set(Evas_Object *obj, const char *part, Eina_Bool prediction); 2413EAPI void edje_object_part_text_prediction_allow_set(Evas_Object *obj, const char *part, Eina_Bool prediction);
2386 2414
@@ -2393,7 +2421,7 @@ EAPI void edje_object_part_text_prediction_allow_set(Evas_Object *obj, const cha
2393 * 2421 *
2394 * @since 1.2.0 2422 * @since 1.2.0
2395 * 2423 *
2396 * @ingroup Edje_Object 2424 * @ingroup Edje_Object_Part
2397 */ 2425 */
2398EAPI Eina_Bool edje_object_part_text_prediction_allow_get(const Evas_Object *obj, const char *part); 2426EAPI Eina_Bool edje_object_part_text_prediction_allow_get(const Evas_Object *obj, const char *part);
2399 2427
@@ -2409,7 +2437,7 @@ EAPI Eina_Bool edje_object_part_text_prediction_allow_get(const Evas_Object *obj
2409 * 2437 *
2410 * @since 1.2.0 2438 * @since 1.2.0
2411 * 2439 *
2412 * @ingroup Edje_Object 2440 * @ingroup Edje_Object_Part
2413 */ 2441 */
2414EAPI void *edje_object_part_text_imf_context_get(const Evas_Object *obj, const char *part); 2442EAPI void *edje_object_part_text_imf_context_get(const Evas_Object *obj, const char *part);
2415 2443
@@ -2423,7 +2451,7 @@ EAPI void *edje_object_part_text_imf_context_get(const Evas_Object *obj, const c
2423 * 2451 *
2424 * @since 1.2.0 2452 * @since 1.2.0
2425 * 2453 *
2426 * @ingroup Edje_Object 2454 * @ingroup Edje_Object_Part
2427 */ 2455 */
2428EAPI void edje_object_part_text_imf_context_reset(const Evas_Object *obj, const char *part); 2456EAPI void edje_object_part_text_imf_context_reset(const Evas_Object *obj, const char *part);
2429 2457
@@ -2436,7 +2464,7 @@ EAPI void edje_object_part_text_imf_context_reset(const Evas_Object *obj, const
2436 * 2464 *
2437 * @since 1.12.0 2465 * @since 1.12.0
2438 * 2466 *
2439 * @ingroup Edje_Object 2467 * @ingroup Edje_Object_Part
2440 */ 2468 */
2441EAPI void edje_object_part_text_input_hint_set(Evas_Object *obj, const char *part, Edje_Input_Hints input_hints); 2469EAPI void edje_object_part_text_input_hint_set(Evas_Object *obj, const char *part, Edje_Input_Hints input_hints);
2442 2470
@@ -2449,7 +2477,7 @@ EAPI void edje_object_part_text_input_hint_set(Evas_Object *obj, const char *par
2449 * 2477 *
2450 * @since 1.12.0 2478 * @since 1.12.0
2451 * 2479 *
2452 * @ingroup Edje_Object 2480 * @ingroup Edje_Object_Part
2453 */ 2481 */
2454EAPI Edje_Input_Hints edje_object_part_text_input_hint_get(const Evas_Object *obj, const char *part); 2482EAPI Edje_Input_Hints edje_object_part_text_input_hint_get(const Evas_Object *obj, const char *part);
2455 2483
@@ -2465,7 +2493,7 @@ EAPI Edje_Input_Hints edje_object_part_text_input_hint_get(const Evas_Object *ob
2465 * 2493 *
2466 * @since 1.2.0 2494 * @since 1.2.0
2467 * 2495 *
2468 * @ingroup Edje_Object 2496 * @ingroup Edje_Object_Part
2469 */ 2497 */
2470EAPI void edje_object_part_text_input_panel_show(const Evas_Object *obj, const char *part); 2498EAPI void edje_object_part_text_input_panel_show(const Evas_Object *obj, const char *part);
2471 2499
@@ -2481,7 +2509,7 @@ EAPI void edje_object_part_text_input_panel_show(const Evas_Object *obj, const c
2481 * 2509 *
2482 * @since 1.2.0 2510 * @since 1.2.0
2483 * 2511 *
2484 * @ingroup Edje_Object 2512 * @ingroup Edje_Object_Part
2485 */ 2513 */
2486EAPI void edje_object_part_text_input_panel_hide(const Evas_Object *obj, const char *part); 2514EAPI void edje_object_part_text_input_panel_hide(const Evas_Object *obj, const char *part);
2487 2515
@@ -2498,7 +2526,7 @@ EAPI void edje_object_part_text_input_panel_hide(const Evas_Object *obj, const c
2498 * 2526 *
2499 * @since 1.2.0 2527 * @since 1.2.0
2500 * 2528 *
2501 * @ingroup Edje_Object 2529 * @ingroup Edje_Object_Part
2502 */ 2530 */
2503EAPI void edje_object_part_text_input_panel_imdata_set(Evas_Object *obj, const char *part, const void *data, int len); 2531EAPI void edje_object_part_text_input_panel_imdata_set(Evas_Object *obj, const char *part, const void *data, int len);
2504 2532
@@ -2513,7 +2541,7 @@ EAPI void edje_object_part_text_input_panel_imdata_set(Evas_Object *obj, const c
2513 * 2541 *
2514 * @since 1.2.0 2542 * @since 1.2.0
2515 * 2543 *
2516 * @ingroup Edje_Object 2544 * @ingroup Edje_Object_Part
2517 */ 2545 */
2518EAPI void edje_object_part_text_input_panel_imdata_get(const Evas_Object *obj, const char *part, void *data, int *len); 2546EAPI void edje_object_part_text_input_panel_imdata_get(const Evas_Object *obj, const char *part, void *data, int *len);
2519 2547
@@ -2530,7 +2558,7 @@ EAPI void edje_object_part_text_input_panel_imdata_get(const Evas_Object *obj, c
2530 * 2558 *
2531 * @since 1.1 2559 * @since 1.1
2532 * 2560 *
2533 * @ingroup Edje_Object 2561 * @ingroup Edje_Object_Part
2534 */ 2562 */
2535EAPI void edje_object_part_text_input_panel_layout_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout); 2563EAPI void edje_object_part_text_input_panel_layout_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout);
2536 2564
@@ -2545,7 +2573,7 @@ EAPI void edje_object_part_text_input_panel_layout_set(Evas_Object *obj, const c
2545 * 2573 *
2546 * @since 1.1 2574 * @since 1.1
2547 * 2575 *
2548 * @ingroup Edje_Object 2576 * @ingroup Edje_Object_Part
2549 */ 2577 */
2550EAPI Edje_Input_Panel_Layout edje_object_part_text_input_panel_layout_get(const Evas_Object *obj, const char *part); 2578EAPI Edje_Input_Panel_Layout edje_object_part_text_input_panel_layout_get(const Evas_Object *obj, const char *part);
2551 2579
@@ -2559,7 +2587,7 @@ EAPI Edje_Input_Panel_Layout edje_object_part_text_input_panel_layout_get(const
2559 * 2587 *
2560 * @since 1.2.0 2588 * @since 1.2.0
2561 * 2589 *
2562 * @ingroup Edje_Object 2590 * @ingroup Edje_Object_Part
2563 */ 2591 */
2564EAPI void edje_object_part_text_input_panel_language_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Lang lang); 2592EAPI void edje_object_part_text_input_panel_language_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Lang lang);
2565 2593
@@ -2575,7 +2603,7 @@ EAPI void edje_object_part_text_input_panel_language_set(Evas_Object *obj, const
2575 * 2603 *
2576 * @since 1.2.0 2604 * @since 1.2.0
2577 * 2605 *
2578 * @ingroup Edje_Object 2606 * @ingroup Edje_Object_Part
2579 */ 2607 */
2580EAPI Edje_Input_Panel_Lang edje_object_part_text_input_panel_language_get(const Evas_Object *obj, const char *part); 2608EAPI Edje_Input_Panel_Lang edje_object_part_text_input_panel_language_get(const Evas_Object *obj, const char *part);
2581 2609
@@ -2592,7 +2620,7 @@ EAPI Edje_Input_Panel_Lang edje_object_part_text_input_panel_language_get(const
2592 * 2620 *
2593 * @since 1.8 2621 * @since 1.8
2594 * 2622 *
2595 * @ingroup Edje_Object 2623 * @ingroup Edje_Object_Part
2596 */ 2624 */
2597EAPI void edje_object_part_text_input_panel_layout_variation_set(Evas_Object *obj, const char *part, int variation); 2625EAPI void edje_object_part_text_input_panel_layout_variation_set(Evas_Object *obj, const char *part, int variation);
2598 2626
@@ -2607,7 +2635,7 @@ EAPI void edje_object_part_text_input_panel_layout_variation_set(Evas_Object *ob
2607 * 2635 *
2608 * @since 1.8 2636 * @since 1.8
2609 * 2637 *
2610 * @ingroup Edje_Object 2638 * @ingroup Edje_Object_Part
2611 */ 2639 */
2612EAPI int edje_object_part_text_input_panel_layout_variation_get(const Evas_Object *obj, const char *part); 2640EAPI int edje_object_part_text_input_panel_layout_variation_get(const Evas_Object *obj, const char *part);
2613 2641
@@ -2620,7 +2648,7 @@ EAPI int edje_object_part_text_input_panel_layout_variation_get(const Evas_Objec
2620 * 2648 *
2621 * @since 1.1.0 2649 * @since 1.1.0
2622 * 2650 *
2623 * @ingroup Edje_Object 2651 * @ingroup Edje_Object_Part
2624 */ 2652 */
2625EAPI void edje_object_part_text_input_panel_enabled_set(Evas_Object *obj, const char *part, Eina_Bool enabled); 2653EAPI void edje_object_part_text_input_panel_enabled_set(Evas_Object *obj, const char *part, Eina_Bool enabled);
2626 2654
@@ -2635,7 +2663,7 @@ EAPI void edje_object_part_text_input_panel_enabled_set(Evas_Object *obj, const
2635 * 2663 *
2636 * @since 1.1.0 2664 * @since 1.1.0
2637 * 2665 *
2638 * @ingroup Edje_Object 2666 * @ingroup Edje_Object_Part
2639 */ 2667 */
2640EAPI Eina_Bool edje_object_part_text_input_panel_enabled_get(const Evas_Object *obj, const char *part); 2668EAPI Eina_Bool edje_object_part_text_input_panel_enabled_get(const Evas_Object *obj, const char *part);
2641 2669
@@ -2647,7 +2675,7 @@ EAPI Eina_Bool edje_object_part_text_input_panel_enabled_get(const Evas_Object *
2647 * 2675 *
2648 * @since 1.2.0 2676 * @since 1.2.0
2649 * 2677 *
2650 * @ingroup Edje_Object 2678 * @ingroup Edje_Object_Part
2651 */ 2679 */
2652EAPI void edje_object_part_text_input_panel_return_key_disabled_set(Evas_Object *obj, const char *part, Eina_Bool disabled); 2680EAPI void edje_object_part_text_input_panel_return_key_disabled_set(Evas_Object *obj, const char *part, Eina_Bool disabled);
2653 2681
@@ -2661,7 +2689,7 @@ EAPI void edje_object_part_text_input_panel_return_key_disabled_set(Evas_Object
2661 * 2689 *
2662 * @since 1.2.0 2690 * @since 1.2.0
2663 * 2691 *
2664 * @ingroup Edje_Object 2692 * @ingroup Edje_Object_Part
2665 */ 2693 */
2666EAPI Eina_Bool edje_object_part_text_input_panel_return_key_disabled_get(const Evas_Object *obj, const char *part); 2694EAPI Eina_Bool edje_object_part_text_input_panel_return_key_disabled_get(const Evas_Object *obj, const char *part);
2667 2695
@@ -2676,7 +2704,7 @@ EAPI Eina_Bool edje_object_part_text_input_panel_return_key_disabled_get(const E
2676 * 2704 *
2677 * @since 1.2.0 2705 * @since 1.2.0
2678 * 2706 *
2679 * @ingroup Edje_Object 2707 * @ingroup Edje_Object_Part
2680 */ 2708 */
2681EAPI void edje_object_part_text_input_panel_return_key_type_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Return_Key_Type return_key_type); 2709EAPI void edje_object_part_text_input_panel_return_key_type_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Return_Key_Type return_key_type);
2682 2710
@@ -2692,12 +2720,12 @@ EAPI void edje_object_part_text_input_panel_return_key_type_set(Evas_Object *obj
2692 * 2720 *
2693 * @since 1.2.0 2721 * @since 1.2.0
2694 * 2722 *
2695 * @ingroup Edje_Object 2723 * @ingroup Edje_Object_Part
2696 */ 2724 */
2697EAPI Edje_Input_Panel_Return_Key_Type edje_object_part_text_input_panel_return_key_type_get(const Evas_Object *obj, const char *part); 2725EAPI Edje_Input_Panel_Return_Key_Type edje_object_part_text_input_panel_return_key_type_get(const Evas_Object *obj, const char *part);
2698 2726
2699/** 2727/**
2700 * @brief Sets the attribute to show the input panel in case of only an user's 2728 * @brief Sets the attribute to show the input panel in case of only a user's
2701 * explicit Mouse Up event. It doesn't request to show the input panel even 2729 * explicit Mouse Up event. It doesn't request to show the input panel even
2702 * though it has focus. 2730 * though it has focus.
2703 * 2731 *
@@ -2707,12 +2735,12 @@ EAPI Edje_Input_Panel_Return_Key_Type edje_object_part_text_input_panel_return_k
2707 * 2735 *
2708 * @since 1.9.0 2736 * @since 1.9.0
2709 * 2737 *
2710 * @ingroup Edje_Object 2738 * @ingroup Edje_Object_Part
2711 */ 2739 */
2712EAPI void edje_object_part_text_input_panel_show_on_demand_set(Evas_Object *obj, const char *part, Eina_Bool ondemand); 2740EAPI void edje_object_part_text_input_panel_show_on_demand_set(Evas_Object *obj, const char *part, Eina_Bool ondemand);
2713 2741
2714/** 2742/**
2715 * @brief Gets the attribute to show the input panel in case of only an user's 2743 * @brief Gets the attribute to show the input panel in case of only a user's
2716 * explicit Mouse Up event. 2744 * explicit Mouse Up event.
2717 * 2745 *
2718 * @param[in] part The part name 2746 * @param[in] part The part name
@@ -2722,7 +2750,7 @@ EAPI void edje_object_part_text_input_panel_show_on_demand_set(Evas_Object *obj,
2722 * 2750 *
2723 * @since 1.9.0 2751 * @since 1.9.0
2724 * 2752 *
2725 * @ingroup Edje_Object 2753 * @ingroup Edje_Object_Part