public void Invalidate(double x) { if (Pieces.Count == 0) { return; } // Invalidate the piece that contains 'x' var idx = Pieces.BinarySearch(p => p.Range.CompareTo(x), find_insert_position: true); if (idx != Pieces.Count && Pieces[idx].Range.Contains(x)) { Util.Dispose(Pieces[idx]); Pieces.RemoveAt(idx); } }
public void Invalidate(RangeF x_range) { if (Pieces.Count == 0) { return; } if (x_range == RangeF.Invalid) { Invalidate(); } else { // Invalidate all pieces that overlap the given range var beg = Pieces.BinarySearch(p => p.Range.CompareTo(x_range.Beg), find_insert_position: true); var end = Math.Min(Pieces.Count, Pieces.BinarySearch(p => p.Range.CompareTo(x_range.End), find_insert_position: true) + 1); Util.DisposeRange(Pieces, beg, end - beg); Pieces.RemoveRange(beg, end - beg); } }