internal Interval(T minimum, IntervalEndPoint minimumPoint, T maximum, IntervalEndPoint maximumPoint) { Minimum = minimum; Maximum = maximum; _flags = CalculateFlags(minimum, minimumPoint, maximum, maximumPoint); }
public static byte CalcFlag(IntervalEndPoint minimumPoint, IntervalEndPoint maximumPoint, bool isEmpty) { var minimumPointVal = (int)minimumPoint << MinimumPointOpenShift; var maximumPointVal = (int)maximumPoint << MaximumPointOpenShift; var isEmptyVal = isEmpty ? 1 : 0; return((byte)(minimumPointVal | maximumPointVal | isEmptyVal)); }
internal static int CompareMinimumEndPoint(IntervalEndPoint first, IntervalEndPoint second) { if (first == second) { return(0); } if (second == IntervalEndPoint.Unbounded) { return(1); } return(first == IntervalEndPoint.Closed ? -1 : 1); }
private static int GetEndPointValue(IntervalEndPoint endPoint) { switch (endPoint) { case IntervalEndPoint.Closed: return(0); case IntervalEndPoint.Open: return(1); default: throw new ArgumentOutOfRangeException(nameof(endPoint), endPoint, null); } }
private static IntervalEndPoint InverseEndPoint(IntervalEndPoint endPoint) { switch (endPoint) { case IntervalEndPoint.Open: return(IntervalEndPoint.Closed); case IntervalEndPoint.Closed: return(IntervalEndPoint.Open); case IntervalEndPoint.Unbounded: return(IntervalEndPoint.Unbounded); default: throw new ArgumentOutOfRangeException(nameof(endPoint)); } }
internal static Interval <T> CreateMinimumUnbounded <T>(T maximum, IntervalEndPoint maximumPoint = IntervalEndPoint.Closed) where T : IComparable <T> { return(new Interval <T>(maximum, IntervalEndPoint.Unbounded, maximum, maximumPoint)); }
public RangeEndPointValue(T value, IntervalEndPoint endPoint, int rangeIndex) { Value = value; EndPoint = endPoint; RangeIndex = rangeIndex; }
public SplitPointData(T point, IntervalEndPoint endPoint) { Point = point; EndPoint = endPoint; }