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