package flare.query
{
    /**
     * Aggregate operator for computing the minimum of a set of values.
     */
    public class Minimum extends AggregateExpression
    {
        private var _value:Object = null;
        
        /**
         * Creates a new Minimum operator
         * @param input the sub-expression of which to compute the minimum
         */
        public function Minimum(input:*) {
            super(input);
        }
        
        /**
         * @inheritDoc
         */
        public override function eval(o:Object=null):*
        {
            return _value;
        }
        
        /**
         * @inheritDoc
         */
        public override function reset():void
        {
            _value = null;
        }
        
        /**
         * @inheritDoc
         */
        public override function aggregate(value:Object):void
        {
            value = _expr.eval(value);
            if (_value == null || value < _value) {
                _value = value;
            }
        }
        
    } // end of class Minimum
}