001    package lrs.visitor;
002    import lrs.*;
003    import logic.*;
004    
005    // This visitor returns the minimum value from a list
006    public class GetMin extends AGetExtrema
007    {
008     public static GetMin Singleton = new GetMin();
009    
010     private GetMin()
011     {
012     }
013    
014        public Object emptyCase(LRStruct host, Object... param)
015        {
016            return(Integer.MAX_VALUE);   // The empty list has a valid return object that will always fail a compare.
017        }
018    
019        public Object nonEmptyCase(LRStruct host, Object... param)
020        {
021            Integer tmp = (Integer) host.getRest().execute(this, param);  // Get the min of the rest of the list
022    
023            //return the data that passes the compare test.
024    //        if(tmp.intValue() < ((Integer)host.getFirst()).intValue())  return (tmp);
025    //        else return (host.getFirst());
026            return BooleanFactory.Singleton.makeBoolean(tmp < (Integer) host.getFirst()).execute(BooleanChoice.Singleton, tmp, host.getFirst());
027        }
028    
029    }