using System; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; using System.Text; namespace Ryujinx.Common { public static class StructIOExtension { public unsafe static T ReadStruct(this BinaryReader reader) where T : struct { int size = Marshal.SizeOf(); byte[] data = reader.ReadBytes(size); fixed (byte* ptr = data) { return Marshal.PtrToStructure((IntPtr)ptr); } } public unsafe static void WriteStruct(this BinaryWriter writer, T value) where T : struct { long size = Marshal.SizeOf(); byte[] data = new byte[size]; fixed (byte* ptr = data) { Marshal.StructureToPtr(value, (IntPtr)ptr, false); } writer.Write(data); } } }