BTDB.StreamLayer.AbstractBufferedReader.ReadStringOrdered C# (CSharp) Method

ReadStringOrdered() public method

public ReadStringOrdered ( ) : string
return string
        public string ReadStringOrdered()
        {
            var len = 0;
            while (true)
            {
                var c = ReadVUInt32();
                if (c == 0) break;
                c--;
                if (c > 0xffff)
                {
                    if (c > 0x10ffff)
                    {
                        if (len == 0 && c == 0x110000) return null;
                        throw new InvalidDataException($"Reading String unicode value overflowed with {c}");
                    }
                    c -= 0x10000;
                    ReserveCharBuf(len + 2);
                    CharBuf[len++] = (char)((c >> 10) + 0xD800);
                    CharBuf[len++] = (char)((c & 0x3FF) + 0xDC00);
                }
                else
                {
                    ReserveCharBuf(len + 1);
                    CharBuf[len++] = (char)c;
                }
            }
            if (len == 0) return "";
            return new string(CharBuf, 0, len);
        }