001 package listFW.visitor;
002
003 import listFW.*;
004
005 /**
006 * Copies an IList<T> using the supplied IListFactory<T>
007 * @author Mathias Ricken - Copyright 2008 - All rights reserved.
008 */
009 public class CopyList2<T> implements IListAlgo<T,IList<T>, Void> {
010 private IListFactory<T> fac;
011
012 public CopyList2(IListFactory<T> fac) {
013 this.fac = fac;
014 }
015
016 public IMTList<T> emptyCase(IMTList<? extends T> host, Void... nu) {
017 return fac.makeEmptyList();
018 }
019 public INEList<T> nonEmptyCase(INEList<? extends T> host, Void... nu) {
020 return fac.makeNEList( host.getFirst(), host.getRest().execute(this));
021 }
022 }