示例#1
0
        public void Add(DoubleRange range)
        {
            var left  = new List <DoubleRange>();
            var right = new List <DoubleRange>();

            foreach (var rng in this.ranges)
            {
                if (range.IntersectsExclusive(rng) || range.Touches(rng))
                {
                    range = range.JoinWith(rng);
                }
                else if (rng.Upper < range.Lower)
                {
                    left.Add(rng);
                }
                else if (range.Upper < rng.Lower)
                {
                    right.Add(rng);
                }
                else
                {
                    throw new System.InvalidOperationException("Internal Error");
                }
            }

            this.ranges = left.Concat(EnumerableUtil.Single(range)).Concat(right).ToList();
        }
示例#2
0
        public void Add(DoubleRange range)
        {
            var left = new List<DoubleRange>();
            var right = new List<DoubleRange>();
            foreach (var rng in this.ranges)
            {
                if (range.IntersectsExclusive(rng) || range.Touches(rng))
                {
                    range = range.JoinWith(rng);
                }
                else if (rng.Upper < range.Lower)
                {
                    left.Add(rng);
                }
                else if (range.Upper < rng.Lower)
                {
                    right.Add(rng);
                }
                else
                {
                    throw new System.InvalidOperationException("Internal Error");
                }
            }

            this.ranges = left.Concat(EnumerableUtil.Single(range)).Concat(right).ToList();
        }