001 package listFW;
002
003 /**
004 * Defines an immutable list that holds elements of type E.
005 * Serves as a host for an algorithm on a list to visit its internal structure.
006 * Has a "hook" method to call on the appropriate method of the visitor, making
007 * the immutable list structure a framework.
008 * @author Dung X. Nguyen
009 * @author Stephen B. Wong
010 * @author Mathias Ricken - Copyright 2008 - All rights reserved.
011 * @since Copyright 2004 - DXN, SBW All rights reserved
012 * @stereotype host
013 */
014 public interface IList<E> {
015 /**
016 * A visitor pattern "hook" method that executes an <code>IListAlgo</code>.
017 * @param algo the visitor, the algorithm to be executed.
018 * Any visitor that works on a super type of E is accepted.
019 * @param inp a generic input parameter to be used by the algorithm algo.
020 * @return <code>Object</code> output from executing the algorithm algo.
021 */
022 public abstract <R,P> R execute(IListAlgo<? super E, R, P> algo, P ... inp);
023 }
024