Deveel.Data.Index.IndexRangeSet.ChangeRangeSizeToEncompass C# (CSharp) Méthode

ChangeRangeSizeToEncompass() private static méthode

Alters the first range so it encompasses the second range.
This assumes that range1 intersects range2.
private static ChangeRangeSizeToEncompass ( IndexRange range1, IndexRange range2 ) : IndexRange
range1 IndexRange
range2 IndexRange
Résultat IndexRange
        private static IndexRange ChangeRangeSizeToEncompass(IndexRange range1, IndexRange range2)
        {
            var startPosition1 = range1.StartOffset;
            var start1 = range1.StartValue;
            var endPosition1 = range1.EndOffset;
            var end1 = range1.EndValue;

            var startPosition2 = range2.StartOffset;
            var start2 = range2.StartValue;
            var endPosition2 = range2.EndOffset;
            var end2 = range2.EndValue;

            if (!start1.Equals(IndexRange.FirstInSet)) {
                if (!start2.Equals(IndexRange.FirstInSet)) {
                    var cell = start1;
                    int c = cell.CompareTo(start2);
                    if (c > 0 ||
                        c == 0 && startPosition1 == RangeFieldOffset.AfterLastValue &&
                        startPosition2 == RangeFieldOffset.FirstValue) {
                        start1 = start2;
                        startPosition1 = startPosition2;
                    }
                } else {
                    start1 = start2;
                    startPosition1 = startPosition2;
                }
            }

            if (!end1.Equals(IndexRange.LastInSet)) {
                if (!end2.Equals(IndexRange.LastInSet)) {
                    var cell = end1;
                    int c = cell.CompareTo(end2);
                    if (c < 0 ||
                        c == 0 && endPosition1 == RangeFieldOffset.BeforeFirstValue &&
                        endPosition2 == RangeFieldOffset.LastValue) {
                        end1 = end2;
                        endPosition1 = endPosition2;
                    }
                } else {
                    end1 = end2;
                    endPosition1 = endPosition2;
                }
            }

            return new IndexRange(startPosition1, start1, endPosition1, end1);
        }