Exemplo n.º 1
0
        public void AddLiveInterval(SlotIndex start, SlotIndex end)
        {
            if (LiveIntervals.Count == 0)
            {
                LiveIntervals.Add(new LiveInterval(this, start, end));
                return;
            }

            for (int i = 0; i < LiveIntervals.Count; i++)
            {
                var liveRange = LiveIntervals[i];

                if (liveRange.Start == start && liveRange.End == end)
                {
                    return;
                }

                if (liveRange.IsAdjacent(start, end) || liveRange.Intersects(start, end))
                {
                    liveRange        = liveRange.CreateExpandedLiveRange(start, end);
                    LiveIntervals[i] = liveRange;

                    for (int z = i + 1; z < LiveIntervals.Count; z++)
                    {
                        var nextLiveRange = LiveIntervals[z];
                        if (liveRange.IsAdjacent(nextLiveRange) || liveRange.Intersects(nextLiveRange))
                        {
                            liveRange        = liveRange.CreateExpandedLiveInterval(nextLiveRange);
                            LiveIntervals[i] = liveRange;
                            LiveIntervals.RemoveAt(z);

                            continue;
                        }

                        return;
                    }

                    return;
                }

                if (liveRange.Start > end)
                {
                    // new range is before the current range (so insert before)
                    LiveIntervals.Insert(i, new LiveInterval(this, start, end));
                    return;
                }
            }

            // new range is after the last range
            LiveIntervals.Add(new LiveInterval(this, start, end));
        }
Exemplo n.º 2
0
 public void Remove(LiveInterval liveInterval)
 {
     LiveIntervals.Remove(liveInterval);
 }
Exemplo n.º 3
0
 public void Add(LiveInterval liveInterval)
 {
     LiveIntervals.Add(liveInterval);
 }