package lrs; /** * Represents the empty state of a mutable list LRStruct. Uses the * Singleton pattern. * @author Dung X. Nguyen Copyright 2001 - All rights reserved. * @since 10/09/01 */ class EmptyNode extends ANode { /** * Singleton Pattern. */ final static EmptyNode Singleton = new EmptyNode(); private EmptyNode() { } /** * Throws java.util.NoSuchElementException. */ LRStruct getRest(LRStruct owner) { throw new java.util.NoSuchElementException ("Empty list has no first."); } /** * Throws java.util.NoSuchElementException. */ Object getFirst(LRStruct owner) { throw new java.util.NoSuchElementException ("Empty list has no first."); } /** * Throws java.util.NoSuchElementException. */ LRStruct setRest(LRStruct tail, LRStruct owner) { throw new java.util.NoSuchElementException ("Empty list has no tail."); } /** * Throws java.util.NoSuchElementException. */ LRStruct setFirst(Object dat, LRStruct owner) { throw new java.util.NoSuchElementException ("Empty list has no first."); } /** * The owner becomes non-empty and has dat as its first element. */ LRStruct insertFront(Object dat, LRStruct owner) { return owner.setHead(new NENode(dat, new LRStruct(this))); } /** * Throws java.util.NoSuchElementException. */ Object removeFront(LRStruct owner) { throw new java.util.NoSuchElementException ("Empty list has no front."); } /** * Calls the IAlgo visitor's empty case. */ Object execute(IAlgo algo, Object inp, LRStruct owner) { return algo.emptyCase(owner, inp); } }