using System.Buffers.Binary; namespace JCIL.Java.Class; public struct Reader(Stream stream) { public readonly Stream Stream = stream; public sbyte ReadInt8() { return (sbyte)Stream.ReadByte(); } public short ReadInt16() { Span buffer = stackalloc byte[2]; Stream.ReadExactly(buffer); return BinaryPrimitives.ReadInt16BigEndian(buffer); } public int ReadInt32() { Span buffer = stackalloc byte[4]; Stream.ReadExactly(buffer); return BinaryPrimitives.ReadInt32BigEndian(buffer); } public long ReadInt64() { Span buffer = stackalloc byte[8]; Stream.ReadExactly(buffer); return BinaryPrimitives.ReadInt64BigEndian(buffer); } public byte ReadUInt8() { return (byte)Stream.ReadByte(); } public ushort ReadUInt16() { Span buffer = stackalloc byte[2]; Stream.ReadExactly(buffer); return BinaryPrimitives.ReadUInt16BigEndian(buffer); } public uint ReadUInt32() { Span buffer = stackalloc byte[4]; Stream.ReadExactly(buffer); return BinaryPrimitives.ReadUInt32BigEndian(buffer); } public ulong ReadUInt64() { Span buffer = stackalloc byte[8]; Stream.ReadExactly(buffer); return BinaryPrimitives.ReadUInt64BigEndian(buffer); } public float ReadFloat() { Span buffer = stackalloc byte[4]; Stream.ReadExactly(buffer); return BinaryPrimitives.ReadSingleBigEndian(buffer); } public double ReadDouble() { Span buffer = stackalloc byte[8]; Stream.ReadExactly(buffer); return BinaryPrimitives.ReadDoubleBigEndian(buffer); } }