2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
11 #include "Evas_Data.h"
15 evas_object_list_append(void *in_list, void *in_item)
17 Evas_Object_List *l, *new_l;
18 Evas_Object_List *list;
29 if (list->last) l = list->last;
30 else for (l = list; (l) && (l->next); l = l->next);
38 evas_object_list_prepend(void *in_list, void *in_item)
40 Evas_Object_List *new_l;
41 Evas_Object_List *list;
54 new_l->last = list->last;
60 evas_object_list_append_relative(void *in_list, void *in_item, void *in_relative)
62 Evas_Object_List *list, *relative, *new_l;
66 relative = in_relative;
71 new_l->next = relative->next;
72 relative->next->prev = new_l;
74 else new_l->next = NULL;
75 relative->next = new_l;
76 new_l->prev = relative;
77 if (!new_l->next) list->last = new_l;
80 return evas_object_list_append(list, new_l);
84 evas_object_list_prepend_relative(void *in_list, void *in_item, void *in_relative)
86 Evas_Object_List *list, *relative, *new_l;
90 relative = in_relative;
93 new_l->prev = relative->prev;
94 new_l->next = relative;
95 relative->prev = new_l;
98 new_l->prev->next = new_l;
109 new_l->last = list->last;
115 return evas_object_list_prepend(list, new_l);
119 evas_object_list_remove(void *in_list, void *in_item)
121 Evas_Object_List *return_l;
122 Evas_Object_List *list, *item;
130 if (!item) return list;
132 item->next->prev = item->prev;
135 item->prev->next = item->next;
140 return_l = item->next;
142 return_l->last = list->last;
144 if (item == list->last)
145 list->last = item->prev;
152 evas_object_list_find(void *in_list, void *in_item)
155 Evas_Object_List *list, *item;
159 for (l = list; l; l = l->next)
161 if (l == item) return item;