示例#1
0
        // Token: 0x0600624B RID: 25163 RVA: 0x001B8B74 File Offset: 0x001B6D74
        internal void AddTextSegment(ITextPointer start, ITextPointer end)
        {
            Invariant.Assert(start != null, "Non-null start required to create segment.");
            Invariant.Assert(end != null, "Non-null end required to create segment.");
            TextSegment newSegment = TextAnchor.CreateNormalizedSegment(start, end);

            this.InsertSegment(newSegment);
        }
示例#2
0
        // Token: 0x06006251 RID: 25169 RVA: 0x001B8FC0 File Offset: 0x001B71C0
        internal static TextAnchor TrimToIntersectionWith(TextAnchor anchor, ICollection <TextSegment> textSegments)
        {
            Invariant.Assert(anchor != null, "Anchor must not be null.");
            Invariant.Assert(textSegments != null, "TextSegments must not be null.");
            textSegments = TextAnchor.SortTextSegments(textSegments, true);
            TextSegment textSegment = TextSegment.Null;
            int         num         = 0;
            IEnumerator <TextSegment> enumerator = textSegments.GetEnumerator();
            bool flag = enumerator.MoveNext();

            while (num < anchor._segments.Count && flag)
            {
                bool condition;
                if (!textSegment.Equals(TextSegment.Null) && !textSegment.Equals(enumerator.Current))
                {
                    ITextPointer end          = textSegment.End;
                    TextSegment  textSegment2 = enumerator.Current;
                    condition = (end.CompareTo(textSegment2.Start) <= 0);
                }
                else
                {
                    condition = true;
                }
                Invariant.Assert(condition, "TextSegments are overlapping or not ordered.");
                TextSegment textSegment3 = anchor._segments[num];
                textSegment = enumerator.Current;
                if (textSegment3.Start.CompareTo(textSegment.End) >= 0)
                {
                    flag = enumerator.MoveNext();
                }
                else if (textSegment3.End.CompareTo(textSegment.Start) <= 0)
                {
                    anchor._segments.RemoveAt(num);
                }
                else if (textSegment3.Start.CompareTo(textSegment.Start) < 0)
                {
                    anchor._segments[num] = TextAnchor.CreateNormalizedSegment(textSegment.Start, textSegment3.End);
                }
                else
                {
                    if (textSegment3.End.CompareTo(textSegment.End) > 0)
                    {
                        anchor._segments[num] = TextAnchor.CreateNormalizedSegment(textSegment3.Start, textSegment.End);
                        anchor._segments.Insert(num + 1, TextAnchor.CreateNormalizedSegment(textSegment.End, textSegment3.End));
                        flag = enumerator.MoveNext();
                    }
                    else if (textSegment3.End.CompareTo(textSegment.End) == 0)
                    {
                        flag = enumerator.MoveNext();
                    }
                    num++;
                }
            }
            if (!flag && num < anchor._segments.Count)
            {
                anchor._segments.RemoveRange(num, anchor._segments.Count - num);
            }
            if (anchor._segments.Count == 0)
            {
                return(null);
            }
            return(anchor);
        }