aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-list.c
diff options
context:
space:
mode:
Diffstat (limited to 'e-util/e-list.c')
-rw-r--r--e-util/e-list.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/e-util/e-list.c b/e-util/e-list.c
index 7ef7ce2351..f1b190b16a 100644
--- a/e-util/e-list.c
+++ b/e-util/e-list.c
@@ -74,17 +74,23 @@ e_list_init (EList *list)
}
EList *
-e_list_new (EListCopyFunc copy, EListFreeFunc free, void *closure)
+e_list_new (EListCopyFunc copy, EListFreeFunc free, void *closure)
{
EList *list = g_object_new (E_TYPE_LIST, NULL);
+ e_list_construct (list, copy, free, closure);
+ return list;
+}
+
+void
+e_list_construct (EList *list, EListCopyFunc copy, EListFreeFunc free, void *closure)
+{
list->copy = copy;
list->free = free;
list->closure = closure;
- return list;
}
EList *
-e_list_duplicate (EList *old)
+e_list_duplicate (EList *old)
{
EList *list = g_object_new (E_TYPE_LIST, NULL);
@@ -116,7 +122,7 @@ e_list_length (EList *list)
}
void
-e_list_append (EList *list, const void *data)
+e_list_append (EList *list, const void *data)
{
e_list_invalidate_iterators(list, NULL);
if (list->copy)
@@ -126,6 +132,15 @@ e_list_append (EList *list, const void *data)
}
void
+e_list_remove (EList *list, const void *data)
+{
+ GList *link;
+ link = g_list_find (list->list, data);
+ if (link)
+ e_list_remove_link(list, link);
+}
+
+void
e_list_invalidate_iterators (EList *list, EIterator *skip)
{
GList *iterators = list->iterators;