IronRuby.Builtins.RubyBufferedStream.ConsumeLine C# (CSharp) Méthode

ConsumeLine() private méthode

private ConsumeLine ( IronRuby.Builtins.RubyEncoding encoding, int lineLength, int consume, bool bufferResized ) : MutableString
encoding IronRuby.Builtins.RubyEncoding
lineLength int
consume int
bufferResized bool
Résultat MutableString
        private MutableString/*!*/ ConsumeLine(RubyEncoding/*!*/ encoding, int lineLength, int consume, bool bufferResized) {
            Debug.Assert(consume >= lineLength);
            Debug.Assert(consume <= _bufferCount);

            MutableString line;
            if (bufferResized || _bufferStart == 0 && !Utils.IsSparse(lineLength, _buffer.Length)) {
                Debug.Assert(_bufferStart == 0);
                line = new MutableString(_buffer, lineLength, encoding);

                if (_bufferCount > consume) {
                    var newBuffer = new byte[Math.Max(_defaultBufferSize, _bufferCount - consume)];
                    Buffer.BlockCopy(_buffer, consume, newBuffer, 0, _bufferCount - consume);
                    _buffer = newBuffer;
                } else {
                    _buffer = null;
                }

                // consume as if we kept the same buffer and then adjust start:
                ConsumeBuffered(consume);
                _bufferStart = 0;
            } else {
                line = MutableString.CreateBinary(encoding).Append(_buffer, _bufferStart, lineLength);
                ConsumeBuffered(consume);
            }
            return line;
        }