private void Add(T rangeItem, bool wantOverwrite) { //ranges ordered from low start to high start int insertIndex = 0; for (int i = 0; i < _ranges.Count; ++i) { iRange r = _ranges[i]; //if r is 'beyond' rangeItem //insert at the curr insert index if (rangeItem.startP > r.extent()) { insertIndex++; continue; } if (rangeItem.extent() < r.startP) { break; } OverlapState overlState = rangeItem.overlapStateWith(r); if (OverLapUtil.OverlapExists(overlState)) { //want overwrite?? _ranges.RemoveAt(i); insertIndex = i; // throw new Exception("Discrete Domain Range List doesn't put up with flush or overlapping ranges"); } } this.Insert(insertIndex, rangeItem); }
public static SimpleRange IntersectingRange(iRange raa, iRange rbb) { int interExtent = raa.extent() < rbb.extent() ? raa.extent() : rbb.extent(); int interStart = raa.startP > rbb.startP ? raa.startP : rbb.startP; if (interStart >= interExtent) { return(SimpleRange.theErsatzNullRange()); } return(new SimpleRange(interStart, interExtent - interStart)); }
public OverlapState overlapWithRange(iRange other) { if (this.start == other.extent()) { return(OverlapState.FlushWithStart); } if (this.start > other.extent()) { return(OverlapState.BeforeStart); } if (this.extent() == other.startP) { return(OverlapState.FlushWithExtent); } if (RangesIntersect(this, other)) { if (this.contains(other)) { return(OverlapState.IContainIt); } if (other.contains(this)) { return(OverlapState.ItContainsMe); } if (other.startP < this.startP) { return(OverlapState.OverlappingOverStart); } return(OverlapState.OverlappingOverEnd); } return(OverlapState.BeyondExtent); }
public bool contains(iRange r) { return(this.startP <= r.startP && this.extent() >= r.extent()); }
public static iRange IntersectingIRange(iRange raa, iRange rbb) { return((iRange)SimpleRange.IntersectingRange(raa, rbb)); }
public bool Equals(iRange other) { // return this.Equals((SimpleRange) other); return(this.startP == other.startP && this.rangeP == other.rangeP); }
public static bool RangesIntersect(iRange raa, iRange rbb) { return(!(SimpleRange.IntersectingIRange(raa, rbb).isErsatzNull())); }
public bool intersectsWith(iRange other) { return(SimpleRange.RangesIntersect(this, other)); }
public iRange intersection(iRange other) { return(SimpleRange.IntersectingIRange(this, other)); }
// int extent(); //below // bool contains(iRange other) {} //below // bool contains(int i){} //below public OverlapState overlapStateWith(iRange other) { return(this.overlapWithRange(other)); }
public bool Equals(iRange other) { return(this.range.Equals(other)); }
public iRange intersection(iRange other) { return(this.range.intersection(other)); }
public bool intersectsWith(iRange other) { return(this.range.intersectsWith(other)); }
public bool contains(iRange other) { return(this.range.contains(other)); }