IronRuby.Builtins.RubyBufferedStream.WriteBytes C# (CSharp) Method

WriteBytes() public method

public WriteBytes ( byte buffer, int offset, int count, bool preserveEndOfLines ) : int
buffer byte
offset int
count int
preserveEndOfLines bool
return int
        public int WriteBytes(byte[]/*!*/ buffer, int offset, int count, bool preserveEndOfLines) {
            ContractUtils.RequiresArrayRange(buffer.Length, offset, count, "offset", "count");
            FlushRead();

            if (preserveEndOfLines) {
                _stream.Write(buffer, offset, count);
                return count;
            } else {
                int bytesWritten = 0;
                int i = offset;
                int end = offset + count;
                while (i < end) {
                    int j = i;
                    while (j < end && buffer[j] != LF) {
                        j++;
                    }
                    _stream.Write(buffer, i, j - i);
                    bytesWritten += j - i;

                    if (j < end) {
                        _stream.WriteByte(CR);
                        _stream.WriteByte(LF);
                        bytesWritten += 2;
                    }

                    i = j + 1;
                }

                return bytesWritten;
            }
        }

Same methods

RubyBufferedStream::WriteBytes ( MutableString buffer, int offset, int count, bool preserveEndOfLines ) : int

Usage Example

Example #1
0
        public void File_WriteBytes1() {
            var stream = new MemoryStream();
            var io = new RubyBufferedStream(stream);

            io.Write(new byte[] { 0, 1, 2, 3 }, 1, 2);
            Assert(stream.ToArray().ValueEquals(new byte[] { 1, 2 }));
            stream.Seek(0, SeekOrigin.Begin);

            Assert(io.WriteBytes(new byte[] { 0, 1, 2, 3 }, 1, 2, true) == 2);
            Assert(stream.ToArray().ValueEquals(new byte[] { 1, 2 }));
            stream.Seek(0, SeekOrigin.Begin);

            Assert(io.WriteBytes(new byte[] { 0, 1, 2, 3 }, 1, 2, false) == 2);
            Assert(stream.ToArray().ValueEquals(new byte[] { 1, 2 }));
            stream.Seek(0, SeekOrigin.Begin);

            Assert(io.WriteBytes(new byte[] { 0, 1, (byte)'\n', 2 }, 1, 2, false) == 3);
            Assert(stream.ToArray().ValueEquals(new byte[] { 1, (byte)'\r', (byte)'\n' }));
            stream.Seek(0, SeekOrigin.Begin);
        }