// -------------------------------------------------- // UnityInjector - ConsoleEncoding.Buffers.cs // Copyright (c) Usagirei 2015 - 2015 // -------------------------------------------------- namespace UnityInjector.ConsoleUtil { // -------------------------------------------------- // Code ported from // https://gist.github.com/asm256/9bfb88336a1433e2328a // Which in turn was seemingly ported from // http://jonskeet.uk/csharp/ebcdic/ // using only safe (managed) code // -------------------------------------------------- internal partial class ConsoleEncoding { private byte[] _byteBuffer = new byte[256]; private char[] _charBuffer = new char[256]; private byte[] _zeroByte = new byte[0]; private char[] _zeroChar = new char[0]; private void ExpandByteBuffer(int count) { if (_byteBuffer.Length < count) _byteBuffer = new byte[count]; } private void ExpandCharBuffer(int count) { if (_charBuffer.Length < count) _charBuffer = new char[count]; } private void ReadByteBuffer(byte[] bytes, int index, int count) { for (int i = 0; i < count; i++) bytes[index + i] = _byteBuffer[i]; } private void ReadCharBuffer(char[] chars, int index, int count) { for (int i = 0; i < count; i++) chars[index + i] = _charBuffer[i]; } private void WriteByteBuffer(byte[] bytes, int index, int count) { ExpandByteBuffer(count); for (int i = 0; i < count; i++) _byteBuffer[i] = bytes[index + i]; } private void WriteCharBuffer(char[] chars, int index, int count) { ExpandCharBuffer(count); for (int i = 0; i < count; i++) _charBuffer[i] = chars[index + i]; } } }