Esempio n. 1
0
        /** Return the interval with elements from this not in other;
         *  other must not be totally enclosed (properly contained)
         *  within this, which would result in two disjoint intervals
         *  instead of the single one returned by this method.
         */
        public virtual Interval DifferenceNotProperlyContained(Interval other)
        {
            Interval diff = null;

            // other.a to left of this.a (or same)
            if (other.StartsBeforeNonDisjoint(this))
            {
                diff = Interval.Create(Math.Max(this.a, other.b + 1),
                                       this.b);
            }

            // other.a to right of this.a
            else if (other.StartsAfterNonDisjoint(this))
            {
                diff = Interval.Create(this.a, other.a - 1);
            }
            return(diff);
        }
Esempio n. 2
0
 /** Return the interval in common between this and o */
 public virtual Interval Intersection(Interval other)
 {
     return(Interval.Create(Math.Max(a, other.a), Math.Min(b, other.b)));
 }
Esempio n. 3
0
 /** Add interval; i.e., add all integers from a to b to set.
  *  If b<a, do nothing.
  *  Keep list in sorted order (by left range value).
  *  If overlap, combine ranges.  For example,
  *  If this is {1..5, 10..20}, adding 6..7 yields
  *  {1..5, 6..7, 10..20}.  Adding 4..8 yields {1..8, 10..20}.
  */
 public virtual void Add(int a, int b)
 {
     Add(Interval.Create(a, b));
 }