Exemple #1
0
        public static MutableString /*!*/ Read(RubyIO /*!*/ self, DynamicNull bytes, [DefaultProtocol, Optional] MutableString buffer)
        {
            if (buffer == null)
            {
                buffer = MutableString.CreateBinary();
            }
            else
            {
                buffer.Clear();
            }

            self.AppendBytes(buffer, Int32.MaxValue);
            return(buffer);
        }
Exemple #2
0
        public static MutableString Read(RubyIO /*!*/ self, [DefaultProtocol] int bytes, [DefaultProtocol, Optional] MutableString buffer)
        {
            self.RequireReadable();
            if (bytes < 0)
            {
                throw RubyExceptions.CreateArgumentError("negative length -1 given");
            }

            if (buffer == null)
            {
                buffer = MutableString.CreateBinary();
            }
            else
            {
                buffer.Clear();
            }

            int bytesRead = self.AppendBytes(buffer, bytes);

            return((bytesRead == 0 && bytes != 0) ? null : buffer);
        }
Exemple #3
0
        public static MutableString /*!*/ Read(RubyIO /*!*/ self, [DefaultProtocol] int bytes, [DefaultProtocol, Optional] MutableString buffer)
        {
            self.AssertOpenedForReading();
            if (self.IsEndOfStream())
            {
                return(null);
            }

            if (buffer == null)
            {
                buffer = MutableString.CreateBinary();
            }

            buffer.Clear();
            if (!self.PreserveEndOfLines)
            {
                for (int i = 0; i < bytes; ++i)
                {
                    int c = self.ReadByteNormalizeEoln();
                    if (c == -1)
                    {
                        return(buffer);
                    }
                    else
                    {
                        buffer.Append((byte)c);
                    }
                }
            }
            else
            {
                var fixedBuffer = new byte[bytes];
                bytes = self.ReadBytes(fixedBuffer, 0, bytes);
                buffer.Append(fixedBuffer, 0, bytes);
            }

            return(buffer);
        }