コード例 #1
0
        /// <summary>
        /// Writes a string in UTF-8 encoding without leading length and without NUL-termination.
        /// </summary>
        /// <param name="text">The string to write.</param>
        /// <returns>The number of bytes written.</returns>
        public unsafe int WriteVanillaString(string text)
        {
            if (string.IsNullOrEmpty(text))
            {
                return(0);
            }

            int requiredSize = Encoding.UTF8.GetByteCount(text);

            if (size < requiredSize)
            {
                writer.flush(this, requiredSize + 1024);
                next.WriteVanillaString(text);
                return(requiredSize);
            }

            fixed(char *chars = text)
            fixed(byte *bData = data)
            requiredSize      = Encoding.UTF8.GetBytes(chars, text.Length, bData + position, size);

            size     -= requiredSize;
            position += requiredSize;

            return(requiredSize);
        }
コード例 #2
0
 public int WriteVanillaString(string text)
 {
     return(currentSegment.WriteVanillaString(text));
 }