[libgee] Add default implementation of AbstractQueue.drain



commit 6b857c41e4f5a8c6b71bdacfa168b4f30606a5ae
Author: Maciej Piechotka <uzytkownik2 gmail com>
Date:   Sat Jan 7 05:14:28 2012 +0100

    Add default implementation of AbstractQueue.drain

 gee/abstractqueue.vala |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)
---
diff --git a/gee/abstractqueue.vala b/gee/abstractqueue.vala
index ce3fc3d..8d80f32 100644
--- a/gee/abstractqueue.vala
+++ b/gee/abstractqueue.vala
@@ -31,6 +31,13 @@ public abstract class Gee.AbstractQueue<G> : Gee.AbstractCollection<G>, Queue<G>
 	/**
 	 * { inheritDoc}
 	 */
+	public override bool add (G item) {
+		return offer (item);
+	}
+
+	/**
+	 * { inheritDoc}
+	 */
 	public abstract int capacity { get; }
 
 	/**
@@ -61,5 +68,13 @@ public abstract class Gee.AbstractQueue<G> : Gee.AbstractCollection<G>, Queue<G>
 	/**
 	 * { inheritDoc}
 	 */
-	public abstract int drain (Collection<G> recipient, int amount = -1);
+	public virtual int drain (Collection<G> recipient, int amount = -1) {
+		G? item = null;
+		int drained = 0;
+		while((amount == -1 || --amount >= 0) && (item = poll ()) != null) {
+			recipient.add(item);
+			drained++;
+		}
+		return drained;
+	}
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]