using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExpressionsParser {
	/// <summary>
	/// Exposes a method that compares two objects.
	/// </summary>
	/// <remarks>
	/// Unlike <see cref="System.Collections.IComparer"/> this interface allows to return null as comparison result 
	/// for case when values cannot be compared without throwing an exception.
	/// </remarks>
	public interface IValueComparer {

		/// <summary>
		/// Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.
		/// </summary>
		/// <returns>A signed integer that indicates the relative values of x and y or null if values cannot be compared.</returns>
		int? Compare(object x, object y);
    }

}
