static unsafe internal Delimiter NextDelimiter (string text, int offset)
{
fixed (char* start = text) {
char* p = start + offset;
char* endPtr = start + text.Length;
while (p < endPtr) {
switch (*p) {
case NewLine.CR:
char* nextp = p + 1;
if (nextp < endPtr && *nextp == NewLine.LF)
return new Delimiter ((int)(p - start), UnicodeNewline.CRLF);
return new Delimiter ((int)(p - start), UnicodeNewline.CR);
case NewLine.LF:
return new Delimiter ((int)(p - start), UnicodeNewline.LF);
case NewLine.NEL:
return new Delimiter ((int)(p - start), UnicodeNewline.NEL);
case NewLine.VT:
return new Delimiter ((int)(p - start), UnicodeNewline.VT);
case NewLine.FF:
return new Delimiter ((int)(p - start), UnicodeNewline.FF);
case NewLine.LS:
return new Delimiter ((int)(p - start), UnicodeNewline.LS);
case NewLine.PS:
return new Delimiter ((int)(p - start), UnicodeNewline.PS);
}
p++;
}
return Delimiter.Invalid;
}
}