package tim.prune.data;

/**
 * Represents a range of integers, holding the maximum and
 * minimum values.
 */
public class IntegerRange
{
	private int _min = -1, _max = -1;
	private boolean _foundValues = false;


	/**
	 * Clear for a new range calculation
	 */
	public void clear()
	{
		_min = -1;
		_max = -1;
		_foundValues = false;
	}


	/**
	 * Add a value to the range
	 * @param inValue value to add
	 */
	public void addValue(int inValue)
	{
		if (inValue < _min || !_foundValues) {
			_min = inValue;
		}
		if (inValue > _max || !_foundValues) {
			_max = inValue;
		}
		_foundValues = true;
	}

	/**
	 * @return true if any values added to the range
	 */
	public boolean hasValues() {
		return _foundValues;
	}

	/**
	 * @return minimum value, or -1 if none found
	 */
	public int getMinimum() {
		return _min;
	}

	/**
	 * @return maximum value, or -1 if none found
	 */
	public int getMaximum() {
		return _max;
	}
}
