001 package listFW.visitor;
002
003 import listFW.*;
004
005 /**
006 * Copies an IList<T> using the an IListFactory<T> supplied as an input parameter
007 * @author Mathias Ricken - Copyright 2008 - All rights reserved.
008 */
009 public class CopyList<T> implements IListAlgo<T,IList<T>, IListFactory<T>> {
010
011 public IMTList<T> emptyCase(IMTList<? extends T> host, IListFactory<T> ... fac) {
012 return fac[0].makeEmptyList();
013 }
014 public INEList<T> nonEmptyCase(INEList<? extends T> host, IListFactory<T> ... fac) {
015 return ((IListFactory<T>)fac[0]).makeNEList( host.getFirst(), host.getRest().execute(this, fac)); // Generates "unchecked cast" warning
016 }
017 }