using ChocolArm64.Memory; using System.Runtime.InteropServices; namespace Ryujinx.HLE.Utilities { class StructReader { private AMemory Memory; public long Position { get; private set; } public StructReader(AMemory Memory, long Position) { this.Memory = Memory; this.Position = Position; } public T Read() where T : struct { T Value = AMemoryHelper.Read(Memory, Position); Position += Marshal.SizeOf(); return Value; } public T[] Read(int Size) where T : struct { int StructSize = Marshal.SizeOf(); int Count = Size / StructSize; T[] Output = new T[Count]; for (int Index = 0; Index < Count; Index++) { Output[Index] = AMemoryHelper.Read(Memory, Position); Position += StructSize; } return Output; } } }