protected internal virtual int ReadCodePoint()
{
int ch = ReadChar();
if (ch < 0)
{
return ch;
}
else
{
Assert.True(!char.IsLowSurrogate((char)ch), "unpaired low surrogate: " + ch.ToString("x"));
Off++;
if (char.IsHighSurrogate((char)ch))
{
int ch2 = ReadChar();
if (ch2 >= 0)
{
Off++;
Assert.True(char.IsLowSurrogate((char)ch2), "unpaired high surrogate: " + ch.ToString("x") + ", followed by: " + ch2.ToString("x"));
return Character.ToCodePoint((char)ch, (char)ch2);
}
else
{
Assert.True(false, "stream ends with unpaired high surrogate: " + ch.ToString("x"));
}
}
return ch;
}
}