From 734a0b78ea5508f243caf18a50e36ac8918e11db Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Tue, 13 Apr 2010 11:58:51 +0200 Subject: Create a todo deque class, and use it. --- org/madore/damlengine/TodoDeque.java | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 org/madore/damlengine/TodoDeque.java (limited to 'org/madore/damlengine/TodoDeque.java') 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 todoDeque = new LinkedList(); + + { + todoDeque = new LinkedList(); + } + + public static void registerAtEnd(TodoItem it) { + todoDeque.addLast(it); + } + + public static void registerAtEnd(Collection them) { + todoDeque.addAll(them); + } + + public static void registerAtStart(TodoItem it) { + todoDeque.addFirst(it); + } + + public static void registerAtStart(Collection 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() ) + ; + } + +} -- cgit v1.2.3