package org.madore.damlengine; import java.util.Collection; import java.util.LinkedList; public final class TodoDeque { private LinkedList deque; public TodoDeque() { deque = new LinkedList(); } public void registerAtEnd(TodoItem it) { it.ownerDeque = this; deque.addLast(it); } public void registerAtEnd(Collection them) { for ( TodoItem it : them ) it.ownerDeque = this; deque.addAll(them); } public void registerAtStart(TodoItem it) { it.ownerDeque = this; deque.addFirst(it); } public void registerAtStart(Collection them) { for ( TodoItem it : them ) it.ownerDeque = this; deque.addAll(0, them); } public TodoItem removeNext() { return deque.poll(); } public boolean dispatchOne() { TodoItem it = removeNext(); if ( it != null ) { assert(it.ownerDeque == this); it.handle(); return true; } else return false; } public void dispatchLoop() { while ( dispatchOne() ) ; } }