From db21621bb681ee6d85f81fd04d7ea286b0742ca7 Mon Sep 17 00:00:00 2001 From: Thomas Guillemard Date: Thu, 27 Jun 2019 13:11:51 +0200 Subject: PrntStub: Add a way to print arrays (#711) * PrntStub: Add a way to print arrays This commit adds support for printing arrays in stubs (useful for IPC InBuffer/InPointer). This also add an util to parse an array of structure from a BinaryReader * Fix missing space Co-Authored-By: Ac_K --- Ryujinx.Common/Extensions/BinaryReaderExtensions.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'Ryujinx.Common/Extensions/BinaryReaderExtensions.cs') diff --git a/Ryujinx.Common/Extensions/BinaryReaderExtensions.cs b/Ryujinx.Common/Extensions/BinaryReaderExtensions.cs index 49af946f..05c77fe9 100644 --- a/Ryujinx.Common/Extensions/BinaryReaderExtensions.cs +++ b/Ryujinx.Common/Extensions/BinaryReaderExtensions.cs @@ -19,6 +19,26 @@ namespace Ryujinx.Common } } + public unsafe static T[] ReadStructArray(this BinaryReader reader, int count) + where T : struct + { + int size = Marshal.SizeOf(); + + T[] result = new T[count]; + + for (int i = 0; i < count; i++) + { + byte[] data = reader.ReadBytes(size); + + fixed (byte* ptr = data) + { + result[i] = Marshal.PtrToStructure((IntPtr)ptr); + } + } + + return result; + } + public unsafe static void WriteStruct(this BinaryWriter writer, T value) where T : struct { -- cgit v1.2.3