From cec53e907fd0d375ac6cfbc4f0cda6c03368cf7b Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 4 Apr 2024 01:17:41 -0400 Subject: [PATCH] Move static deserializers to base class --- .../Deserializers/AACS.cs | 22 +---- .../Deserializers/ArchiveDotOrg.cs | 33 +------ .../Deserializers/AttractMode.cs | 22 +---- .../Deserializers/BDPlus.cs | 22 +---- .../Deserializers/BFPK.cs | 22 +---- SabreTools.Serialization/Deserializers/BSP.cs | 22 +---- .../Deserializers/BaseBinaryDeserializer.cs | 88 +++++++++++++++++++ SabreTools.Serialization/Deserializers/CFB.cs | 22 +---- SabreTools.Serialization/Deserializers/CIA.cs | 22 +---- .../Deserializers/Catalog.cs | 21 ----- .../Deserializers/ClrMamePro.cs | 1 + .../Deserializers/CueSheet.cs | 22 +---- .../Deserializers/DosCenter.cs | 22 +---- .../Deserializers/EverdriveSMDB.cs | 22 +---- SabreTools.Serialization/Deserializers/GCF.cs | 22 +---- .../Deserializers/Hashfile.cs | 1 + SabreTools.Serialization/Deserializers/IRD.cs | 22 +---- .../Deserializers/InstallShieldCabinet.cs | 22 +---- .../Deserializers/JsonFile.cs | 1 + .../Deserializers/LinearExecutable.cs | 22 +---- .../Deserializers/Listrom.cs | 22 +---- .../Deserializers/Listxml.cs | 33 +------ .../Deserializers/Logiqx.cs | 33 +------ SabreTools.Serialization/Deserializers/M1.cs | 33 +------ .../Deserializers/MSDOS.cs | 22 +---- .../Deserializers/MicrosoftCabinet.cs | 22 +---- .../Deserializers/MoPaQ.cs | 22 +---- .../Deserializers/N3DS.cs | 22 +---- SabreTools.Serialization/Deserializers/NCF.cs | 22 +---- .../Deserializers/NewExecutable.cs | 22 +---- .../Deserializers/Nitro.cs | 22 +---- .../Deserializers/OfflineList.cs | 33 +------ .../Deserializers/OpenMSX.cs | 33 +------ SabreTools.Serialization/Deserializers/PAK.cs | 22 +---- SabreTools.Serialization/Deserializers/PFF.cs | 22 +---- SabreTools.Serialization/Deserializers/PIC.cs | 22 +---- .../Deserializers/PlayJAudio.cs | 15 +--- .../Deserializers/PlayJPlaylist.cs | 22 +---- .../Deserializers/PortableExecutable.cs | 22 +---- .../Deserializers/Quantum.cs | 22 +---- .../Deserializers/RomCenter.cs | 22 +---- SabreTools.Serialization/Deserializers/SGA.cs | 22 +---- .../Deserializers/SeparatedValue.cs | 1 + .../Deserializers/SoftwareList.cs | 33 +------ .../Deserializers/VBSP.cs | 22 +---- SabreTools.Serialization/Deserializers/VPK.cs | 22 +---- SabreTools.Serialization/Deserializers/WAD.cs | 22 +---- SabreTools.Serialization/Deserializers/XZP.cs | 22 +---- .../Deserializers/XmlFile.cs | 1 + Test/Program.cs | 3 + 50 files changed, 138 insertions(+), 973 deletions(-) create mode 100644 SabreTools.Serialization/Deserializers/BaseBinaryDeserializer.cs diff --git a/SabreTools.Serialization/Deserializers/AACS.cs b/SabreTools.Serialization/Deserializers/AACS.cs index 7ac4b721..2ec4f669 100644 --- a/SabreTools.Serialization/Deserializers/AACS.cs +++ b/SabreTools.Serialization/Deserializers/AACS.cs @@ -9,19 +9,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class AACS : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static MediaKeyBlock? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new AACS(); - return deserializer.Deserialize(data, offset); - } - /// public MediaKeyBlock? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static MediaKeyBlock? DeserializeFile(string? path) - { - var deserializer = new AACS(); - return deserializer.Deserialize(path); - } - /// public MediaKeyBlock? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static MediaKeyBlock? DeserializeStream(Stream? data) - { - var deserializer = new AACS(); - return deserializer.Deserialize(data); - } - /// public MediaKeyBlock? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/ArchiveDotOrg.cs b/SabreTools.Serialization/Deserializers/ArchiveDotOrg.cs index acedfcb6..8fb3a960 100644 --- a/SabreTools.Serialization/Deserializers/ArchiveDotOrg.cs +++ b/SabreTools.Serialization/Deserializers/ArchiveDotOrg.cs @@ -3,37 +3,6 @@ namespace SabreTools.Serialization.Deserializers public class ArchiveDotOrg : XmlFile { - #region IByteDeserializer - - /// - public static Models.ArchiveDotOrg.Files? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new ArchiveDotOrg(); - return deserializer.Deserialize(data, offset); - } - - #endregion - - #region IFileDeserializer - - /// - public static Models.ArchiveDotOrg.Files? DeserializeFile(string? path) - { - var deserializer = new ArchiveDotOrg(); - return deserializer.Deserialize(path); - } - - #endregion - - #region IStreamDeserializer - - /// - public static Models.ArchiveDotOrg.Files? DeserializeStream(System.IO.Stream? data) - { - var deserializer = new ArchiveDotOrg(); - return deserializer.Deserialize(data); - } - - #endregion + // All logic taken care of in the base class } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/AttractMode.cs b/SabreTools.Serialization/Deserializers/AttractMode.cs index 4b852b0a..3d615f8a 100644 --- a/SabreTools.Serialization/Deserializers/AttractMode.cs +++ b/SabreTools.Serialization/Deserializers/AttractMode.cs @@ -9,6 +9,7 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class AttractMode : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer @@ -23,13 +24,6 @@ namespace SabreTools.Serialization.Deserializers #region IByteDeserializer - /// - public static MetadataFile? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new AttractMode(); - return deserializer.Deserialize(data, offset); - } - /// public MetadataFile? Deserialize(byte[]? data, int offset) { @@ -50,13 +44,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static MetadataFile? DeserializeFile(string? path) - { - var deserializer = new AttractMode(); - return deserializer.Deserialize(path); - } - /// public MetadataFile? Deserialize(string? path) { @@ -68,13 +55,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static MetadataFile? DeserializeStream(Stream? data) - { - var deserializer = new AttractMode(); - return deserializer.Deserialize(data); - } - /// public MetadataFile? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/BDPlus.cs b/SabreTools.Serialization/Deserializers/BDPlus.cs index 1fa34bd6..deddbee0 100644 --- a/SabreTools.Serialization/Deserializers/BDPlus.cs +++ b/SabreTools.Serialization/Deserializers/BDPlus.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.BDPlus.Constants; namespace SabreTools.Serialization.Deserializers { public class BDPlus : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static SVM? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new BDPlus(); - return deserializer.Deserialize(data, offset); - } - /// public SVM? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static SVM? DeserializeFile(string? path) - { - var deserializer = new BDPlus(); - return deserializer.Deserialize(path); - } - /// public SVM? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static SVM? DeserializeStream(Stream? data) - { - var deserializer = new BDPlus(); - return deserializer.Deserialize(data); - } - /// public SVM? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/BFPK.cs b/SabreTools.Serialization/Deserializers/BFPK.cs index ea1bbb3c..800dfe03 100644 --- a/SabreTools.Serialization/Deserializers/BFPK.cs +++ b/SabreTools.Serialization/Deserializers/BFPK.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.BFPK.Constants; namespace SabreTools.Serialization.Deserializers { public class BFPK : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Archive? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new BFPK(); - return deserializer.Deserialize(data, offset); - } - /// public Archive? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Archive? DeserializeFile(string? path) - { - var deserializer = new BFPK(); - return deserializer.Deserialize(path); - } - /// public Archive? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Archive? DeserializeStream(Stream? data) - { - var deserializer = new BFPK(); - return deserializer.Deserialize(data); - } - /// public Archive? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/BSP.cs b/SabreTools.Serialization/Deserializers/BSP.cs index 2d56c89d..c214023d 100644 --- a/SabreTools.Serialization/Deserializers/BSP.cs +++ b/SabreTools.Serialization/Deserializers/BSP.cs @@ -9,19 +9,13 @@ using static SabreTools.Models.BSP.Constants; namespace SabreTools.Serialization.Deserializers { public class BSP : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.BSP.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new BSP(); - return deserializer.Deserialize(data, offset); - } - /// public Models.BSP.File? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.BSP.File? DeserializeFile(string? path) - { - var deserializer = new BSP(); - return deserializer.Deserialize(path); - } - /// public Models.BSP.File? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.BSP.File? DeserializeStream(Stream? data) - { - var deserializer = new BSP(); - return deserializer.Deserialize(data); - } - /// public Models.BSP.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/BaseBinaryDeserializer.cs b/SabreTools.Serialization/Deserializers/BaseBinaryDeserializer.cs new file mode 100644 index 00000000..359bc0c9 --- /dev/null +++ b/SabreTools.Serialization/Deserializers/BaseBinaryDeserializer.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using SabreTools.Serialization.Interfaces; + +namespace SabreTools.Serialization.Deserializers +{ + /// + /// Base class for all binary deserializers + /// + /// Type of the model to deserialize + /// These methods assume there is a concrete implementation of the deserialzier for the model available + public abstract class BaseBinaryDeserializer + { + #region Static Implementations + + /// + public static TModel? DeserializeBytes(byte[]? data, int offset) + { + var deserializer = GetType>(); + if (deserializer == null) + return default; + + return deserializer.Deserialize(data, offset); + } + + /// + public static TModel? DeserializeFile(string? path) + { + var deserializer = GetType>(); + if (deserializer == null) + return default; + return deserializer.Deserialize(path); + } + + /// + public static TModel? DeserializeStream(Stream? data) + { + var deserializer = GetType>(); + if (deserializer == null) + return default; + + return deserializer.Deserialize(data); + } + + #endregion + + /// + /// Get a constructed instance of a type, if possible + /// + /// Deserializer type to construct + /// Deserializer of the requested type, null on error + private static TDeserializer? GetType() + { + var assembly = Assembly.GetExecutingAssembly(); + if (assembly == null) + return default; + + // If not all types can be loaded, use the ones that could be + List assemblyTypes = []; + try + { + assemblyTypes = assembly.GetTypes().ToList(); + } + catch (ReflectionTypeLoadException rtle) + { + assemblyTypes = rtle.Types.Where(t => t != null)!.ToList(); + } + + // Loop through all types + foreach (Type type in assemblyTypes) + { + // If the type isn't a class or doesn't implement the interface + if (!type.IsClass || type.GetInterface(typeof(TDeserializer).Name) == null) + continue; + + // Try to create a concrete instance of the type + var instance = (TDeserializer?)Activator.CreateInstance(type); + if (instance != null) + return instance; + } + + return default; + } + } +} \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/CFB.cs b/SabreTools.Serialization/Deserializers/CFB.cs index fc3e6674..17676753 100644 --- a/SabreTools.Serialization/Deserializers/CFB.cs +++ b/SabreTools.Serialization/Deserializers/CFB.cs @@ -10,19 +10,13 @@ using static SabreTools.Models.CFB.Constants; namespace SabreTools.Serialization.Deserializers { public class CFB : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Binary? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new CFB(); - return deserializer.Deserialize(data, offset); - } - /// public Binary? Deserialize(byte[]? data, int offset) { @@ -43,13 +37,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Binary? DeserializeFile(string? path) - { - var deserializer = new CFB(); - return deserializer.Deserialize(path); - } - /// public Binary? Deserialize(string? path) { @@ -61,13 +48,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Binary? DeserializeStream(Stream? data) - { - var deserializer = new CFB(); - return deserializer.Deserialize(data); - } - /// public Binary? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/CIA.cs b/SabreTools.Serialization/Deserializers/CIA.cs index d08c549c..2eb6051b 100644 --- a/SabreTools.Serialization/Deserializers/CIA.cs +++ b/SabreTools.Serialization/Deserializers/CIA.cs @@ -8,19 +8,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class CIA : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.N3DS.CIA? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new CIA(); - return deserializer.Deserialize(data, offset); - } - /// public Models.N3DS.CIA? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.N3DS.CIA? DeserializeFile(string? path) - { - var deserializer = new CIA(); - return deserializer.Deserialize(path); - } - /// public Models.N3DS.CIA? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.N3DS.CIA? DeserializeStream(Stream? data) - { - var deserializer = new CIA(); - return deserializer.Deserialize(data); - } - /// public Models.N3DS.CIA? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/Catalog.cs b/SabreTools.Serialization/Deserializers/Catalog.cs index 481c9d92..e6e5d028 100644 --- a/SabreTools.Serialization/Deserializers/Catalog.cs +++ b/SabreTools.Serialization/Deserializers/Catalog.cs @@ -8,13 +8,6 @@ namespace SabreTools.Serialization.Deserializers { #region IByteDeserializer - /// - public static Models.Xbox.Catalog? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new Catalog(); - return deserializer.Deserialize(data, offset); - } - /// Catalog.js file is encoded as UTF-16 LE public override Models.Xbox.Catalog? Deserialize(byte[]? data, int offset) => Deserialize(data, offset, new UnicodeEncoding()); @@ -23,13 +16,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.Xbox.Catalog? DeserializeFile(string? path) - { - var deserializer = new Catalog(); - return deserializer.Deserialize(path); - } - /// Catalog.js file is encoded as UTF-16 LE public override Models.Xbox.Catalog? Deserialize(string? path) => Deserialize(path, new UnicodeEncoding()); @@ -38,13 +24,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.Xbox.Catalog? DeserializeStream(Stream? data) - { - var deserializer = new Catalog(); - return deserializer.Deserialize(data); - } - /// Catalog.js file is encoded as UTF-16 LE public override Models.Xbox.Catalog? Deserialize(Stream? data) => Deserialize(data, new UnicodeEncoding()); diff --git a/SabreTools.Serialization/Deserializers/ClrMamePro.cs b/SabreTools.Serialization/Deserializers/ClrMamePro.cs index 2de58a4c..4830a900 100644 --- a/SabreTools.Serialization/Deserializers/ClrMamePro.cs +++ b/SabreTools.Serialization/Deserializers/ClrMamePro.cs @@ -9,6 +9,7 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class ClrMamePro : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer diff --git a/SabreTools.Serialization/Deserializers/CueSheet.cs b/SabreTools.Serialization/Deserializers/CueSheet.cs index d77c7f5a..1181b1ce 100644 --- a/SabreTools.Serialization/Deserializers/CueSheet.cs +++ b/SabreTools.Serialization/Deserializers/CueSheet.cs @@ -10,19 +10,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class CueSheet : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.CueSheets.CueSheet? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new CueSheet(); - return deserializer.Deserialize(data, offset); - } - /// public Models.CueSheets.CueSheet? Deserialize(byte[]? data, int offset) { @@ -43,13 +37,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.CueSheets.CueSheet? DeserializeFile(string? path) - { - var deserializer = new CueSheet(); - return deserializer.Deserialize(path); - } - /// public Models.CueSheets.CueSheet? Deserialize(string? path) { @@ -61,13 +48,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.CueSheets.CueSheet? DeserializeStream(Stream? data) - { - var deserializer = new CueSheet(); - return deserializer.Deserialize(data); - } - /// public Models.CueSheets.CueSheet? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/DosCenter.cs b/SabreTools.Serialization/Deserializers/DosCenter.cs index b6a10eb7..769a7e75 100644 --- a/SabreTools.Serialization/Deserializers/DosCenter.cs +++ b/SabreTools.Serialization/Deserializers/DosCenter.cs @@ -8,19 +8,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class DosCenter : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static MetadataFile? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new DosCenter(); - return deserializer.Deserialize(data, offset); - } - /// public MetadataFile? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static MetadataFile? DeserializeFile(string? path) - { - var deserializer = new DosCenter(); - return deserializer.Deserialize(path); - } - /// public MetadataFile? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static MetadataFile? DeserializeStream(Stream? data) - { - var deserializer = new DosCenter(); - return deserializer.Deserialize(data); - } - /// public MetadataFile? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/EverdriveSMDB.cs b/SabreTools.Serialization/Deserializers/EverdriveSMDB.cs index 52c3e4af..8edde60c 100644 --- a/SabreTools.Serialization/Deserializers/EverdriveSMDB.cs +++ b/SabreTools.Serialization/Deserializers/EverdriveSMDB.cs @@ -9,19 +9,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class EverdriveSMDB : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static MetadataFile? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new EverdriveSMDB(); - return deserializer.Deserialize(data, offset); - } - /// public MetadataFile? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static MetadataFile? DeserializeFile(string? path) - { - var deserializer = new EverdriveSMDB(); - return deserializer.Deserialize(path); - } - /// public MetadataFile? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static MetadataFile? DeserializeStream(Stream? data) - { - var deserializer = new EverdriveSMDB(); - return deserializer.Deserialize(data); - } - /// public MetadataFile? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/GCF.cs b/SabreTools.Serialization/Deserializers/GCF.cs index 011ab320..47b8a806 100644 --- a/SabreTools.Serialization/Deserializers/GCF.cs +++ b/SabreTools.Serialization/Deserializers/GCF.cs @@ -8,19 +8,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class GCF : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.GCF.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new GCF(); - return deserializer.Deserialize(data, offset); - } - /// public Models.GCF.File? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.GCF.File? DeserializeFile(string? path) - { - var deserializer = new GCF(); - return deserializer.Deserialize(path); - } - /// public Models.GCF.File? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.GCF.File? DeserializeStream(Stream? data) - { - var deserializer = new GCF(); - return deserializer.Deserialize(data); - } - /// public Models.GCF.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/Hashfile.cs b/SabreTools.Serialization/Deserializers/Hashfile.cs index 503fc038..fd2fd97b 100644 --- a/SabreTools.Serialization/Deserializers/Hashfile.cs +++ b/SabreTools.Serialization/Deserializers/Hashfile.cs @@ -9,6 +9,7 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class Hashfile : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer diff --git a/SabreTools.Serialization/Deserializers/IRD.cs b/SabreTools.Serialization/Deserializers/IRD.cs index c5426b4b..d81f5e5f 100644 --- a/SabreTools.Serialization/Deserializers/IRD.cs +++ b/SabreTools.Serialization/Deserializers/IRD.cs @@ -6,19 +6,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class IRD : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.IRD.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new IRD(); - return deserializer.Deserialize(data, offset); - } - /// public Models.IRD.File? Deserialize(byte[]? data, int offset) { @@ -39,13 +33,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.IRD.File? DeserializeFile(string? path) - { - var deserializer = new IRD(); - return deserializer.Deserialize(path); - } - /// public Models.IRD.File? Deserialize(string? path) { @@ -57,13 +44,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.IRD.File? DeserializeStream(Stream? data) - { - var deserializer = new IRD(); - return deserializer.Deserialize(data); - } - /// public Models.IRD.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/InstallShieldCabinet.cs b/SabreTools.Serialization/Deserializers/InstallShieldCabinet.cs index 069a9d8d..06330c10 100644 --- a/SabreTools.Serialization/Deserializers/InstallShieldCabinet.cs +++ b/SabreTools.Serialization/Deserializers/InstallShieldCabinet.cs @@ -10,19 +10,13 @@ namespace SabreTools.Serialization.Deserializers { // TODO: Add multi-cabinet reading public class InstallShieldCabinet : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Cabinet? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new InstallShieldCabinet(); - return deserializer.Deserialize(data, offset); - } - /// public Cabinet? Deserialize(byte[]? data, int offset) { @@ -43,13 +37,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Cabinet? DeserializeFile(string? path) - { - var deserializer = new InstallShieldCabinet(); - return deserializer.Deserialize(path); - } - /// public Cabinet? Deserialize(string? path) { @@ -61,13 +48,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Cabinet? DeserializeStream(Stream? data) - { - var deserializer = new InstallShieldCabinet(); - return deserializer.Deserialize(data); - } - /// public Cabinet? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/JsonFile.cs b/SabreTools.Serialization/Deserializers/JsonFile.cs index 5683d6b6..82781837 100644 --- a/SabreTools.Serialization/Deserializers/JsonFile.cs +++ b/SabreTools.Serialization/Deserializers/JsonFile.cs @@ -10,6 +10,7 @@ namespace SabreTools.Serialization.Deserializers /// /// public class JsonFile : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer diff --git a/SabreTools.Serialization/Deserializers/LinearExecutable.cs b/SabreTools.Serialization/Deserializers/LinearExecutable.cs index 78e18246..f05e46ec 100644 --- a/SabreTools.Serialization/Deserializers/LinearExecutable.cs +++ b/SabreTools.Serialization/Deserializers/LinearExecutable.cs @@ -9,19 +9,13 @@ using static SabreTools.Models.LinearExecutable.Constants; namespace SabreTools.Serialization.Deserializers { public class LinearExecutable : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Executable? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new LinearExecutable(); - return deserializer.Deserialize(data, offset); - } - /// public Executable? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Executable? DeserializeFile(string? path) - { - var deserializer = new LinearExecutable(); - return deserializer.Deserialize(path); - } - /// public Executable? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Executable? DeserializeStream(Stream? data) - { - var deserializer = new LinearExecutable(); - return deserializer.Deserialize(data); - } - /// public Executable? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/Listrom.cs b/SabreTools.Serialization/Deserializers/Listrom.cs index 6bc87733..54b94201 100644 --- a/SabreTools.Serialization/Deserializers/Listrom.cs +++ b/SabreTools.Serialization/Deserializers/Listrom.cs @@ -8,19 +8,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class Listrom : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static MetadataFile? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new Listrom(); - return deserializer.Deserialize(data, offset); - } - /// public MetadataFile? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static MetadataFile? DeserializeFile(string? path) - { - var deserializer = new Listrom(); - return deserializer.Deserialize(path); - } - /// public MetadataFile? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static MetadataFile? DeserializeStream(Stream? data) - { - var deserializer = new Listrom(); - return deserializer.Deserialize(data); - } - /// public MetadataFile? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/Listxml.cs b/SabreTools.Serialization/Deserializers/Listxml.cs index 6b0c3611..92c4b148 100644 --- a/SabreTools.Serialization/Deserializers/Listxml.cs +++ b/SabreTools.Serialization/Deserializers/Listxml.cs @@ -3,37 +3,6 @@ namespace SabreTools.Serialization.Deserializers public class Listxml : XmlFile { - #region IByteDeserializer - - /// - public static Models.Listxml.Mame? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new Listxml(); - return deserializer.Deserialize(data, offset); - } - - #endregion - - #region IFileDeserializer - - /// - public static Models.Listxml.Mame? DeserializeFile(string? path) - { - var deserializer = new Listxml(); - return deserializer.Deserialize(path); - } - - #endregion - - #region IStreamDeserializer - - /// - public static Models.Listxml.Mame? DeserializeStream(System.IO.Stream? data) - { - var deserializer = new Listxml(); - return deserializer.Deserialize(data); - } - - #endregion + // All logic taken care of in the base class } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/Logiqx.cs b/SabreTools.Serialization/Deserializers/Logiqx.cs index 71849c4e..86844be8 100644 --- a/SabreTools.Serialization/Deserializers/Logiqx.cs +++ b/SabreTools.Serialization/Deserializers/Logiqx.cs @@ -3,37 +3,6 @@ namespace SabreTools.Serialization.Deserializers public class Logiqx : XmlFile { - #region IByteDeserializer - - /// - public static Models.Logiqx.Datafile? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new Logiqx(); - return deserializer.Deserialize(data, offset); - } - - #endregion - - #region IFileDeserializer - - /// - public static Models.Logiqx.Datafile? DeserializeFile(string? path) - { - var deserializer = new Logiqx(); - return deserializer.Deserialize(path); - } - - #endregion - - #region IStreamDeserializer - - /// - public static Models.Logiqx.Datafile? DeserializeStream(System.IO.Stream? data) - { - var deserializer = new Logiqx(); - return deserializer.Deserialize(data); - } - - #endregion + // All logic taken care of in the base class } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/M1.cs b/SabreTools.Serialization/Deserializers/M1.cs index c7d8e3e0..0f033b0e 100644 --- a/SabreTools.Serialization/Deserializers/M1.cs +++ b/SabreTools.Serialization/Deserializers/M1.cs @@ -3,37 +3,6 @@ namespace SabreTools.Serialization.Deserializers public class M1 : XmlFile { - #region IByteDeserializer - - /// - public static Models.Listxml.M1? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new M1(); - return deserializer.Deserialize(data, offset); - } - - #endregion - - #region IFileDeserializer - - /// - public static Models.Listxml.M1? DeserializeFile(string? path) - { - var deserializer = new M1(); - return deserializer.Deserialize(path); - } - - #endregion - - #region IStreamDeserializer - - /// - public static Models.Listxml.M1? DeserializeStream(System.IO.Stream? data) - { - var deserializer = new M1(); - return deserializer.Deserialize(data); - } - - #endregion + // All logic taken care of in the base class } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/MSDOS.cs b/SabreTools.Serialization/Deserializers/MSDOS.cs index 6a8d4815..bf724586 100644 --- a/SabreTools.Serialization/Deserializers/MSDOS.cs +++ b/SabreTools.Serialization/Deserializers/MSDOS.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.MSDOS.Constants; namespace SabreTools.Serialization.Deserializers { public class MSDOS : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Executable? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new MSDOS(); - return deserializer.Deserialize(data, offset); - } - /// public Executable? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Executable? DeserializeFile(string? path) - { - var deserializer = new MSDOS(); - return deserializer.Deserialize(path); - } - /// public Executable? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Executable? DeserializeStream(Stream? data) - { - var deserializer = new MSDOS(); - return deserializer.Deserialize(data); - } - /// public Executable? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/MicrosoftCabinet.cs b/SabreTools.Serialization/Deserializers/MicrosoftCabinet.cs index 4e58a589..1e45735c 100644 --- a/SabreTools.Serialization/Deserializers/MicrosoftCabinet.cs +++ b/SabreTools.Serialization/Deserializers/MicrosoftCabinet.cs @@ -9,19 +9,13 @@ namespace SabreTools.Serialization.Deserializers { // TODO: Add multi-cabinet reading public class MicrosoftCabinet : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Cabinet? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new MicrosoftCabinet(); - return deserializer.Deserialize(data, offset); - } - /// public Cabinet? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Cabinet? DeserializeFile(string? path) - { - var deserializer = new MicrosoftCabinet(); - return deserializer.Deserialize(path); - } - /// public Cabinet? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Cabinet? DeserializeStream(Stream? data) - { - var deserializer = new MicrosoftCabinet(); - return deserializer.Deserialize(data); - } - /// public Cabinet? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/MoPaQ.cs b/SabreTools.Serialization/Deserializers/MoPaQ.cs index 286e06b4..cf9f9bb3 100644 --- a/SabreTools.Serialization/Deserializers/MoPaQ.cs +++ b/SabreTools.Serialization/Deserializers/MoPaQ.cs @@ -10,19 +10,13 @@ using static SabreTools.Models.MoPaQ.Constants; namespace SabreTools.Serialization.Deserializers { public class MoPaQ : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Archive? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new MoPaQ(); - return deserializer.Deserialize(data, offset); - } - /// public Archive? Deserialize(byte[]? data, int offset) { @@ -43,13 +37,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Archive? DeserializeFile(string? path) - { - var deserializer = new MoPaQ(); - return deserializer.Deserialize(path); - } - /// public Archive? Deserialize(string? path) { @@ -61,13 +48,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Archive? DeserializeStream(Stream? data) - { - var deserializer = new MoPaQ(); - return deserializer.Deserialize(data); - } - /// public Archive? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/N3DS.cs b/SabreTools.Serialization/Deserializers/N3DS.cs index 09a8a915..2f4e2d79 100644 --- a/SabreTools.Serialization/Deserializers/N3DS.cs +++ b/SabreTools.Serialization/Deserializers/N3DS.cs @@ -9,19 +9,13 @@ using static SabreTools.Models.N3DS.Constants; namespace SabreTools.Serialization.Deserializers { public class N3DS : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Cart? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new N3DS(); - return deserializer.Deserialize(data, offset); - } - /// public Cart? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Cart? DeserializeFile(string? path) - { - var deserializer = new N3DS(); - return deserializer.Deserialize(path); - } - /// public Cart? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Cart? DeserializeStream(Stream? data) - { - var deserializer = new N3DS(); - return deserializer.Deserialize(data); - } - /// public Cart? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/NCF.cs b/SabreTools.Serialization/Deserializers/NCF.cs index d3aa0a90..b39c2587 100644 --- a/SabreTools.Serialization/Deserializers/NCF.cs +++ b/SabreTools.Serialization/Deserializers/NCF.cs @@ -8,19 +8,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class NCF : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.NCF.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new NCF(); - return deserializer.Deserialize(data, offset); - } - /// public Models.NCF.File? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.NCF.File? DeserializeFile(string? path) - { - var deserializer = new NCF(); - return deserializer.Deserialize(path); - } - /// public Models.NCF.File? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.NCF.File? DeserializeStream(Stream? data) - { - var deserializer = new NCF(); - return deserializer.Deserialize(data); - } - /// public Models.NCF.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/NewExecutable.cs b/SabreTools.Serialization/Deserializers/NewExecutable.cs index acb89e57..ed298872 100644 --- a/SabreTools.Serialization/Deserializers/NewExecutable.cs +++ b/SabreTools.Serialization/Deserializers/NewExecutable.cs @@ -10,19 +10,13 @@ using static SabreTools.Models.NewExecutable.Constants; namespace SabreTools.Serialization.Deserializers { public class NewExecutable : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Executable? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new NewExecutable(); - return deserializer.Deserialize(data, offset); - } - /// public Executable? Deserialize(byte[]? data, int offset) { @@ -43,13 +37,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Executable? DeserializeFile(string? path) - { - var deserializer = new NewExecutable(); - return deserializer.Deserialize(path); - } - /// public Executable? Deserialize(string? path) { @@ -61,13 +48,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Executable? DeserializeStream(Stream? data) - { - var deserializer = new NewExecutable(); - return deserializer.Deserialize(data); - } - /// public Executable? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/Nitro.cs b/SabreTools.Serialization/Deserializers/Nitro.cs index 3ccca111..820099a1 100644 --- a/SabreTools.Serialization/Deserializers/Nitro.cs +++ b/SabreTools.Serialization/Deserializers/Nitro.cs @@ -8,19 +8,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class Nitro : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Cart? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new Nitro(); - return deserializer.Deserialize(data, offset); - } - /// public Cart? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Cart? DeserializeFile(string? path) - { - var deserializer = new Nitro(); - return deserializer.Deserialize(path); - } - /// public Cart? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Cart? DeserializeStream(Stream? data) - { - var deserializer = new Nitro(); - return deserializer.Deserialize(data); - } - /// public Cart? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/OfflineList.cs b/SabreTools.Serialization/Deserializers/OfflineList.cs index 5ee37f43..7d96b2df 100644 --- a/SabreTools.Serialization/Deserializers/OfflineList.cs +++ b/SabreTools.Serialization/Deserializers/OfflineList.cs @@ -3,37 +3,6 @@ namespace SabreTools.Serialization.Deserializers public class OfflineList : XmlFile { - #region IByteDeserializer - - /// - public static Models.OfflineList.Dat? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new OfflineList(); - return deserializer.Deserialize(data, offset); - } - - #endregion - - #region IFileDeserializer - - /// - public static Models.OfflineList.Dat? DeserializeFile(string? path) - { - var deserializer = new OfflineList(); - return deserializer.Deserialize(path); - } - - #endregion - - #region IStreamDeserializer - - /// - public static Models.OfflineList.Dat? DeserializeStream(System.IO.Stream? data) - { - var deserializer = new OfflineList(); - return deserializer.Deserialize(data); - } - - #endregion + // All logic taken care of in the base class } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/OpenMSX.cs b/SabreTools.Serialization/Deserializers/OpenMSX.cs index c0d454a8..b95c37f7 100644 --- a/SabreTools.Serialization/Deserializers/OpenMSX.cs +++ b/SabreTools.Serialization/Deserializers/OpenMSX.cs @@ -3,37 +3,6 @@ namespace SabreTools.Serialization.Deserializers public class OpenMSX : XmlFile { - #region IByteDeserializer - - /// - public static Models.OpenMSX.SoftwareDb? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new OpenMSX(); - return deserializer.Deserialize(data, offset); - } - - #endregion - - #region IFileDeserializer - - /// - public static Models.OpenMSX.SoftwareDb? DeserializeFile(string? path) - { - var deserializer = new OpenMSX(); - return deserializer.Deserialize(path); - } - - #endregion - - #region IStreamDeserializer - - /// - public static Models.OpenMSX.SoftwareDb? DeserializeStream(System.IO.Stream? data) - { - var deserializer = new OpenMSX(); - return deserializer.Deserialize(data); - } - - #endregion + // All logic taken care of in the base class } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/PAK.cs b/SabreTools.Serialization/Deserializers/PAK.cs index f997e25f..4bf1ac5a 100644 --- a/SabreTools.Serialization/Deserializers/PAK.cs +++ b/SabreTools.Serialization/Deserializers/PAK.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.PAK.Constants; namespace SabreTools.Serialization.Deserializers { public class PAK : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.PAK.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new PAK(); - return deserializer.Deserialize(data, offset); - } - /// public Models.PAK.File? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.PAK.File? DeserializeFile(string? path) - { - var deserializer = new PAK(); - return deserializer.Deserialize(path); - } - /// public Models.PAK.File? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.PAK.File? DeserializeStream(Stream? data) - { - var deserializer = new PAK(); - return deserializer.Deserialize(data); - } - /// public Models.PAK.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/PFF.cs b/SabreTools.Serialization/Deserializers/PFF.cs index 3857d8cc..c716756e 100644 --- a/SabreTools.Serialization/Deserializers/PFF.cs +++ b/SabreTools.Serialization/Deserializers/PFF.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.PFF.Constants; namespace SabreTools.Serialization.Deserializers { public class PFF : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Archive? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new PFF(); - return deserializer.Deserialize(data, offset); - } - /// public Archive? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Archive? DeserializeFile(string? path) - { - var deserializer = new PFF(); - return deserializer.Deserialize(path); - } - /// public Archive? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Archive? DeserializeStream(Stream? data) - { - var deserializer = new PFF(); - return deserializer.Deserialize(data); - } - /// public Archive? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/PIC.cs b/SabreTools.Serialization/Deserializers/PIC.cs index d90a6aaa..952714e5 100644 --- a/SabreTools.Serialization/Deserializers/PIC.cs +++ b/SabreTools.Serialization/Deserializers/PIC.cs @@ -9,19 +9,13 @@ using static SabreTools.Models.PIC.Constants; namespace SabreTools.Serialization.Deserializers { public class PIC : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static DiscInformation? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new PIC(); - return deserializer.Deserialize(data, offset); - } - /// public DiscInformation? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static DiscInformation? DeserializeFile(string? path) - { - var deserializer = new PIC(); - return deserializer.Deserialize(path); - } - /// public DiscInformation? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static DiscInformation? DeserializeStream(Stream? data) - { - var deserializer = new PIC(); - return deserializer.Deserialize(data); - } - /// public DiscInformation? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/PlayJAudio.cs b/SabreTools.Serialization/Deserializers/PlayJAudio.cs index ba036b36..8612b589 100644 --- a/SabreTools.Serialization/Deserializers/PlayJAudio.cs +++ b/SabreTools.Serialization/Deserializers/PlayJAudio.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.PlayJ.Constants; namespace SabreTools.Serialization.Deserializers { public class PlayJAudio : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static AudioFile? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new PlayJAudio(); - return deserializer.Deserialize(data, offset); - } - /// public AudioFile? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static AudioFile? DeserializeFile(string? path) - { - var deserializer = new PlayJAudio(); - return deserializer.Deserialize(path); - } - /// public AudioFile? Deserialize(string? path) { diff --git a/SabreTools.Serialization/Deserializers/PlayJPlaylist.cs b/SabreTools.Serialization/Deserializers/PlayJPlaylist.cs index 2db03e7e..218653e2 100644 --- a/SabreTools.Serialization/Deserializers/PlayJPlaylist.cs +++ b/SabreTools.Serialization/Deserializers/PlayJPlaylist.cs @@ -6,19 +6,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class PlayJPlaylist : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Playlist? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new PlayJPlaylist(); - return deserializer.Deserialize(data, offset); - } - /// public Playlist? Deserialize(byte[]? data, int offset) { @@ -39,13 +33,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Playlist? DeserializeFile(string? path) - { - var deserializer = new PlayJPlaylist(); - return deserializer.Deserialize(path); - } - /// public Playlist? Deserialize(string? path) { @@ -57,13 +44,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Playlist? DeserializeStream(Stream? data) - { - var deserializer = new PlayJPlaylist(); - return deserializer.Deserialize(data); - } - /// public Playlist? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/PortableExecutable.cs b/SabreTools.Serialization/Deserializers/PortableExecutable.cs index 516da87d..d68246f3 100644 --- a/SabreTools.Serialization/Deserializers/PortableExecutable.cs +++ b/SabreTools.Serialization/Deserializers/PortableExecutable.cs @@ -11,19 +11,13 @@ using static SabreTools.Models.PortableExecutable.Constants; namespace SabreTools.Serialization.Deserializers { public class PortableExecutable : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Executable? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new PortableExecutable(); - return deserializer.Deserialize(data, offset); - } - /// public Executable? Deserialize(byte[]? data, int offset) { @@ -44,13 +38,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Executable? DeserializeFile(string? path) - { - var deserializer = new PortableExecutable(); - return deserializer.Deserialize(path); - } - /// public Executable? Deserialize(string? path) { @@ -62,13 +49,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Executable? DeserializeStream(Stream? data) - { - var deserializer = new PortableExecutable(); - return deserializer.Deserialize(data); - } - /// public Executable? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/Quantum.cs b/SabreTools.Serialization/Deserializers/Quantum.cs index 1a604c39..6039d2bf 100644 --- a/SabreTools.Serialization/Deserializers/Quantum.cs +++ b/SabreTools.Serialization/Deserializers/Quantum.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.Quantum.Constants; namespace SabreTools.Serialization.Deserializers { public class Quantum : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Archive? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new Quantum(); - return deserializer.Deserialize(data, offset); - } - /// public Archive? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Archive? DeserializeFile(string? path) - { - var deserializer = new Quantum(); - return deserializer.Deserialize(path); - } - /// public Archive? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Archive? DeserializeStream(Stream? data) - { - var deserializer = new Quantum(); - return deserializer.Deserialize(data); - } - /// public Archive? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/RomCenter.cs b/SabreTools.Serialization/Deserializers/RomCenter.cs index caa5b884..38eb3027 100644 --- a/SabreTools.Serialization/Deserializers/RomCenter.cs +++ b/SabreTools.Serialization/Deserializers/RomCenter.cs @@ -9,19 +9,13 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class RomCenter : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static MetadataFile? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new RomCenter(); - return deserializer.Deserialize(data, offset); - } - /// public MetadataFile? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static MetadataFile? DeserializeFile(string? path) - { - var deserializer = new RomCenter(); - return deserializer.Deserialize(path); - } - /// public MetadataFile? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static MetadataFile? DeserializeStream(Stream? data) - { - var deserializer = new RomCenter(); - return deserializer.Deserialize(data); - } - /// public MetadataFile? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/SGA.cs b/SabreTools.Serialization/Deserializers/SGA.cs index b72bb55e..af03f6b6 100644 --- a/SabreTools.Serialization/Deserializers/SGA.cs +++ b/SabreTools.Serialization/Deserializers/SGA.cs @@ -9,19 +9,13 @@ using static SabreTools.Models.SGA.Constants; namespace SabreTools.Serialization.Deserializers { public class SGA : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.SGA.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new SGA(); - return deserializer.Deserialize(data, offset); - } - /// public Models.SGA.File? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.SGA.File? DeserializeFile(string? path) - { - var deserializer = new SGA(); - return deserializer.Deserialize(path); - } - /// public Models.SGA.File? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.SGA.File? DeserializeStream(Stream? data) - { - var deserializer = new SGA(); - return deserializer.Deserialize(data); - } - /// public Models.SGA.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/SeparatedValue.cs b/SabreTools.Serialization/Deserializers/SeparatedValue.cs index 21d98f03..56830106 100644 --- a/SabreTools.Serialization/Deserializers/SeparatedValue.cs +++ b/SabreTools.Serialization/Deserializers/SeparatedValue.cs @@ -9,6 +9,7 @@ using SabreTools.Serialization.Interfaces; namespace SabreTools.Serialization.Deserializers { public class SeparatedValue : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer diff --git a/SabreTools.Serialization/Deserializers/SoftwareList.cs b/SabreTools.Serialization/Deserializers/SoftwareList.cs index 4646a88b..ee951734 100644 --- a/SabreTools.Serialization/Deserializers/SoftwareList.cs +++ b/SabreTools.Serialization/Deserializers/SoftwareList.cs @@ -3,37 +3,6 @@ namespace SabreTools.Serialization.Deserializers public class SoftwareList : XmlFile { - #region IByteDeserializer - - /// - public static Models.SoftwareList.SoftwareList? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new SoftwareList(); - return deserializer.Deserialize(data, offset); - } - - #endregion - - #region IFileDeserializer - - /// - public static Models.SoftwareList.SoftwareList? DeserializeFile(string? path) - { - var deserializer = new SoftwareList(); - return deserializer.Deserialize(path); - } - - #endregion - - #region IStreamDeserializer - - /// - public static Models.SoftwareList.SoftwareList? DeserializeStream(System.IO.Stream? data) - { - var deserializer = new SoftwareList(); - return deserializer.Deserialize(data); - } - - #endregion + // All logic taken care of in the base class } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/VBSP.cs b/SabreTools.Serialization/Deserializers/VBSP.cs index e807efc7..7c6ff24d 100644 --- a/SabreTools.Serialization/Deserializers/VBSP.cs +++ b/SabreTools.Serialization/Deserializers/VBSP.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.VBSP.Constants; namespace SabreTools.Serialization.Deserializers { public class VBSP : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.VBSP.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new VBSP(); - return deserializer.Deserialize(data, offset); - } - /// public Models.VBSP.File? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.VBSP.File? DeserializeFile(string? path) - { - var deserializer = new VBSP(); - return deserializer.Deserialize(path); - } - /// public Models.VBSP.File? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.VBSP.File? DeserializeStream(Stream? data) - { - var deserializer = new VBSP(); - return deserializer.Deserialize(data); - } - /// public Models.VBSP.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/VPK.cs b/SabreTools.Serialization/Deserializers/VPK.cs index 1a551270..f7cddf8b 100644 --- a/SabreTools.Serialization/Deserializers/VPK.cs +++ b/SabreTools.Serialization/Deserializers/VPK.cs @@ -9,19 +9,13 @@ using static SabreTools.Models.VPK.Constants; namespace SabreTools.Serialization.Deserializers { public class VPK : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.VPK.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new VPK(); - return deserializer.Deserialize(data, offset); - } - /// public Models.VPK.File? Deserialize(byte[]? data, int offset) { @@ -42,13 +36,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.VPK.File? DeserializeFile(string? path) - { - var deserializer = new VPK(); - return deserializer.Deserialize(path); - } - /// public Models.VPK.File? Deserialize(string? path) { @@ -60,13 +47,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.VPK.File? DeserializeStream(Stream? data) - { - var deserializer = new VPK(); - return deserializer.Deserialize(data); - } - /// public Models.VPK.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/WAD.cs b/SabreTools.Serialization/Deserializers/WAD.cs index 04b65562..1b2bb9aa 100644 --- a/SabreTools.Serialization/Deserializers/WAD.cs +++ b/SabreTools.Serialization/Deserializers/WAD.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.WAD.Constants; namespace SabreTools.Serialization.Deserializers { public class WAD : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.WAD.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new WAD(); - return deserializer.Deserialize(data, offset); - } - /// public Models.WAD.File? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.WAD.File? DeserializeFile(string? path) - { - var deserializer = new WAD(); - return deserializer.Deserialize(path); - } - /// public Models.WAD.File? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.WAD.File? DeserializeStream(Stream? data) - { - var deserializer = new WAD(); - return deserializer.Deserialize(data); - } - /// public Models.WAD.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/XZP.cs b/SabreTools.Serialization/Deserializers/XZP.cs index dc7fccf5..088ab421 100644 --- a/SabreTools.Serialization/Deserializers/XZP.cs +++ b/SabreTools.Serialization/Deserializers/XZP.cs @@ -8,19 +8,13 @@ using static SabreTools.Models.XZP.Constants; namespace SabreTools.Serialization.Deserializers { public class XZP : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer { #region IByteDeserializer - /// - public static Models.XZP.File? DeserializeBytes(byte[]? data, int offset) - { - var deserializer = new XZP(); - return deserializer.Deserialize(data, offset); - } - /// public Models.XZP.File? Deserialize(byte[]? data, int offset) { @@ -41,13 +35,6 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer - /// - public static Models.XZP.File? DeserializeFile(string? path) - { - var deserializer = new XZP(); - return deserializer.Deserialize(path); - } - /// public Models.XZP.File? Deserialize(string? path) { @@ -59,13 +46,6 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer - /// - public static Models.XZP.File? DeserializeStream(Stream? data) - { - var deserializer = new XZP(); - return deserializer.Deserialize(data); - } - /// public Models.XZP.File? Deserialize(Stream? data) { diff --git a/SabreTools.Serialization/Deserializers/XmlFile.cs b/SabreTools.Serialization/Deserializers/XmlFile.cs index 01351f44..a103078b 100644 --- a/SabreTools.Serialization/Deserializers/XmlFile.cs +++ b/SabreTools.Serialization/Deserializers/XmlFile.cs @@ -11,6 +11,7 @@ namespace SabreTools.Serialization.Deserializers /// /// public class XmlFile : + BaseBinaryDeserializer, IByteDeserializer, IFileDeserializer, IStreamDeserializer diff --git a/Test/Program.cs b/Test/Program.cs index 5fc79b2c..1adf58d9 100644 --- a/Test/Program.cs +++ b/Test/Program.cs @@ -1,4 +1,5 @@ using SabreTools.Serialization; +using SabreTools.Serialization.Deserializers; namespace Test { @@ -6,6 +7,8 @@ namespace Test { public static void Main(string[] args) { + string path = "R:\\BurnOutSharp Testing Files\\FileType\\AACS Media Key Block\\1 (HD-DVD)\\MKBROM.AACS"; + var obj = AACS.DeserializeFile(path); // DO NOTHING FOR NOW } }