package edu.rice.cs.dxn.QFList; /** * null list node. singleton pattern. */ class NullNode implements IState { final static NullNode singleton = new NullNode(); private NullNode() { } /** * @param owner * @return null */ public QFList getRest(QFList owner) { throw new java.util.NoSuchElementException ("Empty list has no first."); } /** * @param owner * @return null */ public Object getFirst(QFList owner) { throw new java.util.NoSuchElementException ("Empty list has no first."); } /** * @param tail * @param owner */ public void setRest(QFList tail, QFList owner) { throw new java.util.NoSuchElementException ("Empty list has no tail."); } /** * @param dat * @param owner */ public void setFirst(Object dat, QFList owner) { throw new java.util.NoSuchElementException ("Empty list has no first."); } /** * @param dat * @param owner */ public void insertFront(Object dat, QFList owner) { owner.setHead(new NonNullNode(dat)); } /** * @param owner * @return */ public Object removeFront(QFList owner) { throw new java.util.NoSuchElementException ("Empty list has no front."); } public Object execute(IAlgo visitor, Object param, QFList owner) { return visitor.nullCase(owner, param); } }