Esempio n. 1
0
        private static bool TryEncodeSpans(string text, Func<string, int, TextSpan> spanGenerator, out EncodedSpans encodedSpans)
        {
            encodedSpans = default(EncodedSpans);
            for (int start = 0, b = 0; start < text.Length; )
            {
                var span = spanGenerator(text, start);
                if (span.IsEmpty)
                {
                    // All done
                    break;
                }

                int gap = span.Start - start;
                Debug.Assert(gap >= 0, "Bad generator.");

                if (b >= MaxShortSpans ||
                    span.Length > MaxLength ||
                    gap > MaxGap)
                {
                    // Too many spans, or span cannot be encoded.
                    return false;
                }

                encodedSpans[b++] = Encode(gap, span.Length);
                start = span.End;
            }

            return true;
        }
Esempio n. 2
0
 private StringBreaks(EncodedSpans encodedSpans)
 {
     this._encodedSpans = encodedSpans;
     this._spans = null;
 }
Esempio n. 3
0
 private StringBreaks(List<TextSpan> spans)
 {
     this._encodedSpans = default(EncodedSpans);
     this._spans = spans;
 }
Esempio n. 4
0
 private StringBreaks(EncodedSpans encodedSpans)
 {
     _encodedSpans = encodedSpans;
     _spans = null;
 }
 private StringBreaks(EncodedSpans encodedSpans)
 {
     _encodedSpans = encodedSpans;
     _spans        = null;
 }
        private static bool TryEncodeSpans(string text, Func <string, int, TextSpan> spanGenerator, out EncodedSpans encodedSpans)
        {
            encodedSpans = default(EncodedSpans);
            for (int start = 0, b = 0; start < text.Length;)
            {
                var span = spanGenerator(text, start);
                if (span.IsEmpty)
                {
                    // All done
                    break;
                }

                int gap = span.Start - start;
                Debug.Assert(gap >= 0, "Bad generator.");

                if (b >= MaxShortSpans ||
                    span.Length > MaxLength ||
                    gap > MaxGap)
                {
                    // Too many spans, or span cannot be encoded.
                    return(false);
                }

                encodedSpans[b++] = Encode(gap, span.Length);
                start             = span.End;
            }

            return(true);
        }
 private StringBreaks(ArrayBuilder <TextSpan> spans)
 {
     _encodedSpans = default(EncodedSpans);
     _spans        = spans;
 }
Esempio n. 8
0
 private StringBreaks(List <TextSpan> spans)
 {
     _encodedSpans = default(EncodedSpans);
     _spans        = spans;
 }