001    package lrs;
002    
003    /**
004     * Represents an abstract algorithm on an LRStruct.  Acts as a visitor to a
005     * <p/>
006     * LRStruct host.
007     *
008     * @author Dung X. Nguyen  Copyright 2001 - All rights reserved.
009     * @since 10/09/01
010     */
011    
012    public interface IAlgo {
013        /**
014         * Operates on an empty LRStruct host, given an input object.
015         *
016         * @param host an empty LRStruct.
017         * @param inp  input object needed by this IAlgo.
018         *
019         * @return an appropriate output object.
020         */
021        public abstract Object emptyCase(LRStruct host, Object inp);
022    
023        /**
024         * Operates on a non-empty LRStruct host, given an input object.
025         *
026         * @param host a non-empty LRStruct.
027         * @param inp  input object needed by this IAlgo.
028         *
029         * @return an appropriate output object.
030         */
031        public abstract Object nonEmptyCase(LRStruct host, Object inp);
032    }
033