using System;
using System.IO;
using System.Linq;
using System.Text;
namespace BOTWToolset.IO
{
///
/// Big-endian variant of BinaryReader.
///
public class BinaryReaderBig : BinaryReader
{
public BinaryReaderBig(Stream stream) : base(stream) { }
public BinaryReaderBig(Stream stream, Encoding encoding) : base(stream, encoding) { }
public BinaryReaderBig(Stream stream, Encoding encoding, bool leaveOpen) : base(stream, encoding, leaveOpen) { }
///
/// Advances the stream by the specified number of bytes.
///
/// The number of bytes to advance by.
public void Advance(long bytes)
{
BaseStream.Seek(bytes, SeekOrigin.Current);
}
public override short ReadInt16()
{
return BitConverter.ToInt16(base.ReadBytes(2).Reverse().ToArray(), 0);
}
public override ushort ReadUInt16()
{
return BitConverter.ToUInt16(base.ReadBytes(2).Reverse().ToArray(), 0);
}
public override int ReadInt32()
{
return BitConverter.ToInt32(base.ReadBytes(4).Reverse().ToArray(), 0);
}
public override uint ReadUInt32()
{
return BitConverter.ToUInt32(base.ReadBytes(4).Reverse().ToArray(), 0);
}
public override long ReadInt64()
{
return BitConverter.ToInt64(base.ReadBytes(8).Reverse().ToArray(), 0);
}
public override ulong ReadUInt64()
{
return BitConverter.ToUInt64(base.ReadBytes(8).Reverse().ToArray(), 0);
}
public override float ReadSingle()
{
return BitConverter.ToSingle(base.ReadBytes(4).Reverse().ToArray(), 0);
}
public override double ReadDouble()
{
return BitConverter.ToDouble(base.ReadBytes(8).Reverse().ToArray(), 0);
}
}
}