diff --git a/SabreTools.Serialization/Extensions/PortableExecutable.cs b/SabreTools.Serialization/Extensions/PortableExecutable.cs
index c73f67ae..2d570fbc 100644
--- a/SabreTools.Serialization/Extensions/PortableExecutable.cs
+++ b/SabreTools.Serialization/Extensions/PortableExecutable.cs
@@ -1,8 +1,6 @@
using System;
using SabreTools.Data.Models.COFF;
-using SabreTools.IO.Extensions;
-#pragma warning disable IDE0017 // Simplify object initialization
namespace SabreTools.Data.Extensions
{
public static class PortableExecutable
@@ -95,52 +93,5 @@ namespace SabreTools.Data.Extensions
return -1;
}
-
- #region Debug
-
- ///
- /// Parse a byte array into a NB10ProgramDatabase
- ///
- /// Data to parse
- /// Offset into the byte array
- /// A filled NB10ProgramDatabase on success, null on error
- public static Models.PortableExecutable.DebugData.NB10ProgramDatabase? ParseNB10ProgramDatabase(this byte[] data, ref int offset)
- {
- var obj = new Models.PortableExecutable.DebugData.NB10ProgramDatabase();
-
- obj.Signature = data.ReadUInt32LittleEndian(ref offset);
- if (obj.Signature != 0x3031424E)
- return null;
-
- obj.Offset = data.ReadUInt32LittleEndian(ref offset);
- obj.Timestamp = data.ReadUInt32LittleEndian(ref offset);
- obj.Age = data.ReadUInt32LittleEndian(ref offset);
- obj.PdbFileName = data.ReadNullTerminatedAnsiString(ref offset) ?? string.Empty;
-
- return obj;
- }
-
- ///
- /// Parse a byte array into a RSDSProgramDatabase
- ///
- /// Data to parse
- /// Offset into the byte array
- /// A filled RSDSProgramDatabase on success, null on error
- public static Models.PortableExecutable.DebugData.RSDSProgramDatabase? ParseRSDSProgramDatabase(this byte[] data, ref int offset)
- {
- var obj = new Models.PortableExecutable.DebugData.RSDSProgramDatabase();
-
- obj.Signature = data.ReadUInt32LittleEndian(ref offset);
- if (obj.Signature != 0x53445352)
- return null;
-
- obj.GUID = data.ReadGuid(ref offset);
- obj.Age = data.ReadUInt32LittleEndian(ref offset);
- obj.PathAndFileName = data.ReadNullTerminatedUTF8String(ref offset) ?? string.Empty;
-
- return obj;
- }
-
- #endregion
}
}
diff --git a/SabreTools.Serialization/Readers/PortableExecutable.cs b/SabreTools.Serialization/Readers/PortableExecutable.cs
index 145d9144..c082a72f 100644
--- a/SabreTools.Serialization/Readers/PortableExecutable.cs
+++ b/SabreTools.Serialization/Readers/PortableExecutable.cs
@@ -2201,6 +2201,28 @@ namespace SabreTools.Serialization.Readers
return obj;
}
+ ///
+ /// Parse a byte array into a NB10ProgramDatabase
+ ///
+ /// Data to parse
+ /// Offset into the byte array
+ /// A filled NB10ProgramDatabase on success, null on error
+ public static Data.Models.PortableExecutable.DebugData.NB10ProgramDatabase? ParseNB10ProgramDatabase(byte[] data, ref int offset)
+ {
+ var obj = new Data.Models.PortableExecutable.DebugData.NB10ProgramDatabase();
+
+ obj.Signature = data.ReadUInt32LittleEndian(ref offset);
+ if (obj.Signature != 0x3031424E)
+ return null;
+
+ obj.Offset = data.ReadUInt32LittleEndian(ref offset);
+ obj.Timestamp = data.ReadUInt32LittleEndian(ref offset);
+ obj.Age = data.ReadUInt32LittleEndian(ref offset);
+ obj.PdbFileName = data.ReadNullTerminatedAnsiString(ref offset) ?? string.Empty;
+
+ return obj;
+ }
+
///
/// Parse a byte array into a NormalMenuHeader
///
@@ -2607,6 +2629,27 @@ namespace SabreTools.Serialization.Readers
return obj;
}
+ ///
+ /// Parse a byte array into a RSDSProgramDatabase
+ ///
+ /// Data to parse
+ /// Offset into the byte array
+ /// A filled RSDSProgramDatabase on success, null on error
+ public static Data.Models.PortableExecutable.DebugData.RSDSProgramDatabase? ParseRSDSProgramDatabase(byte[] data, ref int offset)
+ {
+ var obj = new Data.Models.PortableExecutable.DebugData.RSDSProgramDatabase();
+
+ obj.Signature = data.ReadUInt32LittleEndian(ref offset);
+ if (obj.Signature != 0x53445352)
+ return null;
+
+ obj.GUID = data.ReadGuid(ref offset);
+ obj.Age = data.ReadUInt32LittleEndian(ref offset);
+ obj.PathAndFileName = data.ReadNullTerminatedUTF8String(ref offset) ?? string.Empty;
+
+ return obj;
+ }
+
///
/// Parse a Stream into a SectionDefinition
///
diff --git a/SabreTools.Serialization/Wrappers/PortableExecutable.cs b/SabreTools.Serialization/Wrappers/PortableExecutable.cs
index 97d77549..29d49472 100644
--- a/SabreTools.Serialization/Wrappers/PortableExecutable.cs
+++ b/SabreTools.Serialization/Wrappers/PortableExecutable.cs
@@ -1485,7 +1485,7 @@ namespace SabreTools.Serialization.Wrappers
// NB10
if (signature == 0x3031424E)
{
- var nb10ProgramDatabase = entryData.ParseNB10ProgramDatabase(ref offset);
+ var nb10ProgramDatabase = Readers.PortableExecutable.ParseNB10ProgramDatabase(entryData, ref offset);
if (nb10ProgramDatabase is not null)
{
debugData[i] = nb10ProgramDatabase;
@@ -1496,7 +1496,7 @@ namespace SabreTools.Serialization.Wrappers
// RSDS
else if (signature == 0x53445352)
{
- var rsdsProgramDatabase = entryData.ParseRSDSProgramDatabase(ref offset);
+ var rsdsProgramDatabase = Readers.PortableExecutable.ParseRSDSProgramDatabase(entryData, ref offset);
if (rsdsProgramDatabase is not null)
{
debugData[i] = rsdsProgramDatabase;