public void Add(DoubleRange range) { var left = new List <DoubleRange>(); var right = new List <DoubleRange>(); foreach (var rng in this.ranges) { if (range.IntersectsExclusive(rng) || range.Touches(rng)) { range = range.JoinWith(rng); } else if (rng.Upper < range.Lower) { left.Add(rng); } else if (range.Upper < rng.Lower) { right.Add(rng); } else { throw new System.InvalidOperationException("Internal Error"); } } this.ranges = left.Concat(EnumerableUtil.Single(range)).Concat(right).ToList(); }
public void Add(DoubleRange range) { var left = new List<DoubleRange>(); var right = new List<DoubleRange>(); foreach (var rng in this.ranges) { if (range.IntersectsExclusive(rng) || range.Touches(rng)) { range = range.JoinWith(rng); } else if (rng.Upper < range.Lower) { left.Add(rng); } else if (range.Upper < rng.Lower) { right.Add(rng); } else { throw new System.InvalidOperationException("Internal Error"); } } this.ranges = left.Concat(EnumerableUtil.Single(range)).Concat(right).ToList(); }