package lrs.visitor; import lrs.*; public class EveryOtherHelper implements IAlgo { public final static EveryOtherHelper Singleton = new EveryOtherHelper (); private EveryOtherHelper() { } /** * @param host * @param parent * @return */ public Object nullCase(LRStruct host, Object parent) { return new LRStruct (); } /** * Removes every other elements from host. * @param host a non-empty LRStruct. * @param parent a non-empty LRStruct - the parent of host. * @return the list consisting of elements that were left out */ public Object nonNullCase(LRStruct host, Object parent) { LRStruct parentList = (LRStruct)parent; LRStruct hostTail = host.getRest (); parentList.setRest (hostTail); host.setRest ((LRStruct)hostTail.execute (EveryOther.Singleton, null)); return host; } }