summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/TodoDeque.java
diff options
context:
space:
mode:
authorDavid A. Madore <david@procyon.(none)>2010-04-13 11:58:51 +0200
committerDavid A. Madore <david@procyon.(none)>2010-04-13 11:58:51 +0200
commit734a0b78ea5508f243caf18a50e36ac8918e11db (patch)
tree8198107c3f0e353b263ff4d84735ca0b905a88dc /org/madore/damlengine/TodoDeque.java
parent45fa82f3f6b98f3b6f81e8e753d8e7341dee14b5 (diff)
downloaddamlengine-734a0b78ea5508f243caf18a50e36ac8918e11db.tar.gz
damlengine-734a0b78ea5508f243caf18a50e36ac8918e11db.tar.bz2
damlengine-734a0b78ea5508f243caf18a50e36ac8918e11db.zip
Create a todo deque class, and use it.
Diffstat (limited to 'org/madore/damlengine/TodoDeque.java')
-rw-r--r--org/madore/damlengine/TodoDeque.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/org/madore/damlengine/TodoDeque.java b/org/madore/damlengine/TodoDeque.java
new file mode 100644
index 0000000..e030e29
--- /dev/null
+++ b/org/madore/damlengine/TodoDeque.java
@@ -0,0 +1,53 @@
+package org.madore.damlengine;
+
+import java.util.Collection;
+import java.util.LinkedList;
+
+public final class TodoDeque {
+
+ // FIXME: having everything static is ugly as hell... maybe this
+ // should be instantiatable?
+
+ private TodoDeque() { } // Forbid instantiation
+
+ private static LinkedList<TodoItem> todoDeque = new LinkedList<TodoItem>();
+
+ {
+ todoDeque = new LinkedList<TodoItem>();
+ }
+
+ public static void registerAtEnd(TodoItem it) {
+ todoDeque.addLast(it);
+ }
+
+ public static void registerAtEnd(Collection<TodoItem> them) {
+ todoDeque.addAll(them);
+ }
+
+ public static void registerAtStart(TodoItem it) {
+ todoDeque.addFirst(it);
+ }
+
+ public static void registerAtStart(Collection<TodoItem> them) {
+ todoDeque.addAll(0, them);
+ }
+
+ public static TodoItem removeNext() {
+ return todoDeque.poll();
+ }
+
+ public static boolean dispatchOne() {
+ TodoItem it = removeNext();
+ if ( it != null ) {
+ it.dispatch();
+ return true;
+ } else
+ return false;
+ }
+
+ public static void dispatchLoop() {
+ while ( dispatchOne() )
+ ;
+ }
+
+}