001 package listFW.visitor; 002 003 import listFW.*; 004 005 /** 006 * Append another list, passed as input[0], at the end of this list. 007 */ 008 public class Append<T> implements IListAlgo<T,IList<T>,IList<T>> { 009 private IListFactory<T> _fac; 010 011 public Append(IListFactory<T> fac) { 012 _fac = fac; 013 } 014 015 /** 016 * Returns the input list. 017 * @param input input[0] is the list to append. 018 */ 019 public IList<T> emptyCase(IMTList<? extends T> host, IList<T>... input) { 020 return input[0]; 021 } 022 023 /** 024 * Returns the appended lists. 025 * @param input input[0] is the list to append. 026 */ 027 public IList<T> nonEmptyCase(INEList<? extends T> host, IList<T>... input) { 028 return _fac.makeNEList(host.getFirst(), 029 host.getRest().execute(this, input)); 030 } 031 }