001    package lrs;
002    
003    /**
004     * Represents an abstract algorithm on an LRStruct.  Acts as a visitor to a
005     * LRStruct host.
006     * @author Dung X. Nguyen and Stephen Wong  Copyright 2005 - All rights reserved.
007     * @since 8/25/05
008     */
009    public interface IAlgo {
010        /**
011        * Operates on an empty LRStruct host, given an input object.
012        * @param host an empty LRStruct.
013        * @param inp variable input list of objects needed by this IVisitor.
014        * @return an appropriate output object.
015        */
016        public abstract Object emptyCase(LRStruct host, Object... inp);
017    
018        /**
019        * Operates on a non-empty LRStruct host, given an input object.
020        * @param host a non-empty LRStruct.
021        * @param inp variable input list of objects needed by this IVisitor.
022        * @return an appropriate output object.
023        */
024        public abstract Object nonEmptyCase(LRStruct host, Object... inp);
025    }
026