Пример #1
0
    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);
    }
Пример #2
0
    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));
    }
Пример #3
0
    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);
    }
Пример #4
0
 public bool contains(iRange r)
 {
     return(this.startP <= r.startP && this.extent() >= r.extent());
 }
Пример #5
0
 public static iRange IntersectingIRange(iRange raa, iRange rbb)
 {
     return((iRange)SimpleRange.IntersectingRange(raa, rbb));
 }
Пример #6
0
    public bool Equals(iRange other)
    {
//		return this.Equals((SimpleRange) other);
        return(this.startP == other.startP && this.rangeP == other.rangeP);
    }
Пример #7
0
 public static bool RangesIntersect(iRange raa, iRange rbb)
 {
     return(!(SimpleRange.IntersectingIRange(raa, rbb).isErsatzNull()));
 }
Пример #8
0
 public bool intersectsWith(iRange other)
 {
     return(SimpleRange.RangesIntersect(this, other));
 }
Пример #9
0
 public iRange intersection(iRange other)
 {
     return(SimpleRange.IntersectingIRange(this, other));
 }
Пример #10
0
//  int extent(); //below
//	bool contains(iRange other) {} //below
//	bool contains(int i){} //below

    public OverlapState overlapStateWith(iRange other)
    {
        return(this.overlapWithRange(other));
    }
Пример #11
0
 public bool Equals(iRange other)
 {
     return(this.range.Equals(other));
 }
Пример #12
0
 public iRange intersection(iRange other)
 {
     return(this.range.intersection(other));
 }
Пример #13
0
 public bool intersectsWith(iRange other)
 {
     return(this.range.intersectsWith(other));
 }
Пример #14
0
 public bool contains(iRange other)
 {
     return(this.range.contains(other));
 }