コード例 #1
0
        /// <summary>
        /// Fills length bytes memory with data.
        /// </summary>
        /// <param name="data">The byte to fill teh data.</param>
        /// <param name="length">The amount of bytes to fill.</param>
        public unsafe void Fill(byte data, int length)
        {
            if (length > size)
            {
                writer.flush(this, length > 1024 ? length : 1024);
                next.Fill(data, length);
                return;
            }

            size -= length;

            if (length > 80)
            {
                ulong oData = ((ulong)data << 56) | ((ulong)data << 48) | ((ulong)data << 40) | ((ulong)data << 32) | ((ulong)data << 24) | ((ulong)data << 16) | ((ulong)data << 8) | (ulong)data;

                while (length > 7)
                {
                    fixed(byte *bData = this.data)
                    * (ulong *)(bData + position) = oData;

                    length   -= 8;
                    position += 8;
                }
            }

            while (length-- > 0)
            {
                this.data[position++] = data;
            }
        }
コード例 #2
0
 /// <summary>
 /// Fills length bytes memory with data.
 /// </summary>
 /// <param name="data">The byte to fill teh data.</param>
 /// <param name="length">The amount of bytes to fill.</param>
 public void Fill(byte data, int length)
 {
     currentSegment.Fill(data, length);
 }