[evolution-data-server] Add e_queue_transfer().
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Add e_queue_transfer().
- Date: Thu, 6 Dec 2012 14:15:35 +0000 (UTC)
commit 3cf40f58a5bb95a4e249ba353eac90caeec1ff14
Author: Matthew Barnes <mbarnes redhat com>
Date: Thu Dec 6 09:11:03 2012 -0500
Add e_queue_transfer().
Transfers the contents of one GQueue on to the tail of another GQueue.
Mostly because I'm tired of writing "while" loops, and this does it more
efficiently anyway.
.../libedataserver/libedataserver-sections.txt | 1 +
libedataserver/e-data-server-util.c | 26 ++++++++++++++++++++
libedataserver/e-data-server-util.h | 5 +++-
3 files changed, 31 insertions(+), 1 deletions(-)
---
diff --git a/docs/reference/libedataserver/libedataserver-sections.txt b/docs/reference/libedataserver/libedataserver-sections.txt
index b39afd5..dc2e1e4 100644
--- a/docs/reference/libedataserver/libedataserver-sections.txt
+++ b/docs/reference/libedataserver/libedataserver-sections.txt
@@ -1143,6 +1143,7 @@ e_util_copy_object_slist
e_util_free_string_slist
e_util_free_object_slist
e_util_free_nullable_object_slist
+e_queue_transfer
e_file_recursive_delete_sync
e_file_recursive_delete
e_file_recursive_delete_finish
diff --git a/libedataserver/e-data-server-util.c b/libedataserver/e-data-server-util.c
index ab252b5..06508ca 100644
--- a/libedataserver/e-data-server-util.c
+++ b/libedataserver/e-data-server-util.c
@@ -1044,6 +1044,32 @@ e_util_free_nullable_object_slist (GSList *objects)
g_slist_free (objects);
}
+/**
+ * e_queue_transfer:
+ * @src_queue: a source #GQueue
+ * @dst_queue: a destination #GQueue
+ *
+ * Transfers the contents of @src_queue to the tail of @dst_queue.
+ * When the operation is complete, @src_queue will be empty.
+ *
+ * Since: 3.8
+ **/
+void
+e_queue_transfer (GQueue *src_queue,
+ GQueue *dst_queue)
+{
+ g_return_if_fail (src_queue != NULL);
+ g_return_if_fail (dst_queue != NULL);
+
+ dst_queue->head = g_list_concat (dst_queue->head, src_queue->head);
+ dst_queue->tail = g_list_last (dst_queue->head);
+ dst_queue->length += src_queue->length;
+
+ src_queue->head = NULL;
+ src_queue->tail = NULL;
+ src_queue->length = 0;
+}
+
/* Helper for e_file_recursive_delete() */
static void
file_recursive_delete_thread (GSimpleAsyncResult *simple,
diff --git a/libedataserver/e-data-server-util.h b/libedataserver/e-data-server-util.h
index 2687e6e..ab33083 100644
--- a/libedataserver/e-data-server-util.h
+++ b/libedataserver/e-data-server-util.h
@@ -77,7 +77,10 @@ GSList * e_util_copy_string_slist (GSList *copy_to, const GSList *strings);
GSList * e_util_copy_object_slist (GSList *copy_to, const GSList *objects);
void e_util_free_string_slist (GSList *strings);
void e_util_free_object_slist (GSList *objects);
-void e_util_free_nullable_object_slist (GSList *objects);
+void e_util_free_nullable_object_slist
+ (GSList *objects);
+void e_queue_transfer (GQueue *src_queue,
+ GQueue *dst_queue);
gboolean e_file_recursive_delete_sync (GFile *file,
GCancellable *cancellable,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]