Example #1
0
        private void AddNewInterval(int value)
        {
            _Count = -1;
            var interval = new IntervalLookup <TLookup>(value);

            this.Intervals.Add(interval);
        }
Example #2
0
        private void AddNewInterval(int value, int ix)
        {
            _Count = -1;
            var interval = new IntervalLookup <TLookup>(value);

            this.Intervals.Insert(ix, interval);
        }
Example #3
0
 public void AddInterval(IntervalLookup <TLookup> interval)
 {
     _Count = -1;
     if (LastInterval != null)
     {
         if (LastInterval.End <= interval.End && LastInterval.End >= interval.Start)
         {
             LastInterval.End = interval.End;
             return;
         }
     }
     this.Intervals.Add(interval);
 }
Example #4
0
        public int SearchByStartIndexBefore(IntervalLookup <TLookup> interval, int startix)
        {
            var ix = startix;
            var c  = this.Intervals.Count;

            var tix = this.Intervals.BinarySearch(startix, c - startix, interval, IntervalListLookup <TLookup> .startcomparer);

            if (tix > c)
            {
                ix = c - 1;
            }
            if (tix < 0)
            {
                ix = ~tix;
                ix = ix > 0 ? ix - 1 : ix;
            }
            if (ix < startix)
            {
                ix = startix;
            }
            return(ix);
        }