aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/eina/src/tests/Evas_Data.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/eina/src/tests/Evas_Data.h')
-rw-r--r--libraries/eina/src/tests/Evas_Data.h195
1 files changed, 195 insertions, 0 deletions
diff --git a/libraries/eina/src/tests/Evas_Data.h b/libraries/eina/src/tests/Evas_Data.h
new file mode 100644
index 0000000..9784892
--- /dev/null
+++ b/libraries/eina/src/tests/Evas_Data.h
@@ -0,0 +1,195 @@
1#ifndef _EVAS_DATA_H
2#define _EVAS_DATA_H
3
4#ifdef EAPI
5# undef EAPI
6#endif
7
8#ifdef _WIN32
9# ifdef EFL_EVAS_BUILD
10# ifdef DLL_EXPORT
11# define EAPI __declspec(dllexport)
12# else
13# define EAPI
14# endif /* ! DLL_EXPORT */
15# else
16# define EAPI __declspec(dllimport)
17# endif /* ! EFL_EVAS_BUILD */
18#else
19# ifdef __GNUC__
20# if __GNUC__ >= 4
21# define EAPI __attribute__ ((visibility("default")))
22# else
23# define EAPI
24# endif
25# else
26# define EAPI
27# endif
28#endif /* ! _WIN32 */
29
30/**
31 * @file
32 * @brief These routines are used for Evas data types.
33 */
34
35typedef unsigned char Evas_Bool;
36
37typedef struct _Evas_Array_Hash Evas_Array_Hash;
38typedef struct _Evas_Hash Evas_Hash; /**< A Hash table handle */
39typedef struct _Evas_List Evas_List; /**< A generic linked list node handle */
40typedef struct _Evas_Object_List Evas_Object_List;
41
42struct _Evas_Hash
43{
44 int population;
45 Evas_Object_List *buckets[256];
46};
47
48struct _Evas_List /** A linked list node */
49{
50 void *data; /**< Pointer to list element payload */
51 Evas_List *next; /**< Next member in the list */
52 Evas_List *prev; /**< Previous member in the list */
53 struct _Evas_List_Accounting *accounting; /**< Private list accounting info - don't touch */
54};
55
56struct _Evas_Object_List
57{
58 Evas_Object_List *next, *prev;
59 Evas_Object_List *last;
60};
61
62
63#ifdef __cplusplus
64extern "C" {
65#endif
66
67/*
68 * Evas Array Hash functions
69 */
70
71EAPI Evas_Array_Hash *evas_array_hash_new (void);
72EAPI void evas_array_hash_free (Evas_Array_Hash *hash);
73EAPI void evas_array_hash_add (Evas_Array_Hash *hash,
74 int key,
75 int data);
76EAPI int evas_array_hash_search (Evas_Array_Hash *hash,
77 int key);
78
79
80/*
81 * Evas Hash functions
82 */
83
84/* FIXME: add:
85 * api to add find, del members by data, size not just string and also
86 * provide hash generation functions settable by the app
87 *
88 * do we really need this? hmmm - let me think... there may be a better way
89 */
90EAPI Evas_Hash *evas_hash_add (Evas_Hash *hash,
91 const char *key,
92 const void *data);
93EAPI Evas_Hash *evas_hash_direct_add (Evas_Hash *hash,
94 const char *key,
95 const void *data);
96EAPI Evas_Hash *evas_hash_del (Evas_Hash *hash,
97 const char *key,
98 const void *data);
99EAPI void * evas_hash_find (const Evas_Hash *hash,
100 const char *key);
101EAPI void * evas_hash_modify (Evas_Hash *hash,
102 const char *key,
103 const void *data);
104EAPI int evas_hash_size (const Evas_Hash *hash);
105EAPI void evas_hash_free (Evas_Hash *hash);
106EAPI void evas_hash_foreach (const Evas_Hash *hash,
107 Evas_Bool (*func)(
108 const Evas_Hash *hash,
109 const char *
110 key,
111 void *data,
112 void *fdata),
113 const void *fdata);
114EAPI int evas_hash_alloc_error (void);
115
116
117/*
118 * Evas List functions
119 */
120
121EAPI Evas_List *evas_list_append (Evas_List *list,
122 const void *data);
123EAPI Evas_List *evas_list_prepend (Evas_List *list,
124 const void *data);
125EAPI Evas_List *evas_list_append_relative (Evas_List *list,
126 const void *data,
127 const void *relative);
128EAPI Evas_List *evas_list_append_relative_list (Evas_List *list,
129 const void *data,
130 Evas_List *relative);
131EAPI Evas_List *evas_list_prepend_relative (Evas_List *list,
132 const void *data,
133 const void *relative);
134EAPI Evas_List *evas_list_prepend_relative_list (Evas_List *list,
135 const void *data,
136 Evas_List *relative);
137EAPI Evas_List *evas_list_remove (Evas_List *list,
138 const void *data);
139EAPI Evas_List *evas_list_remove_list (Evas_List *list,
140 Evas_List *remove_list);
141EAPI Evas_List *evas_list_promote_list (Evas_List *list,
142 Evas_List *move_list);
143EAPI void * evas_list_find (const Evas_List *list,
144 const void *data);
145EAPI Evas_List *evas_list_find_list (const Evas_List *list,
146 const void *data);
147EAPI Evas_List *evas_list_free (Evas_List *list);
148EAPI Evas_List *evas_list_last (const Evas_List *list);
149EAPI Evas_List *evas_list_next (const Evas_List *list);
150EAPI Evas_List *evas_list_prev (const Evas_List *list);
151EAPI void * evas_list_data (const Evas_List *list);
152EAPI int evas_list_count (const Evas_List *list);
153EAPI void * evas_list_nth (const Evas_List *list, int n);
154EAPI Evas_List *evas_list_nth_list (const Evas_List *list, int n);
155EAPI Evas_List *evas_list_reverse (Evas_List *list);
156EAPI Evas_List *evas_list_sort (Evas_List *list,
157 int size,
158 int (*func)(void *,void *));
159EAPI int evas_list_alloc_error (void);
160
161
162/*
163 * Evas Object List functions
164 */
165
166EAPI void * evas_object_list_append (void *in_list,
167 void *in_item);
168EAPI void * evas_object_list_prepend (void *in_list,
169 void *in_item);
170EAPI void * evas_object_list_append_relative (void *in_list,
171 void *in_item,
172 void *in_relative);
173EAPI void * evas_object_list_prepend_relative (void *in_list,
174 void *in_item,
175 void *in_relative);
176EAPI void * evas_object_list_remove (void *in_list,
177 void *in_item);
178EAPI void * evas_object_list_find (void *in_list,
179 void *in_item);
180
181
182/*
183 * Evas Stringshare functions
184 */
185
186EAPI void evas_stringshare_init (void); /* not implemented */
187EAPI void evas_stringshare_shutdown (void); /* not implemented */
188EAPI const char *evas_stringshare_add (const char *str);
189EAPI void evas_stringshare_del (const char *str);
190
191#ifdef __cplusplus
192}
193#endif
194
195#endif /* _EVAS_DATA_H */