From 8f49e190d877e10c6d96ff7c364e884a49127edd Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 24 Mar 2026 19:17:25 -0400 Subject: [PATCH] Fix everything --- InfoPrint/Features/MainFeature.cs | 1 + README.MD | 4 + SabreTools.Data.Extensions/CDROMExtensions.cs | 1 + .../MetadataExtensions.cs | 1 + .../NESCartExtensions.cs | 2 +- .../SabreTools.Data.Extensions.csproj | 4 +- .../XboxExecutableExtensions.cs | 2 +- SabreTools.Data.Models/AACS/Record.cs | 4 +- .../DatFile.Splitting.cs | 8 +- .../DatFile.ToMetadata.cs | 18 +- SabreTools.Metadata.DatFiles/DatFile.cs | 9 +- .../Formats/ClrMamePro.cs | 2 +- .../Formats/CommaSeparatedValue.cs | 19 + .../Formats/Hashfile.cs | 526 +----------------- .../Formats/Listxml.cs | 2 +- .../Formats/Md2File.cs | 52 ++ .../Formats/Md4File.cs | 52 ++ .../Formats/Md5File.cs | 64 +++ .../Formats/Missfile.cs | 2 +- .../Formats/RipeMD128File.cs | 52 ++ .../Formats/RipeMD160File.cs | 52 ++ .../Formats/SabreJSON.cs | 2 +- .../Formats/SabreXML.cs | 2 +- .../Formats/SemicolonSeparatedValue.cs | 19 + .../Formats/SeparatedValue.cs | 50 +- .../Formats/SerializableDatFile.cs | 2 +- .../Formats/SfvFile.cs | 52 ++ .../Formats/Sha1File.cs | 64 +++ .../Formats/Sha256File.cs | 58 ++ .../Formats/Sha384File.cs | 52 ++ .../Formats/Sha512File.cs | 52 ++ .../Formats/SpamSumFile.cs | 58 ++ .../Formats/TabSeparatedValue.cs | 19 + .../ItemDictionary.cs | 4 +- .../ItemDictionaryDB.cs | 16 +- SabreTools.Metadata.DatFiles/README.MD | 3 + .../SabreTools.Metadata.DatFiles.csproj | 23 +- SabreTools.Metadata.DatItems/DatItem.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 1 + .../Formats/Display.cs | 1 + SabreTools.Metadata.DatItems/Formats/File.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 1 + SabreTools.Metadata.DatItems/Machine.cs | 1 + SabreTools.Metadata.DatItems/README.MD | 3 + SabreTools.Metadata.Filter/ExtraIniItem.cs | 10 +- SabreTools.Metadata.Filter/FilterObject.cs | 1 + SabreTools.Metadata.Filter/README.MD | 3 + SabreTools.Metadata/ModelBackedItemT.cs | 1 + SabreTools.Metadata/README.MD | 3 + SabreTools.Metadata/Tools/NumberHelper.cs | 264 --------- SabreTools.Metadata/Tools/TextHelper.cs | 302 ---------- SabreTools.Metadata/Tools/Utilities.cs | 8 +- .../HashfileTests.cs | 35 +- ...SabreTools.Serialization.CrossModel.csproj | 2 +- .../ArchiveDotOrgTests.cs | 2 +- .../AttractModeTests.cs | 8 +- .../ClrMameProTests.cs | 8 +- .../DosCenterTests.cs | 2 +- .../EverdriveSMDBTests.cs | 2 +- .../HashfileTests.cs | 53 +- .../ListromTests.cs | 2 +- .../ListxmlTests.cs | 4 +- .../LogiqxTests.cs | 4 +- .../M1Tests.cs | 4 +- .../MessTests.cs | 4 +- .../OfflineListTests.cs | 2 +- .../OpenMSXTests.cs | 2 +- .../RomCenterTests.cs | 2 +- .../SeparatedValueTests.cs | 8 +- SabreTools.Serialization.Readers/AACS.cs | 31 +- .../AbstractSyntaxNotationOne.cs | 1 + .../AdvancedInstaller.cs | 1 + .../AppPkgHeader.cs | 1 + .../Atari7800Cart.cs | 2 + .../AtariLynxCart.cs | 2 + .../AttractMode.cs | 4 +- SabreTools.Serialization.Readers/BDPlus.cs | 1 + SabreTools.Serialization.Readers/BFPK.cs | 1 + SabreTools.Serialization.Readers/BSP.cs | 1 + SabreTools.Serialization.Readers/CDROM.cs | 1 + SabreTools.Serialization.Readers/CFB.cs | 1 + SabreTools.Serialization.Readers/CHD.cs | 1 + SabreTools.Serialization.Readers/CIA.cs | 1 + .../ClrMamePro.cs | 56 +- SabreTools.Serialization.Readers/DosCenter.cs | 6 +- .../EverdriveSMDB.cs | 4 +- SabreTools.Serialization.Readers/FDS.cs | 2 + SabreTools.Serialization.Readers/GCF.cs | 2 + SabreTools.Serialization.Readers/GZip.cs | 2 + SabreTools.Serialization.Readers/Hashfile.cs | 42 +- SabreTools.Serialization.Readers/IRD.cs | 1 + SabreTools.Serialization.Readers/ISO9660.cs | 2 + .../InstallShieldArchiveV3.cs | 2 + .../InstallShieldCabinet.cs | 2 + .../InstallShieldExecutable.cs | 1 + SabreTools.Serialization.Readers/LZKWAJ.cs | 2 + SabreTools.Serialization.Readers/LZQBasic.cs | 1 + SabreTools.Serialization.Readers/LZSZDD.cs | 1 + .../LinearExecutable.cs | 1 + SabreTools.Serialization.Readers/MSDOS.cs | 1 + .../MicrosoftCabinet.cs | 2 + SabreTools.Serialization.Readers/MoPaQ.cs | 3 +- SabreTools.Serialization.Readers/N3DS.cs | 1 + SabreTools.Serialization.Readers/NCF.cs | 2 + SabreTools.Serialization.Readers/NESCart.cs | 2 + .../NewExecutable.cs | 1 + SabreTools.Serialization.Readers/Nitro.cs | 1 + SabreTools.Serialization.Readers/PAK.cs | 1 + SabreTools.Serialization.Readers/PFF.cs | 1 + SabreTools.Serialization.Readers/PIC.cs | 1 + SabreTools.Serialization.Readers/PKZIP.cs | 2 + .../PlayJAudio.cs | 1 + .../PlayJPlaylist.cs | 1 + .../PortableExecutable.cs | 2 + SabreTools.Serialization.Readers/QD.cs | 1 + SabreTools.Serialization.Readers/Quantum.cs | 1 + SabreTools.Serialization.Readers/RomCenter.cs | 14 +- SabreTools.Serialization.Readers/SFB.cs | 1 + SabreTools.Serialization.Readers/SFO.cs | 2 +- SabreTools.Serialization.Readers/SGA.cs | 2 + .../SabreTools.Serialization.Readers.csproj | 6 +- .../SecuROMAddD.cs | 2 + .../SecuROMDFA.cs | 2 + .../SecuROMMatroschkaPackage.cs | 2 + .../SeparatedValue.cs | 4 +- SabreTools.Serialization.Readers/SkuSis.cs | 2 + .../SpoonInstaller.cs | 1 + .../TapeArchive.cs | 1 + SabreTools.Serialization.Readers/VBSP.cs | 2 + SabreTools.Serialization.Readers/VPK.cs | 2 + SabreTools.Serialization.Readers/WAD3.cs | 1 + .../WiseOverlayHeader.cs | 1 + .../WiseScript.cs | 2 + .../WiseSectionHeader.cs | 3 + SabreTools.Serialization.Readers/XZ.cs | 2 + SabreTools.Serialization.Readers/XZP.cs | 2 + .../XboxExecutable.cs | 2 + SabreTools.Serialization.Readers/ZSTD.cs | 2 + .../ArchiveDotOrgTests.cs | 1 - .../AttractModeTests.cs | 1 - .../CatalogTests.cs | 1 - .../ClrMameProTests.cs | 1 - .../CueSheetTests.cs | 1 - .../DosCenterTests.cs | 1 - .../EverdriveSMDBTests.cs | 1 - .../HashfileTests.cs | 1 - .../IRDTests.cs | 1 - .../ListromTests.cs | 1 - .../ListxmlTests.cs | 1 - .../LogiqxTests.cs | 1 - .../M1Tests.cs | 1 - .../MessTests.cs | 1 - .../OfflineListTests.cs | 1 - .../OpenMSXTests.cs | 1 - .../RomCenterTests.cs | 1 - .../SeparatedValueTests.cs | 1 - .../SoftwareListTests.cs | 1 - .../XMIDTests.cs | 1 - .../XeMIDTests.cs | 1 - .../AttractMode.cs | 10 +- .../BaseBinaryWriter.cs | 3 +- .../ClrMamePro.cs | 74 +-- SabreTools.Serialization.Writers/DosCenter.cs | 20 +- .../EverdriveSMDB.cs | 8 +- SabreTools.Serialization.Writers/Hashfile.cs | 114 ++-- SabreTools.Serialization.Writers/JsonFile.cs | 2 +- SabreTools.Serialization.Writers/OldDotNet.cs | 50 -- SabreTools.Serialization.Writers/RomCenter.cs | 20 +- .../SabreTools.Serialization.Writers.csproj | 2 +- .../SeparatedValue.cs | 14 +- SabreTools.Serialization.Writers/XmlFile.cs | 2 +- .../SabreTools.Serialization.csproj | 8 +- .../AACSMediaKeyBlock.Printing.cs | 2 +- .../Atari7800Cart.Extraction.cs | 2 +- .../AtariLynxCart.Extraction.cs | 2 +- SabreTools.Wrappers/BFPK.Extraction.cs | 6 +- SabreTools.Wrappers/BZip2.Extraction.cs | 6 +- SabreTools.Wrappers/CFB.Extraction.cs | 4 +- SabreTools.Wrappers/CFB.cs | 1 + SabreTools.Wrappers/ExtensionAttribute.cs | 2 +- SabreTools.Wrappers/FDS.Extraction.cs | 2 +- SabreTools.Wrappers/GZip.Extraction.cs | 5 +- SabreTools.Wrappers/GZip.cs | 1 + SabreTools.Wrappers/ISO9660.Extraction.cs | 2 + SabreTools.Wrappers/ISO9660.Printing.cs | 2 +- .../InstallShieldExecutable.Extraction.cs | 1 + SabreTools.Wrappers/LinearExecutable.cs | 1 + .../MicrosoftCabinet.Extraction.cs | 1 + SabreTools.Wrappers/N3DS.Encryption.cs | 4 +- SabreTools.Wrappers/NESCart.Extraction.cs | 2 +- .../NewExecutable.Extraction.cs | 2 + SabreTools.Wrappers/NewExecutable.cs | 1 + SabreTools.Wrappers/Nitro.Encryption.cs | 2 +- SabreTools.Wrappers/OldDotNet.cs | 50 -- .../PortableExecutable.Extraction.cs | 2 + .../PortableExecutable.Printing.cs | 2 + SabreTools.Wrappers/PortableExecutable.cs | 2 + .../SabreTools.Wrappers.csproj | 8 +- SabreTools.Wrappers/VPK.Extraction.cs | 1 + .../WiseOverlayHeader.Extraction.cs | 2 +- .../WiseSectionHeader.Extraction.cs | 1 + SabreTools.Wrappers/WrapperBase.cs | 12 +- SabreTools.Wrappers/WrapperFactory.cs | 2 + SabreTools.Wrappers/XZ.Extraction.cs | 2 +- SabreTools.Wrappers/ZSTD.Extraction.cs | 6 +- 206 files changed, 1202 insertions(+), 1647 deletions(-) create mode 100644 SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/Md2File.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/Md4File.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/Md5File.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/SfvFile.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/Sha1File.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/Sha256File.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/Sha384File.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/Sha512File.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs create mode 100644 SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs create mode 100644 SabreTools.Metadata.DatFiles/README.MD create mode 100644 SabreTools.Metadata.DatItems/README.MD create mode 100644 SabreTools.Metadata.Filter/README.MD create mode 100644 SabreTools.Metadata/README.MD delete mode 100644 SabreTools.Metadata/Tools/NumberHelper.cs delete mode 100644 SabreTools.Metadata/Tools/TextHelper.cs delete mode 100644 SabreTools.Serialization.Writers/OldDotNet.cs delete mode 100644 SabreTools.Wrappers/OldDotNet.cs diff --git a/InfoPrint/Features/MainFeature.cs b/InfoPrint/Features/MainFeature.cs index 29610d91..0e912161 100644 --- a/InfoPrint/Features/MainFeature.cs +++ b/InfoPrint/Features/MainFeature.cs @@ -5,6 +5,7 @@ using SabreTools.CommandLine; using SabreTools.CommandLine.Inputs; using SabreTools.Hashing; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using SabreTools.Wrappers; namespace InfoPrint.Features diff --git a/README.MD b/README.MD index b47b2286..ce8914ac 100644 --- a/README.MD +++ b/README.MD @@ -79,6 +79,10 @@ Below are a list of the included namespaces with links to their README files: - [SabreTools.Data.Extensions](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Data.Extensions) - [SabreTools.Data.Models](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Data.Models) +- [SabreTools.Metadata](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Metadata) +- [SabreTools.Metadata.DatFiles](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Metadata.DatFiles) +- [SabreTools.Metadata.DatItems](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Metadata.Datitems) +- [SabreTools.Metadata.Filter](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Metadata.Filter) - [SabreTools.ObjectIdentifier](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.ObjectIdentifier) - [SabreTools.Serialization.CrossModel](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Serialization.CrossModel) - [SabreTools.Serialization.Readers](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Serialization.Readers) diff --git a/SabreTools.Data.Extensions/CDROMExtensions.cs b/SabreTools.Data.Extensions/CDROMExtensions.cs index 184e5acb..7b7688ee 100644 --- a/SabreTools.Data.Extensions/CDROMExtensions.cs +++ b/SabreTools.Data.Extensions/CDROMExtensions.cs @@ -2,6 +2,7 @@ using System; using System.IO; using SabreTools.Data.Models.CDROM; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Data.Extensions { diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 3e0dc7fb..cd8f8d30 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -2,6 +2,7 @@ using System; using SabreTools.Data.Models.Metadata; using SabreTools.Hashing; using SabreTools.IO.Extensions; +using SabreTools.Matching; namespace SabreTools.Data.Extensions { diff --git a/SabreTools.Data.Extensions/NESCartExtensions.cs b/SabreTools.Data.Extensions/NESCartExtensions.cs index 42a39704..11af269a 100644 --- a/SabreTools.Data.Extensions/NESCartExtensions.cs +++ b/SabreTools.Data.Extensions/NESCartExtensions.cs @@ -178,7 +178,7 @@ namespace SabreTools.Data.Extensions }; } - /// + /// /// Convert a value to string /// public static string FromTVSystemExtended(this TVSystemExtended system) diff --git a/SabreTools.Data.Extensions/SabreTools.Data.Extensions.csproj b/SabreTools.Data.Extensions/SabreTools.Data.Extensions.csproj index ff65f64f..29536947 100644 --- a/SabreTools.Data.Extensions/SabreTools.Data.Extensions.csproj +++ b/SabreTools.Data.Extensions/SabreTools.Data.Extensions.csproj @@ -36,8 +36,8 @@ - - + + \ No newline at end of file diff --git a/SabreTools.Data.Extensions/XboxExecutableExtensions.cs b/SabreTools.Data.Extensions/XboxExecutableExtensions.cs index 28d66b8e..313476ca 100644 --- a/SabreTools.Data.Extensions/XboxExecutableExtensions.cs +++ b/SabreTools.Data.Extensions/XboxExecutableExtensions.cs @@ -1,5 +1,5 @@ using System; -using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Data.Extensions { diff --git a/SabreTools.Data.Models/AACS/Record.cs b/SabreTools.Data.Models/AACS/Record.cs index 877ec807..23683331 100644 --- a/SabreTools.Data.Models/AACS/Record.cs +++ b/SabreTools.Data.Models/AACS/Record.cs @@ -1,3 +1,5 @@ +using SabreTools.Numerics; + namespace SabreTools.Data.Models.AACS { /// @@ -23,6 +25,6 @@ namespace SabreTools.Data.Models.AACS /// fields themselves. Record lengths are always multiples of 4 bytes. /// // UInt24 not UInt32 - public uint RecordLength { get; set; } + public UInt24 RecordLength { get; set; } = new(); } } diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs index f352de5f..4ba5c786 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs @@ -717,7 +717,7 @@ namespace SabreTools.Metadata.DatFiles } // Now that every device reference is accounted for, add the new list of device references, if they don't already exist - foreach (string deviceReference in newDeviceReferences) + foreach (var deviceReference in newDeviceReferences) { if (!deviceReferences.Contains(deviceReference)) { @@ -767,7 +767,7 @@ namespace SabreTools.Metadata.DatFiles } // Now that every device is accounted for, add the new list of slot options, if they don't already exist - foreach (string slotOption in newSlotOptions) + foreach (var slotOption in newSlotOptions) { if (!slotOptions.Contains(slotOption)) { @@ -884,7 +884,7 @@ namespace SabreTools.Metadata.DatFiles } // Now that every device reference is accounted for, add the new list of device references, if they don't already exist - foreach (string deviceReference in newDeviceReferences) + foreach (var deviceReference in newDeviceReferences) { if (!deviceReferences.Contains(deviceReference)) { @@ -940,7 +940,7 @@ namespace SabreTools.Metadata.DatFiles } // Now that every device is accounted for, add the new list of slot options, if they don't already exist - foreach (string slotOption in newSlotOptions) + foreach (var slotOption in newSlotOptions) { if (!slotOptions.Contains(slotOption)) { diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 8239142b..5fe62d48 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -80,7 +80,7 @@ namespace SabreTools.Metadata.DatFiles // Handle Trurip object, if it exists if (machine.ContainsKey(Data.Models.Metadata.Machine.TruripKey)) { - var trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); + var trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); if (trurip is not null) { var truripItem = trurip.ConvertToLogiqx(); @@ -294,6 +294,9 @@ namespace SabreTools.Metadata.DatFiles EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoundKey); AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoundKey, soundItem); break; + default: + // This should never happen + break; } } @@ -506,7 +509,7 @@ namespace SabreTools.Metadata.DatFiles // Handle Trurip object, if it exists if (machine.ContainsKey(Data.Models.Metadata.Machine.TruripKey)) { - var trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); + var trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); if (trurip is not null) { var truripItem = trurip.ConvertToLogiqx(); @@ -717,6 +720,9 @@ namespace SabreTools.Metadata.DatFiles EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoundKey); AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoundKey, soundItem); break; + default: + // This should never happen + break; } } @@ -944,6 +950,9 @@ namespace SabreTools.Metadata.DatFiles case 270: videoItem[Data.Models.Metadata.Video.OrientationKey] = "vertical"; break; + default: + // This should never happen + break; } EnsureMachineKey(machine, Data.Models.Metadata.Machine.VideoKey); @@ -1052,6 +1061,11 @@ namespace SabreTools.Metadata.DatFiles EnsureMachineKey(machine, Data.Models.Metadata.Machine.DumpKey); AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpSccPlusCart); break; + case OpenMSXSubType.NULL: + break; + default: + // This should never happen + break; } return romItem; diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 6d863b8f..ba8fda93 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -3,13 +3,14 @@ using System.Collections.Generic; using System.IO; using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Metadata.Filter; -using SabreTools.Metadata.Tools; +using SabreTools.Hashing; +using SabreTools.Logging; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -using SabreTools.Hashing; -using SabreTools.IO.Logging; +using SabreTools.Metadata.Filter; +using SabreTools.Metadata.Tools; using SabreTools.Text.Compare; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.DatFiles { diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 162ef6d9..58ec308e 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; -using SabreTools.Metadata.Filter; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; +using SabreTools.Metadata.Filter; namespace SabreTools.Metadata.DatFiles.Formats { diff --git a/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs new file mode 100644 index 00000000..f5c3b1ce --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/CommaSeparatedValue.cs @@ -0,0 +1,19 @@ +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents a comma-separated value file + /// + public sealed class CommaSeparatedValue : SeparatedValue + { + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public CommaSeparatedValue(DatFile? datFile) : base(datFile) + { + _delim = ','; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.CSV); + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/Hashfile.cs b/SabreTools.Metadata.DatFiles/Formats/Hashfile.cs index 82880f9d..66f928ef 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Hashfile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Hashfile.cs @@ -1,9 +1,6 @@ using System; -using System.Collections.Generic; -using SabreTools.Metadata.Filter; -using SabreTools.Metadata.DatItems; -using SabreTools.Metadata.DatItems.Formats; using SabreTools.Hashing; +using SabreTools.Metadata.Filter; #pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats @@ -26,6 +23,7 @@ namespace SabreTools.Metadata.DatFiles.Formats /// Parent DatFile to copy from public Hashfile(DatFile? datFile) : base(datFile) { + _hash = HashType.SHA1; } /// @@ -78,524 +76,4 @@ namespace SabreTools.Metadata.DatFiles.Formats return true; } } - - /// - /// Represents an SFV (CRC-32) hashfile - /// - public sealed class SfvFile : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public SfvFile(DatFile? datFile) : base(datFile) - { - _hash = HashType.CRC32; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSFV); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.CRCKey))) - missingFields.Add(Data.Models.Metadata.Rom.CRCKey); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an MD2 hashfile - /// - public sealed class Md2File : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public Md2File(DatFile? datFile) : base(datFile) - { - _hash = HashType.MD2; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpMD2); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.MD2Key))) - missingFields.Add(Data.Models.Metadata.Rom.MD2Key); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an MD4 hashfile - /// - public sealed class Md4File : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public Md4File(DatFile? datFile) : base(datFile) - { - _hash = HashType.MD4; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpMD4); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.MD4Key))) - missingFields.Add(Data.Models.Metadata.Rom.MD4Key); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an MD5 hashfile - /// - public sealed class Md5File : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public Md5File(DatFile? datFile) : base(datFile) - { - _hash = HashType.MD5; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpMD5); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Disk disk: - if (string.IsNullOrEmpty(disk.GetStringFieldValue(Data.Models.Metadata.Disk.MD5Key))) - missingFields.Add(Data.Models.Metadata.Disk.MD5Key); - break; - - case Media medium: - if (string.IsNullOrEmpty(medium.GetStringFieldValue(Data.Models.Metadata.Media.MD5Key))) - missingFields.Add(Data.Models.Metadata.Media.MD5Key); - break; - - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.MD5Key))) - missingFields.Add(Data.Models.Metadata.Rom.MD5Key); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an RIPEMD128 hashfile - /// - public sealed class RipeMD128File : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public RipeMD128File(DatFile? datFile) : base(datFile) - { - _hash = HashType.RIPEMD128; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpRIPEMD128); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key))) - missingFields.Add(Data.Models.Metadata.Rom.RIPEMD128Key); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an RIPEMD160 hashfile - /// - public sealed class RipeMD160File : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public RipeMD160File(DatFile? datFile) : base(datFile) - { - _hash = HashType.RIPEMD160; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpRIPEMD160); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key))) - missingFields.Add(Data.Models.Metadata.Rom.RIPEMD160Key); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an SHA-1 hashfile - /// - public sealed class Sha1File : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Disk, - ItemType.Media, - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public Sha1File(DatFile? datFile) : base(datFile) - { - _hash = HashType.SHA1; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA1); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Disk disk: - if (string.IsNullOrEmpty(disk.GetStringFieldValue(Data.Models.Metadata.Disk.SHA1Key))) - missingFields.Add(Data.Models.Metadata.Disk.SHA1Key); - break; - - case Media medium: - if (string.IsNullOrEmpty(medium.GetStringFieldValue(Data.Models.Metadata.Media.SHA1Key))) - missingFields.Add(Data.Models.Metadata.Media.SHA1Key); - break; - - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA1Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an SHA-256 hashfile - /// - public sealed class Sha256File : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Media, - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public Sha256File(DatFile? datFile) : base(datFile) - { - _hash = HashType.SHA256; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA256); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Media medium: - if (string.IsNullOrEmpty(medium.GetStringFieldValue(Data.Models.Metadata.Media.SHA256Key))) - missingFields.Add(Data.Models.Metadata.Media.SHA256Key); - break; - - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA256Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA256Key); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an SHA-384 hashfile - /// - public sealed class Sha384File : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public Sha384File(DatFile? datFile) : base(datFile) - { - _hash = HashType.SHA384; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA384); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA384Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA384Key); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an SHA-512 hashfile - /// - public sealed class Sha512File : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public Sha512File(DatFile? datFile) : base(datFile) - { - _hash = HashType.SHA512; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA512); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA512Key))) - missingFields.Add(Data.Models.Metadata.Rom.SHA512Key); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } - - /// - /// Represents an SpamSum hashfile - /// - public sealed class SpamSumFile : Hashfile - { - /// - public override ItemType[] SupportedTypes - => [ - ItemType.Media, - ItemType.Rom, - ]; - - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public SpamSumFile(DatFile? datFile) : base(datFile) - { - _hash = HashType.SpamSum; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSpamSum); - } - - /// - protected internal override List? GetMissingRequiredFields(DatItem datItem) - { - List missingFields = []; - - // Check item name - if (string.IsNullOrEmpty(datItem.GetName())) - missingFields.Add(Data.Models.Metadata.Rom.NameKey); - -#pragma warning disable IDE0010 - switch (datItem) - { - case Media medium: - if (string.IsNullOrEmpty(medium.GetStringFieldValue(Data.Models.Metadata.Media.SpamSumKey))) - missingFields.Add(Data.Models.Metadata.Media.SpamSumKey); - break; - - case Rom rom: - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SpamSumKey))) - missingFields.Add(Data.Models.Metadata.Rom.SpamSumKey); - break; - } -#pragma warning restore IDE0010 - - return missingFields; - } - } } diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 53840a22..aa839b02 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; -using SabreTools.Metadata.Filter; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; +using SabreTools.Metadata.Filter; namespace SabreTools.Metadata.DatFiles.Formats { diff --git a/SabreTools.Metadata.DatFiles/Formats/Md2File.cs b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs new file mode 100644 index 00000000..d2276ac3 --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/Md2File.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an MD2 hashfile + /// + public sealed class Md2File : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public Md2File(DatFile? datFile) : base(datFile) + { + _hash = HashType.MD2; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpMD2); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.MD2Key))) + missingFields.Add(Data.Models.Metadata.Rom.MD2Key); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/Md4File.cs b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs new file mode 100644 index 00000000..d1c919b6 --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/Md4File.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an MD4 hashfile + /// + public sealed class Md4File : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public Md4File(DatFile? datFile) : base(datFile) + { + _hash = HashType.MD4; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpMD4); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.MD4Key))) + missingFields.Add(Data.Models.Metadata.Rom.MD4Key); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs new file mode 100644 index 00000000..cccfb603 --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs @@ -0,0 +1,64 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an MD5 hashfile + /// + public sealed class Md5File : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Disk, + ItemType.Media, + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public Md5File(DatFile? datFile) : base(datFile) + { + _hash = HashType.MD5; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpMD5); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Disk disk: + if (string.IsNullOrEmpty(disk.GetStringFieldValue(Data.Models.Metadata.Disk.MD5Key))) + missingFields.Add(Data.Models.Metadata.Disk.MD5Key); + break; + + case Media medium: + if (string.IsNullOrEmpty(medium.GetStringFieldValue(Data.Models.Metadata.Media.MD5Key))) + missingFields.Add(Data.Models.Metadata.Media.MD5Key); + break; + + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.MD5Key))) + missingFields.Add(Data.Models.Metadata.Rom.MD5Key); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs index 7ba0fd6b..69898918 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Missfile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Missfile.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.IO; using System.Text; -using SabreTools.Metadata.Filter; using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.Filter; namespace SabreTools.Metadata.DatFiles.Formats { diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs new file mode 100644 index 00000000..b83d819b --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD128File.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an RIPEMD128 hashfile + /// + public sealed class RipeMD128File : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public RipeMD128File(DatFile? datFile) : base(datFile) + { + _hash = HashType.RIPEMD128; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpRIPEMD128); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.RIPEMD128Key))) + missingFields.Add(Data.Models.Metadata.Rom.RIPEMD128Key); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs new file mode 100644 index 00000000..7ee26c48 --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/RipeMD160File.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an RIPEMD160 hashfile + /// + public sealed class RipeMD160File : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public RipeMD160File(DatFile? datFile) : base(datFile) + { + _hash = HashType.RIPEMD160; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpRIPEMD160); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.RIPEMD160Key))) + missingFields.Add(Data.Models.Metadata.Rom.RIPEMD160Key); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs index 0e10af12..8fa8d3de 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs @@ -6,9 +6,9 @@ using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Newtonsoft.Json.Serialization; -using SabreTools.Metadata.Filter; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; +using SabreTools.Metadata.Filter; namespace SabreTools.Metadata.DatFiles.Formats { diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs index 25636402..da6d7bc1 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs @@ -5,8 +5,8 @@ using System.Text; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; -using SabreTools.Metadata.Filter; using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.Filter; #pragma warning disable IDE0060 // Remove unused parameter namespace SabreTools.Metadata.DatFiles.Formats diff --git a/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs new file mode 100644 index 00000000..1d8051fd --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/SemicolonSeparatedValue.cs @@ -0,0 +1,19 @@ +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents a semicolon-separated value file + /// + public sealed class SemicolonSeparatedValue : SeparatedValue + { + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public SemicolonSeparatedValue(DatFile? datFile) : base(datFile) + { + _delim = ';'; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.SSV); + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs index 777d153c..85b292f7 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; -using SabreTools.Metadata.Filter; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; +using SabreTools.Metadata.Filter; #pragma warning disable IDE0290 // Use primary constructor namespace SabreTools.Metadata.DatFiles.Formats @@ -140,52 +140,4 @@ namespace SabreTools.Metadata.DatFiles.Formats return true; } } - - /// - /// Represents a comma-separated value file - /// - public sealed class CommaSeparatedValue : SeparatedValue - { - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public CommaSeparatedValue(DatFile? datFile) : base(datFile) - { - _delim = ','; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.CSV); - } - } - - /// - /// Represents a semicolon-separated value file - /// - public sealed class SemicolonSeparatedValue : SeparatedValue - { - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public SemicolonSeparatedValue(DatFile? datFile) : base(datFile) - { - _delim = ';'; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.SSV); - } - } - - /// - /// Represents a tab-separated value file - /// - public sealed class TabSeparatedValue : SeparatedValue - { - /// - /// Constructor designed for casting a base DatFile - /// - /// Parent DatFile to copy from - public TabSeparatedValue(DatFile? datFile) : base(datFile) - { - _delim = '\t'; - Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.TSV); - } - } } diff --git a/SabreTools.Metadata.DatFiles/Formats/SerializableDatFile.cs b/SabreTools.Metadata.DatFiles/Formats/SerializableDatFile.cs index 90a2f37f..8dca3e2c 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SerializableDatFile.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SerializableDatFile.cs @@ -1,6 +1,6 @@ using System; -using SabreTools.Metadata.Filter; using SabreTools.Data.Models.Metadata; +using SabreTools.Metadata.Filter; using SabreTools.Serialization.CrossModel; using SabreTools.Serialization.Readers; using SabreTools.Serialization.Writers; diff --git a/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs new file mode 100644 index 00000000..1907daf6 --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/SfvFile.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an SFV (CRC-32) hashfile + /// + public sealed class SfvFile : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public SfvFile(DatFile? datFile) : base(datFile) + { + _hash = HashType.CRC32; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSFV); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.CRCKey))) + missingFields.Add(Data.Models.Metadata.Rom.CRCKey); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs new file mode 100644 index 00000000..e300499c --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs @@ -0,0 +1,64 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an SHA-1 hashfile + /// + public sealed class Sha1File : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Disk, + ItemType.Media, + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public Sha1File(DatFile? datFile) : base(datFile) + { + _hash = HashType.SHA1; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA1); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Disk disk: + if (string.IsNullOrEmpty(disk.GetStringFieldValue(Data.Models.Metadata.Disk.SHA1Key))) + missingFields.Add(Data.Models.Metadata.Disk.SHA1Key); + break; + + case Media medium: + if (string.IsNullOrEmpty(medium.GetStringFieldValue(Data.Models.Metadata.Media.SHA1Key))) + missingFields.Add(Data.Models.Metadata.Media.SHA1Key); + break; + + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA1Key))) + missingFields.Add(Data.Models.Metadata.Rom.SHA1Key); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs new file mode 100644 index 00000000..17ecbf65 --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/Sha256File.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an SHA-256 hashfile + /// + public sealed class Sha256File : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Media, + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public Sha256File(DatFile? datFile) : base(datFile) + { + _hash = HashType.SHA256; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA256); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Media medium: + if (string.IsNullOrEmpty(medium.GetStringFieldValue(Data.Models.Metadata.Media.SHA256Key))) + missingFields.Add(Data.Models.Metadata.Media.SHA256Key); + break; + + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA256Key))) + missingFields.Add(Data.Models.Metadata.Rom.SHA256Key); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs new file mode 100644 index 00000000..dd64af2b --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/Sha384File.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an SHA-384 hashfile + /// + public sealed class Sha384File : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public Sha384File(DatFile? datFile) : base(datFile) + { + _hash = HashType.SHA384; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA384); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA384Key))) + missingFields.Add(Data.Models.Metadata.Rom.SHA384Key); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs new file mode 100644 index 00000000..986d6395 --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/Sha512File.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an SHA-512 hashfile + /// + public sealed class Sha512File : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public Sha512File(DatFile? datFile) : base(datFile) + { + _hash = HashType.SHA512; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA512); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SHA512Key))) + missingFields.Add(Data.Models.Metadata.Rom.SHA512Key); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs new file mode 100644 index 00000000..8300f92b --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/SpamSumFile.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; +using SabreTools.Hashing; +using SabreTools.Metadata.DatItems; +using SabreTools.Metadata.DatItems.Formats; + +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents an SpamSum hashfile + /// + public sealed class SpamSumFile : Hashfile + { + /// + public override ItemType[] SupportedTypes + => [ + ItemType.Media, + ItemType.Rom, + ]; + + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public SpamSumFile(DatFile? datFile) : base(datFile) + { + _hash = HashType.SpamSum; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSpamSum); + } + + /// + protected internal override List? GetMissingRequiredFields(DatItem datItem) + { + List missingFields = []; + + // Check item name + if (string.IsNullOrEmpty(datItem.GetName())) + missingFields.Add(Data.Models.Metadata.Rom.NameKey); + +#pragma warning disable IDE0010 + switch (datItem) + { + case Media medium: + if (string.IsNullOrEmpty(medium.GetStringFieldValue(Data.Models.Metadata.Media.SpamSumKey))) + missingFields.Add(Data.Models.Metadata.Media.SpamSumKey); + break; + + case Rom rom: + if (string.IsNullOrEmpty(rom.GetStringFieldValue(Data.Models.Metadata.Rom.SpamSumKey))) + missingFields.Add(Data.Models.Metadata.Rom.SpamSumKey); + break; + } +#pragma warning restore IDE0010 + + return missingFields; + } + } +} diff --git a/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs new file mode 100644 index 00000000..515384fa --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Formats/TabSeparatedValue.cs @@ -0,0 +1,19 @@ +#pragma warning disable IDE0290 // Use primary constructor +namespace SabreTools.Metadata.DatFiles.Formats +{ + /// + /// Represents a tab-separated value file + /// + public sealed class TabSeparatedValue : SeparatedValue + { + /// + /// Constructor designed for casting a base DatFile + /// + /// Parent DatFile to copy from + public TabSeparatedValue(DatFile? datFile) : base(datFile) + { + _delim = '\t'; + Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.TSV); + } + } +} diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 18913b17..dea33852 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -8,12 +8,12 @@ using System.Threading.Tasks; #endif using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Metadata.Tools; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using SabreTools.Hashing; -using SabreTools.IO.Logging; +using SabreTools.Logging; using SabreTools.Text.Compare; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.DatFiles { diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index 1197ae8a..4a9d16a2 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -10,12 +10,12 @@ using System.Threading.Tasks; #endif using System.Xml.Serialization; using Newtonsoft.Json; -using SabreTools.Metadata.Tools; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using SabreTools.Hashing; -using SabreTools.IO.Logging; +using SabreTools.Logging; using SabreTools.Text.Compare; +using SabreTools.Text.Extensions; /* * Planning Notes: @@ -685,9 +685,7 @@ namespace SabreTools.Metadata.DatFiles /// public void Deduplicate() { -#if NET452_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER - Parallel.ForEach(SortedKeys, Core.Globals.ParallelOptions, key => -#elif NET40_OR_GREATER +#if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER Parallel.ForEach(SortedKeys, key => #else foreach (var key in SortedKeys) @@ -1067,9 +1065,7 @@ namespace SabreTools.Metadata.DatFiles // Get the current list of item indicies long[] itemIndicies = [.. _items.Keys]; -#if NET452_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER - Parallel.For(0, itemIndicies.Length, Core.Globals.ParallelOptions, i => -#elif NET40_OR_GREATER +#if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER Parallel.For(0, itemIndicies.Length, i => #else for (int i = 0; i < itemIndicies.Length; i++) @@ -1116,9 +1112,7 @@ namespace SabreTools.Metadata.DatFiles // Get the current list of bucket keys string[] bucketKeys = [.. _buckets.Keys]; -#if NET452_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER - Parallel.For(0, bucketKeys.Length, Core.Globals.ParallelOptions, i => -#elif NET40_OR_GREATER +#if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER Parallel.For(0, bucketKeys.Length, i => #else for (int i = 0; i < bucketKeys.Length; i++) diff --git a/SabreTools.Metadata.DatFiles/README.MD b/SabreTools.Metadata.DatFiles/README.MD new file mode 100644 index 00000000..b2540132 --- /dev/null +++ b/SabreTools.Metadata.DatFiles/README.MD @@ -0,0 +1,3 @@ +# SabreTools.Metadata.DatFiles + +This library contains wrapper classes and functionality for various metadata file formats. diff --git a/SabreTools.Metadata.DatFiles/SabreTools.Metadata.DatFiles.csproj b/SabreTools.Metadata.DatFiles/SabreTools.Metadata.DatFiles.csproj index 84b16516..456ff794 100644 --- a/SabreTools.Metadata.DatFiles/SabreTools.Metadata.DatFiles.csproj +++ b/SabreTools.Metadata.DatFiles/SabreTools.Metadata.DatFiles.csproj @@ -35,19 +35,22 @@ - - - - - - - + + + + + + + - - - + + + + + + diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 0f811747..812a2c08 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -3,7 +3,7 @@ using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; using SabreTools.Hashing; -using SabreTools.IO.Logging; +using SabreTools.Logging; using SabreTools.Metadata.DatItems.Formats; using SabreTools.Metadata.Filter; diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index ee9cf0b2..3588e31e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -2,6 +2,7 @@ using Newtonsoft.Json; using SabreTools.Data.Extensions; using SabreTools.Metadata.Tools; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.DatItems.Formats { diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 20313df6..4efca375 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -1,6 +1,7 @@ using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Metadata.Tools; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.DatItems.Formats { diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 75242228..02755dfb 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -4,7 +4,7 @@ using Newtonsoft.Json; using SabreTools.Data.Extensions; using SabreTools.Hashing; using SabreTools.IO.Extensions; -using SabreTools.Metadata.Tools; +using SabreTools.Text.Extensions; // TODO: Add item mappings for all fields namespace SabreTools.Metadata.DatItems.Formats diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index ca26b9fc..32913bbb 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -1,7 +1,7 @@ using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; -using SabreTools.Metadata.Tools; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.DatItems.Formats { diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 12f93c4b..6ed13bd9 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -2,6 +2,7 @@ using Newtonsoft.Json; using SabreTools.Data.Extensions; using SabreTools.Metadata.Tools; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.DatItems.Formats { diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 670d9e93..b5c0e915 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -4,6 +4,7 @@ using Newtonsoft.Json; using SabreTools.Data.Extensions; using SabreTools.Metadata.Filter; using SabreTools.Metadata.Tools; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.DatItems { diff --git a/SabreTools.Metadata.DatItems/README.MD b/SabreTools.Metadata.DatItems/README.MD new file mode 100644 index 00000000..b427e776 --- /dev/null +++ b/SabreTools.Metadata.DatItems/README.MD @@ -0,0 +1,3 @@ +# SabreTools.Metadata.DatItems + +This library contains wrapper classes and functionality for various metadata item formats. diff --git a/SabreTools.Metadata.Filter/ExtraIniItem.cs b/SabreTools.Metadata.Filter/ExtraIniItem.cs index f82c6935..adcbac03 100644 --- a/SabreTools.Metadata.Filter/ExtraIniItem.cs +++ b/SabreTools.Metadata.Filter/ExtraIniItem.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.IO; -using SabreTools.IO.Logging; -using SabreTools.IO.Readers; +using SabreTools.Logging; +using SabreTools.Text.INI; namespace SabreTools.Metadata.Filter { @@ -63,7 +63,7 @@ namespace SabreTools.Metadata.Filter return false; // Prepare all internal variables - var ir = new IniReader(iniPath) { ValidateRows = false }; + var ir = new Reader(iniPath) { ValidateRows = false }; bool foundRootFolder = false; // If we got a null reader, just return @@ -79,11 +79,11 @@ namespace SabreTools.Metadata.Filter ir.ReadNextLine(); // We don't care about whitespace or comments - if (ir.RowType == IniRowType.None || ir.RowType == IniRowType.Comment) + if (ir.RowType == RowType.None || ir.RowType == RowType.Comment) continue; // If we have a section, just read it in - if (ir.RowType == IniRowType.SectionHeader) + if (ir.RowType == RowType.SectionHeader) { // If we've found the start of the extras, set the flag if (string.Equals(ir.Section, "ROOT_FOLDER", StringComparison.OrdinalIgnoreCase)) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index dfcb6d1f..997c586e 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -2,6 +2,7 @@ using System; using System.Text.RegularExpressions; using SabreTools.Data.Models.Metadata; using SabreTools.Metadata.Tools; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.Filter { diff --git a/SabreTools.Metadata.Filter/README.MD b/SabreTools.Metadata.Filter/README.MD new file mode 100644 index 00000000..51887d89 --- /dev/null +++ b/SabreTools.Metadata.Filter/README.MD @@ -0,0 +1,3 @@ +# SabreTools.Metadata.Filter + +This library contains filtering functionality used by metadata format processing. diff --git a/SabreTools.Metadata/ModelBackedItemT.cs b/SabreTools.Metadata/ModelBackedItemT.cs index 0887ed1c..2e253f4a 100644 --- a/SabreTools.Metadata/ModelBackedItemT.cs +++ b/SabreTools.Metadata/ModelBackedItemT.cs @@ -2,6 +2,7 @@ using System; using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Metadata.Tools; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata { diff --git a/SabreTools.Metadata/README.MD b/SabreTools.Metadata/README.MD new file mode 100644 index 00000000..27ed651c --- /dev/null +++ b/SabreTools.Metadata/README.MD @@ -0,0 +1,3 @@ +# SabreTools.Metadata + +This library contains common code used across multiple metadata file operations. diff --git a/SabreTools.Metadata/Tools/NumberHelper.cs b/SabreTools.Metadata/Tools/NumberHelper.cs deleted file mode 100644 index e83d3826..00000000 --- a/SabreTools.Metadata/Tools/NumberHelper.cs +++ /dev/null @@ -1,264 +0,0 @@ -using System; - -namespace SabreTools.Metadata.Tools -{ - // TODO: Replace when IO is updated - public static class NumberHelper - { - #region Constants - - #region Byte (1000-based) size comparisons - - private const long KiloByte = 1000; - private static readonly long MegaByte = (long)Math.Pow(KiloByte, 2); - private static readonly long GigaByte = (long)Math.Pow(KiloByte, 3); - private static readonly long TeraByte = (long)Math.Pow(KiloByte, 4); - private static readonly long PetaByte = (long)Math.Pow(KiloByte, 5); - - // The following are too big to be represented in Int64 - // private readonly static long ExaByte = (long)Math.Pow(KiloByte, 6); - // private readonly static long ZettaByte = (long)Math.Pow(KiloByte, 7); - // private readonly static long YottaByte = (long)Math.Pow(KiloByte, 8); - - #endregion - - #region Byte (1024-based) size comparisons - - private const long KibiByte = 1024; - private static readonly long MibiByte = (long)Math.Pow(KibiByte, 2); - private static readonly long GibiByte = (long)Math.Pow(KibiByte, 3); - private static readonly long TibiByte = (long)Math.Pow(KibiByte, 4); - private static readonly long PibiByte = (long)Math.Pow(KibiByte, 5); - - // The following are too big to be represented in Int64 - // private readonly static long ExiByte = (long)Math.Pow(KibiByte, 6); - // private readonly static long ZittiByte = (long)Math.Pow(KibiByte, 7); - // private readonly static long YittiByte = (long)Math.Pow(KibiByte, 8); - - #endregion - - #endregion - - /// - /// Convert a string to a Double - /// - public static double? ConvertToDouble(string? numeric) - { - // If we don't have a valid string, we can't do anything - if (string.IsNullOrEmpty(numeric)) - return null; - - if (!double.TryParse(numeric, out double doubleValue)) - return null; - - return doubleValue; - } - - /// - /// Convert a string to an Int64 - /// - public static long? ConvertToInt64(string? numeric) - { - // If we don't have a valid string, we can't do anything - if (string.IsNullOrEmpty(numeric)) - return null; - - // Normalize the string for easier comparison - numeric = numeric!.ToLowerInvariant(); - - // Parse the numeric string, if possible - if (numeric.StartsWith("0x")) - { - return Convert.ToInt64(numeric.Substring(2), 16); - } - else - { - // Get the multiplication modifier and trim characters - long multiplier = DetermineMultiplier(numeric); - numeric = numeric.TrimEnd(['k', 'm', 'g', 't', 'p', 'e', 'z', 'y', 'i', 'b', ' ']); - - // Apply the multiplier and return - if (!long.TryParse(numeric, out long longValue)) - return null; - - return longValue * multiplier; - } - } - - /// - /// Determine the multiplier from a numeric string - /// - public static long DetermineMultiplier(string? numeric) - { - if (string.IsNullOrEmpty(numeric)) - return 0; - - long multiplier = 1; - if (numeric!.EndsWith("k") || numeric.EndsWith("kb")) - multiplier = KiloByte; - else if (numeric.EndsWith("ki") || numeric.EndsWith("kib")) - multiplier = KibiByte; - else if (numeric.EndsWith("m") || numeric.EndsWith("mb")) - multiplier = MegaByte; - else if (numeric.EndsWith("mi") || numeric.EndsWith("mib")) - multiplier = MibiByte; - else if (numeric.EndsWith("g") || numeric.EndsWith("gb")) - multiplier = GigaByte; - else if (numeric.EndsWith("gi") || numeric.EndsWith("gib")) - multiplier = GibiByte; - else if (numeric.EndsWith("t") || numeric.EndsWith("tb")) - multiplier = TeraByte; - else if (numeric.EndsWith("ti") || numeric.EndsWith("tib")) - multiplier = TibiByte; - else if (numeric.EndsWith("p") || numeric.EndsWith("pb")) - multiplier = PetaByte; - else if (numeric.EndsWith("pi") || numeric.EndsWith("pib")) - multiplier = PibiByte; - - // The following are too big to be represented in Int64 - // else if (numeric.EndsWith("e") || numeric.EndsWith("eb")) - // multiplier = ExaByte; - // else if (numeric.EndsWith("ei") || numeric.EndsWith("eib")) - // multiplier = ExiByte; - // else if (numeric.EndsWith("z") || numeric.EndsWith("zb")) - // multiplier = ZettaByte; - // else if (numeric.EndsWith("zi") || numeric.EndsWith("zib")) - // multiplier = ZittiByte; - // else if (numeric.EndsWith("y") || numeric.EndsWith("yb")) - // multiplier = YottaByte; - // else if (numeric.EndsWith("yi") || numeric.EndsWith("yib")) - // multiplier = YittiByte; - - return multiplier; - } - - /// - /// Determine if a string is fully numeric or not - /// - public static bool IsNumeric(string? value) - { - // If we have no value, it is not numeric - if (string.IsNullOrEmpty(value)) - return false; - - // If we have a hex value - value = value!.ToLowerInvariant(); - if (value.StartsWith("0x")) - value = value.Substring(2); - - // If we have a negative value - if (value.StartsWith("-")) - value = value.Substring(1); - - // If the value has a multiplier - if (DetermineMultiplier(value) > 1) - value = value.TrimEnd(['k', 'm', 'g', 't', 'p', 'e', 'z', 'y', 'i', 'b', ' ']); - - // If the value is empty after trimming - if (value.Length == 0) - return false; - - // Otherwise, make sure that every character is a proper match - for (int i = 0; i < value.Length; i++) - { - char c = value[i]; -#if NET7_0_OR_GREATER - if (!char.IsAsciiHexDigit(c) && c != '.' && c != ',') -#else - if (!c.IsAsciiHexDigit() && c != '.' && c != ',') -#endif - return false; - } - - return true; - } - - /// - /// Returns the human-readable file size for an arbitrary, 64-bit file size - /// The default format is "0.### XB", e.g. "4.2 KB" or "1.434 GB". - /// - /// http://www.somacon.com/p576.php - /// This uses 1024-byte partitions, not 1000-byte - public static string GetBytesReadable(long input) - { - // Get absolute value - long absolute_i = input < 0 ? -input : input; - - // Determine the suffix and readable value - string suffix; - double readable; - if (absolute_i >= 0x1000_0000_0000_0000) // Exabyte - { - suffix = "EB"; - readable = input >> 50; - } - else if (absolute_i >= 0x4_0000_0000_0000) // Petabyte - { - suffix = "PB"; - readable = input >> 40; - } - else if (absolute_i >= 0x100_0000_0000) // Terabyte - { - suffix = "TB"; - readable = input >> 30; - } - else if (absolute_i >= 0x4000_0000) // Gigabyte - { - suffix = "GB"; - readable = input >> 20; - } - else if (absolute_i >= 0x10_0000) // Megabyte - { - suffix = "MB"; - readable = input >> 10; - } - else if (absolute_i >= 0x400) // Kilobyte - { - suffix = "KB"; - readable = input; - } - else - { - return input.ToString("0 B"); // Byte - } - - // Divide by 1024 to get fractional value - readable /= 1024; - - // Return formatted number with suffix - return readable.ToString("0.### ") + suffix; - } - -#if NETFRAMEWORK || NETCOREAPP3_1 || NET5_0 || NET6_0 || NETSTANDARD2_0_OR_GREATER - /// - /// Indicates whether a character is categorized as an ASCII hexademical digit. - /// - /// The character to evaluate. - /// true if c is a hexademical digit; otherwise, false. - /// This method determines whether the character is in the range '0' through '9', inclusive, 'A' through 'F', inclusive, or 'a' through 'f', inclusive. - internal static bool IsAsciiHexDigit(this char c) - { - return char.ToLowerInvariant(c) switch - { - '0' => true, - '1' => true, - '2' => true, - '3' => true, - '4' => true, - '5' => true, - '6' => true, - '7' => true, - '8' => true, - '9' => true, - 'a' => true, - 'b' => true, - 'c' => true, - 'd' => true, - 'e' => true, - 'f' => true, - _ => false, - }; - } -#endif - } -} diff --git a/SabreTools.Metadata/Tools/TextHelper.cs b/SabreTools.Metadata/Tools/TextHelper.cs deleted file mode 100644 index 2a5e8c65..00000000 --- a/SabreTools.Metadata/Tools/TextHelper.cs +++ /dev/null @@ -1,302 +0,0 @@ -using System; -using System.IO; -using System.Text.RegularExpressions; -using SabreTools.Hashing; - -namespace SabreTools.Metadata.Tools -{ - // TODO: Replace when IO is updated - public static class TextHelper - { - #region Normalization - - /// - /// Normalize a string to the WoD standard - /// - public static string? NormalizeCharacters(string? input) - { - if (string.IsNullOrEmpty(input)) - return input; - - ///Run the name through the filters to make sure that it's correct - input = NormalizeChars(input!); - input = RussianToLatin(input); - input = SearchPattern(input); - - input = new Regex(@"(([[(].*[\)\]] )?([^([]+))", RegexOptions.Compiled).Match(input).Groups[1].Value; - input = input.TrimStart().TrimEnd(); - return input; - } - - /// - /// Normalize a CRC32 string and pad to the correct size - /// - public static string? NormalizeCRC32(string? hash) - => NormalizeHashData(hash, Constants.CRCLength); - - /// - /// Normalize a MD2 string and pad to the correct size - /// - /// MD2 is the same length as MD5 - public static string? NormalizeMD2(string? hash) - => NormalizeHashData(hash, Constants.MD5Length); - - /// - /// Normalize a MD4 string and pad to the correct size - /// - /// MD4 is the same length as MD5 - public static string? NormalizeMD4(string? hash) - => NormalizeHashData(hash, Constants.MD5Length); - - /// - /// Normalize a MD5 string and pad to the correct size - /// - public static string? NormalizeMD5(string? hash) - => NormalizeHashData(hash, Constants.MD5Length); - - /// - /// Normalize a RIPEMD128 string and pad to the correct size - /// - public static string? NormalizeRIPEMD128(string? hash) - => NormalizeHashData(hash, Constants.MD5Length); - - /// - /// Normalize a RIPEMD160 string and pad to the correct size - /// - public static string? NormalizeRIPEMD160(string? hash) - => NormalizeHashData(hash, Constants.SHA1Length); - - /// - /// Normalize a SHA1 string and pad to the correct size - /// - public static string? NormalizeSHA1(string? hash) - => NormalizeHashData(hash, Constants.SHA1Length); - - /// - /// Normalize a SHA256 string and pad to the correct size - /// - public static string? NormalizeSHA256(string? hash) - => NormalizeHashData(hash, Constants.SHA256Length); - - /// - /// Normalize a SHA384 string and pad to the correct size - /// - public static string? NormalizeSHA384(string? hash) - => NormalizeHashData(hash, Constants.SHA384Length); - - /// - /// Normalize a SHA512 string and pad to the correct size - /// - public static string? NormalizeSHA512(string? hash) - => NormalizeHashData(hash, Constants.SHA512Length); - - /// - /// Remove all chars that are considered path unsafe - /// - public static string RemovePathUnsafeCharacters(string? input) - { - if (string.IsNullOrEmpty(input)) - return string.Empty; - - foreach (char invalid in Path.GetInvalidPathChars()) - { - input = input!.Replace(invalid.ToString(), string.Empty); - } - - return input!; - } - - /// - /// Remove all Unicode-specific chars from a string - /// - /// - /// "Unicode characters" here means any characters outside of the - /// Extended ASCII (0x00 to 0xFF) set. This is just a simple - /// way of filtering out characters that won't work on all - /// supported platforms. - /// - public static string RemoveUnicodeCharacters(string? input) - { - if (string.IsNullOrEmpty(input)) - return string.Empty; - - return new string(Array.FindAll(input!.ToCharArray(), c => c <= 255)); - } - - #endregion - - #region Helpers - - /// - /// Replace accented characters - /// - private static string NormalizeChars(string input) - { - string[,] charmap = { - { "Á", "A" }, { "á", "a" }, - { "À", "A" }, { "à", "a" }, - { "Â", "A" }, { "â", "a" }, - { "Ä", "Ae" }, { "ä", "ae" }, - { "Ã", "A" }, { "ã", "a" }, - { "Å", "A" }, { "å", "a" }, - { "Æ", "Ae" }, { "æ", "ae" }, - { "Ç", "C" }, { "ç", "c" }, - { "Ð", "D" }, { "ð", "d" }, - { "É", "E" }, { "é", "e" }, - { "È", "E" }, { "è", "e" }, - { "Ê", "E" }, { "ê", "e" }, - { "Ë", "E" }, { "ë", "e" }, - { "ƒ", "f" }, - { "Í", "I" }, { "í", "i" }, - { "Ì", "I" }, { "ì", "i" }, - { "Î", "I" }, { "î", "i" }, - { "Ï", "I" }, { "ï", "i" }, - { "Ñ", "N" }, { "ñ", "n" }, - { "Ó", "O" }, { "ó", "o" }, - { "Ò", "O" }, { "ò", "o" }, - { "Ô", "O" }, { "ô", "o" }, - { "Ö", "Oe" }, { "ö", "oe" }, - { "Õ", "O" }, { "õ", "o" }, - { "Ø", "O" }, { "ø", "o" }, - { "Š", "S" }, { "š", "s" }, - { "ß", "ss" }, - { "Þ", "B" }, { "þ", "b" }, - { "Ú", "U" }, { "ú", "u" }, - { "Ù", "U" }, { "ù", "u" }, - { "Û", "U" }, { "û", "u" }, - { "Ü", "Ue" }, { "ü", "ue" }, - { "ÿ", "y" }, - { "Ý", "Y" }, { "ý", "y" }, - { "Ž", "Z" }, { "ž", "z" }, - }; - - for (int i = 0; i < charmap.GetLength(0); i++) - { - input = input.Replace(charmap[i, 0], charmap[i, 1]); - } - - return input; - } - - /// - /// Normalize a hash string and pad to the correct size - /// - private static string? NormalizeHashData(string? hash, int expectedLength) - { - // If we have a known blank hash, return blank - if (hash is null) - return null; - else if (hash == string.Empty || hash == "-" || hash == "_") - return string.Empty; - - // Check to see if it's a "hex" hash - hash = hash!.Trim().Replace("0x", string.Empty); - - // If we have a blank hash now, return blank - if (string.IsNullOrEmpty(hash)) - return string.Empty; - - // If the hash shorter than the required length, pad it - if (hash.Length < expectedLength) - hash = hash.PadLeft(expectedLength, '0'); - - // If the hash is longer than the required length, it's invalid - else if (hash.Length > expectedLength) - return string.Empty; - - // Now normalize the hash - hash = hash.ToLowerInvariant(); - - // Otherwise, make sure that every character is a proper match - for (int i = 0; i < hash.Length; i++) - { - char c = hash[i]; -#if NET7_0_OR_GREATER - if (!char.IsAsciiHexDigit(c)) -#else - if (!c.IsAsciiHexDigit()) -#endif - { - hash = string.Empty; - break; - } - } - - return hash; - } - - /// - /// Convert Cyrillic lettering to Latin lettering - /// - private static string RussianToLatin(string input) - { - string[,] charmap = { - { "А", "A" }, { "Б", "B" }, { "В", "V" }, { "Г", "G" }, { "Д", "D" }, - { "Е", "E" }, { "Ё", "Yo" }, { "Ж", "Zh" }, { "З", "Z" }, { "И", "I" }, - { "Й", "J" }, { "К", "K" }, { "Л", "L" }, { "М", "M" }, { "Н", "N" }, - { "О", "O" }, { "П", "P" }, { "Р", "R" }, { "С", "S" }, { "Т", "T" }, - { "У", "U" }, { "Ф", "f" }, { "Х", "Kh" }, { "Ц", "Ts" }, { "Ч", "Ch" }, - { "Ш", "Sh" }, { "Щ", "Sch" }, { "Ъ", string.Empty }, { "Ы", "y" }, { "Ь", string.Empty }, - { "Э", "e" }, { "Ю", "yu" }, { "Я", "ya" }, { "а", "a" }, { "б", "b" }, - { "в", "v" }, { "г", "g" }, { "д", "d" }, { "е", "e" }, { "ё", "yo" }, - { "ж", "zh" }, { "з", "z" }, { "и", "i" }, { "й", "j" }, { "к", "k" }, - { "л", "l" }, { "м", "m" }, { "н", "n" }, { "о", "o" }, { "п", "p" }, - { "р", "r" }, { "с", "s" }, { "т", "t" }, { "у", "u" }, { "ф", "f" }, - { "х", "kh" }, { "ц", "ts" }, { "ч", "ch" }, { "ш", "sh" }, { "щ", "sch" }, - { "ъ", string.Empty }, { "ы", "y" }, { "ь", string.Empty }, { "э", "e" }, { "ю", "yu" }, - { "я", "ya" }, - }; - - for (int i = 0; i < charmap.GetLength(0); i++) - { - input = input.Replace(charmap[i, 0], charmap[i, 1]); - } - - return input; - } - - /// - /// Replace special characters and patterns - /// - private static string SearchPattern(string input) - { - string[,] charmap = { - { @"~", " - " }, - { @"_", " " }, - { @":", " " }, - { @">", ")" }, - { @"<", "(" }, - { @"\|", "-" }, - { "\"", "'" }, - { @"\*", "." }, - { @"\\", "-" }, - { @"/", "-" }, - { @"\?", " " }, - { @"\(([^)(]*)\(([^)]*)\)([^)(]*)\)", " " }, - { @"\(([^)]+)\)", " " }, - { @"\[([^]]+)\]", " " }, - { @"\{([^}]+)\}", " " }, - { @"(ZZZJUNK|ZZZ-UNK-|ZZZ-UNK |zzz unknow |zzz unk |Copy of |[.][a-z]{3}[.][a-z]{3}[.]|[.][a-z]{3}[.])", " " }, - { @" (r|rev|v|ver)\s*[\d\.]+[^\s]*", " " }, - { @"(( )|(\A))(\d{6}|\d{8})(( )|(\Z))", " " }, - { @"(( )|(\A))(\d{1,2})-(\d{1,2})-(\d{4}|\d{2})", " " }, - { @"(( )|(\A))(\d{4}|\d{2})-(\d{1,2})-(\d{1,2})", " " }, - { @"[-]+", "-" }, - { @"\A\s*\)", " " }, - { @"\A\s*(,|-)", " " }, - { @"\s+", " " }, - { @"\s+,", "," }, - { @"\s*(,|-)\s*\Z", " " }, - }; - - for (int i = 0; i < charmap.GetLength(0); i++) - { - input = Regex.Replace(input, charmap[i, 0], charmap[i, 1]); - } - - return input; - } - - #endregion - } -} diff --git a/SabreTools.Metadata/Tools/Utilities.cs b/SabreTools.Metadata/Tools/Utilities.cs index 00498be3..c4725b39 100644 --- a/SabreTools.Metadata/Tools/Utilities.cs +++ b/SabreTools.Metadata/Tools/Utilities.cs @@ -1,6 +1,6 @@ using System.IO; using SabreTools.Hashing; -using SabreTools.IO.Extensions; +using SabreTools.Text.Extensions; namespace SabreTools.Metadata.Tools { @@ -34,14 +34,14 @@ namespace SabreTools.Metadata.Tools return null; // If the hash isn't the right size, then we return null - if (hash!.Length != Constants.SHA1Length) + if (hash!.Length != HashType.SHA1.ZeroString.Length) return null; // Cap the depth between 0 and 20, for now if (depth < 0) depth = 0; - else if (depth > ZeroHash.SHA1Arr.Length) - depth = ZeroHash.SHA1Arr.Length; + else if (depth > HashType.SHA1.ZeroBytes.Length) + depth = HashType.SHA1.ZeroBytes.Length; // Loop through and generate the subdirectory string path = string.Empty; diff --git a/SabreTools.Serialization.CrossModel.Test/HashfileTests.cs b/SabreTools.Serialization.CrossModel.Test/HashfileTests.cs index 18d10bc9..99c63eae 100644 --- a/SabreTools.Serialization.CrossModel.Test/HashfileTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/HashfileTests.cs @@ -218,21 +218,26 @@ namespace SabreTools.Serialization.CrossModel.Test /// private static Data.Models.Hashfile.Hashfile Build(HashType hashType) { -#pragma warning disable IDE0072 - return hashType switch - { - HashType.CRC32 => new Data.Models.Hashfile.Hashfile { SFV = [new Data.Models.Hashfile.SFV { File = "XXXXXX", Hash = "XXXXXX" }] }, - HashType.MD2 => new Data.Models.Hashfile.Hashfile { MD2 = [new Data.Models.Hashfile.MD2 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.MD4 => new Data.Models.Hashfile.Hashfile { MD4 = [new Data.Models.Hashfile.MD4 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.MD5 => new Data.Models.Hashfile.Hashfile { MD5 = [new Data.Models.Hashfile.MD5 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SHA1 => new Data.Models.Hashfile.Hashfile { SHA1 = [new Data.Models.Hashfile.SHA1 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SHA256 => new Data.Models.Hashfile.Hashfile { SHA256 = [new Data.Models.Hashfile.SHA256 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SHA384 => new Data.Models.Hashfile.Hashfile { SHA384 = [new Data.Models.Hashfile.SHA384 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SHA512 => new Data.Models.Hashfile.Hashfile { SHA512 = [new Data.Models.Hashfile.SHA512 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SpamSum => new Data.Models.Hashfile.Hashfile { SpamSum = [new Data.Models.Hashfile.SpamSum { Hash = "XXXXXX", File = "XXXXXX" }] }, - _ => throw new ArgumentOutOfRangeException(nameof(hashType)), - }; -#pragma warning restore IDE0072 + if (hashType == HashType.CRC32) + return new Data.Models.Hashfile.Hashfile { SFV = [new Data.Models.Hashfile.SFV { File = "XXXXXX", Hash = "XXXXXX" }] }; + else if (hashType == HashType.MD2) + return new Data.Models.Hashfile.Hashfile { MD2 = [new Data.Models.Hashfile.MD2 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.MD4) + return new Data.Models.Hashfile.Hashfile { MD4 = [new Data.Models.Hashfile.MD4 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.MD5) + return new Data.Models.Hashfile.Hashfile { MD5 = [new Data.Models.Hashfile.MD5 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SHA1) + return new Data.Models.Hashfile.Hashfile { SHA1 = [new Data.Models.Hashfile.SHA1 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SHA256) + return new Data.Models.Hashfile.Hashfile { SHA256 = [new Data.Models.Hashfile.SHA256 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SHA384) + return new Data.Models.Hashfile.Hashfile { SHA384 = [new Data.Models.Hashfile.SHA384 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SHA512) + return new Data.Models.Hashfile.Hashfile { SHA512 = [new Data.Models.Hashfile.SHA512 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SpamSum) + return new Data.Models.Hashfile.Hashfile { SpamSum = [new Data.Models.Hashfile.SpamSum { Hash = "XXXXXX", File = "XXXXXX" }] }; + else + throw new ArgumentOutOfRangeException(nameof(hashType)); } /// diff --git a/SabreTools.Serialization.CrossModel/SabreTools.Serialization.CrossModel.csproj b/SabreTools.Serialization.CrossModel/SabreTools.Serialization.CrossModel.csproj index 7157bcd8..d5820113 100644 --- a/SabreTools.Serialization.CrossModel/SabreTools.Serialization.CrossModel.csproj +++ b/SabreTools.Serialization.CrossModel/SabreTools.Serialization.CrossModel.csproj @@ -36,7 +36,7 @@ - + \ No newline at end of file diff --git a/SabreTools.Serialization.Readers.Test/ArchiveDotOrgTests.cs b/SabreTools.Serialization.Readers.Test/ArchiveDotOrgTests.cs index 6dc20dcf..d297bbaf 100644 --- a/SabreTools.Serialization.Readers.Test/ArchiveDotOrgTests.cs +++ b/SabreTools.Serialization.Readers.Test/ArchiveDotOrgTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new ArchiveDotOrg(); - var serializer = new Serialization.Writers.ArchiveDotOrg(); + var serializer = new Writers.ArchiveDotOrg(); // Build the data Data.Models.ArchiveDotOrg.Files files = Build(); diff --git a/SabreTools.Serialization.Readers.Test/AttractModeTests.cs b/SabreTools.Serialization.Readers.Test/AttractModeTests.cs index 61c57d7e..6134ee51 100644 --- a/SabreTools.Serialization.Readers.Test/AttractModeTests.cs +++ b/SabreTools.Serialization.Readers.Test/AttractModeTests.cs @@ -75,7 +75,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new AttractMode(); - var serializer = new Serialization.Writers.AttractMode(); + var serializer = new Writers.AttractMode(); // Build the data Data.Models.AttractMode.MetadataFile mf = Build(); @@ -100,7 +100,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new AttractMode(); - var serializer = new Serialization.Writers.AttractMode(); + var serializer = new Writers.AttractMode(); // Build the data Data.Models.AttractMode.MetadataFile mf = Build(); @@ -167,9 +167,9 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(header); if (longHeader) - Assert.True(Serialization.Writers.AttractMode.HeaderArrayWithRomname.SequenceEqual(header)); + Assert.True(Writers.AttractMode.HeaderArrayWithRomname.SequenceEqual(header)); else - Assert.True(Serialization.Writers.AttractMode.HeaderArrayWithoutRomname.SequenceEqual(header)); + Assert.True(Writers.AttractMode.HeaderArrayWithoutRomname.SequenceEqual(header)); } /// diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index dbc8f149..cd0969e2 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new ClrMamePro(); - var serializer = new Serialization.Writers.ClrMamePro(); + var serializer = new Writers.ClrMamePro(); // Build the data Data.Models.ClrMamePro.MetadataFile mf = Build(game: true); @@ -100,7 +100,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new ClrMamePro(); - var serializer = new Serialization.Writers.ClrMamePro(); + var serializer = new Writers.ClrMamePro(); // Build the data Data.Models.ClrMamePro.MetadataFile mf = Build(game: true); @@ -126,7 +126,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new ClrMamePro(); - var serializer = new Serialization.Writers.ClrMamePro(); + var serializer = new Writers.ClrMamePro(); // Build the data Data.Models.ClrMamePro.MetadataFile mf = Build(game: false); @@ -151,7 +151,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new ClrMamePro(); - var serializer = new Serialization.Writers.ClrMamePro(); + var serializer = new Writers.ClrMamePro(); // Build the data Data.Models.ClrMamePro.MetadataFile mf = Build(game: false); diff --git a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs index ac93632a..219972c9 100644 --- a/SabreTools.Serialization.Readers.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.Readers.Test/DosCenterTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new DosCenter(); - var serializer = new Serialization.Writers.DosCenter(); + var serializer = new Writers.DosCenter(); // Build the data Data.Models.DosCenter.MetadataFile mf = Build(); diff --git a/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs b/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs index ddeb237d..c296c62c 100644 --- a/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs +++ b/SabreTools.Serialization.Readers.Test/EverdriveSMDBTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new EverdriveSMDB(); - var serializer = new Serialization.Writers.EverdriveSMDB(); + var serializer = new Writers.EverdriveSMDB(); // Build the data Data.Models.EverdriveSMDB.MetadataFile mf = Build(); diff --git a/SabreTools.Serialization.Readers.Test/HashfileTests.cs b/SabreTools.Serialization.Readers.Test/HashfileTests.cs index 0ece735b..a16d52bf 100644 --- a/SabreTools.Serialization.Readers.Test/HashfileTests.cs +++ b/SabreTools.Serialization.Readers.Test/HashfileTests.cs @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Hashfile(); - var serializer = new Serialization.Writers.Hashfile(); + var serializer = new Writers.Hashfile(); // Build the data Data.Models.Hashfile.Hashfile hf = Build(HashType.CRC32); @@ -100,7 +100,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Hashfile(); - var serializer = new Serialization.Writers.Hashfile(); + var serializer = new Writers.Hashfile(); // Build the data Data.Models.Hashfile.Hashfile hf = Build(HashType.MD2); @@ -124,7 +124,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Hashfile(); - var serializer = new Serialization.Writers.Hashfile(); + var serializer = new Writers.Hashfile(); // Build the data Data.Models.Hashfile.Hashfile hf = Build(HashType.MD4); @@ -148,7 +148,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Hashfile(); - var serializer = new Serialization.Writers.Hashfile(); + var serializer = new Writers.Hashfile(); // Build the data Data.Models.Hashfile.Hashfile hf = Build(HashType.MD5); @@ -172,7 +172,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Hashfile(); - var serializer = new Serialization.Writers.Hashfile(); + var serializer = new Writers.Hashfile(); // Build the data Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA1); @@ -196,7 +196,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Hashfile(); - var serializer = new Serialization.Writers.Hashfile(); + var serializer = new Writers.Hashfile(); // Build the data Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA256); @@ -220,7 +220,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Hashfile(); - var serializer = new Serialization.Writers.Hashfile(); + var serializer = new Writers.Hashfile(); // Build the data Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA384); @@ -244,7 +244,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Hashfile(); - var serializer = new Serialization.Writers.Hashfile(); + var serializer = new Writers.Hashfile(); // Build the data Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA512); @@ -268,7 +268,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Hashfile(); - var serializer = new Serialization.Writers.Hashfile(); + var serializer = new Writers.Hashfile(); // Build the data Data.Models.Hashfile.Hashfile hf = Build(HashType.SpamSum); @@ -292,21 +292,26 @@ namespace SabreTools.Serialization.Readers.Test /// private static Data.Models.Hashfile.Hashfile Build(HashType hashType) { -#pragma warning disable IDE0072 - return hashType switch - { - HashType.CRC32 => new Data.Models.Hashfile.Hashfile { SFV = [new Data.Models.Hashfile.SFV { File = "XXXXXX", Hash = "XXXXXX" }] }, - HashType.MD2 => new Data.Models.Hashfile.Hashfile { MD2 = [new Data.Models.Hashfile.MD2 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.MD4 => new Data.Models.Hashfile.Hashfile { MD4 = [new Data.Models.Hashfile.MD4 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.MD5 => new Data.Models.Hashfile.Hashfile { MD5 = [new Data.Models.Hashfile.MD5 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SHA1 => new Data.Models.Hashfile.Hashfile { SHA1 = [new Data.Models.Hashfile.SHA1 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SHA256 => new Data.Models.Hashfile.Hashfile { SHA256 = [new Data.Models.Hashfile.SHA256 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SHA384 => new Data.Models.Hashfile.Hashfile { SHA384 = [new Data.Models.Hashfile.SHA384 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SHA512 => new Data.Models.Hashfile.Hashfile { SHA512 = [new Data.Models.Hashfile.SHA512 { Hash = "XXXXXX", File = "XXXXXX" }] }, - HashType.SpamSum => new Data.Models.Hashfile.Hashfile { SpamSum = [new Data.Models.Hashfile.SpamSum { Hash = "XXXXXX", File = "XXXXXX" }] }, - _ => throw new ArgumentOutOfRangeException(nameof(hashType)), - }; -#pragma warning restore IDE0072 + if (hashType == HashType.CRC32) + return new Data.Models.Hashfile.Hashfile { SFV = [new Data.Models.Hashfile.SFV { File = "XXXXXX", Hash = "XXXXXX" }] }; + else if (hashType == HashType.MD2) + return new Data.Models.Hashfile.Hashfile { MD2 = [new Data.Models.Hashfile.MD2 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.MD4) + return new Data.Models.Hashfile.Hashfile { MD4 = [new Data.Models.Hashfile.MD4 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.MD5) + return new Data.Models.Hashfile.Hashfile { MD5 = [new Data.Models.Hashfile.MD5 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SHA1) + return new Data.Models.Hashfile.Hashfile { SHA1 = [new Data.Models.Hashfile.SHA1 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SHA256) + return new Data.Models.Hashfile.Hashfile { SHA256 = [new Data.Models.Hashfile.SHA256 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SHA384) + return new Data.Models.Hashfile.Hashfile { SHA384 = [new Data.Models.Hashfile.SHA384 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SHA512) + return new Data.Models.Hashfile.Hashfile { SHA512 = [new Data.Models.Hashfile.SHA512 { Hash = "XXXXXX", File = "XXXXXX" }] }; + else if (hashType == HashType.SpamSum) + return new Data.Models.Hashfile.Hashfile { SpamSum = [new Data.Models.Hashfile.SpamSum { Hash = "XXXXXX", File = "XXXXXX" }] }; + else + throw new ArgumentOutOfRangeException(nameof(hashType)); } /// diff --git a/SabreTools.Serialization.Readers.Test/ListromTests.cs b/SabreTools.Serialization.Readers.Test/ListromTests.cs index 92d28f02..5bc0e380 100644 --- a/SabreTools.Serialization.Readers.Test/ListromTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListromTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Listrom(); - var serializer = new Serialization.Writers.Listrom(); + var serializer = new Writers.Listrom(); // Build the data Data.Models.Listrom.MetadataFile mf = Build(); diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 6f59387a..61c80329 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Listxml(); - var serializer = new Serialization.Writers.Listxml(); + var serializer = new Writers.Listxml(); // Build the data Data.Models.Listxml.Mame mame = Build(game: true); @@ -102,7 +102,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Listxml(); - var serializer = new Serialization.Writers.Listxml(); + var serializer = new Writers.Listxml(); // Build the data Data.Models.Listxml.Mame mame = Build(game: false); diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 6fda20cc..d31d7eaa 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Logiqx(); - var serializer = new Serialization.Writers.Logiqx(); + var serializer = new Writers.Logiqx(); // Build the data Data.Models.Logiqx.Datafile df = Build(game: true); @@ -106,7 +106,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Logiqx(); - var serializer = new Serialization.Writers.Logiqx(); + var serializer = new Writers.Logiqx(); // Build the data Data.Models.Logiqx.Datafile df = Build(game: false); diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 5a6d72e4..e560fdfb 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new M1(); - var serializer = new Serialization.Writers.M1(); + var serializer = new Writers.M1(); // Build the data Data.Models.Listxml.M1 m1 = Build(game: true); @@ -100,7 +100,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new M1(); - var serializer = new Serialization.Writers.M1(); + var serializer = new Writers.M1(); // Build the data Data.Models.Listxml.M1 m1 = Build(game: false); diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 3da5af9f..459e1ffa 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Mess(); - var serializer = new Serialization.Writers.Mess(); + var serializer = new Writers.Mess(); // Build the data Data.Models.Listxml.Mess m1 = Build(game: true); @@ -100,7 +100,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new Mess(); - var serializer = new Serialization.Writers.Mess(); + var serializer = new Writers.Mess(); // Build the data Data.Models.Listxml.Mess m1 = Build(game: false); diff --git a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs index cb5372b6..76df621e 100644 --- a/SabreTools.Serialization.Readers.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.Readers.Test/OfflineListTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new OfflineList(); - var serializer = new Serialization.Writers.OfflineList(); + var serializer = new Writers.OfflineList(); // Build the data Data.Models.OfflineList.Dat dat = Build(); diff --git a/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs b/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs index 52fc7204..7ea7e92d 100644 --- a/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs +++ b/SabreTools.Serialization.Readers.Test/OpenMSXTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new OpenMSX(); - var serializer = new Serialization.Writers.OpenMSX(); + var serializer = new Writers.OpenMSX(); // Build the data Data.Models.OpenMSX.SoftwareDb sdb = Build(); diff --git a/SabreTools.Serialization.Readers.Test/RomCenterTests.cs b/SabreTools.Serialization.Readers.Test/RomCenterTests.cs index cd4de0aa..2592ae54 100644 --- a/SabreTools.Serialization.Readers.Test/RomCenterTests.cs +++ b/SabreTools.Serialization.Readers.Test/RomCenterTests.cs @@ -74,7 +74,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new RomCenter(); - var serializer = new Serialization.Writers.RomCenter(); + var serializer = new Writers.RomCenter(); // Build the data Data.Models.RomCenter.MetadataFile mf = Build(); diff --git a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs index 3e1d14d9..1d7d5c4f 100644 --- a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs @@ -75,7 +75,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new SeparatedValue(); - var serializer = new Serialization.Writers.SeparatedValue(); + var serializer = new Writers.SeparatedValue(); // Build the data Data.Models.SeparatedValue.MetadataFile mf = Build(); @@ -103,7 +103,7 @@ namespace SabreTools.Serialization.Readers.Test { // Get the serializer and deserializer var deserializer = new SeparatedValue(); - var serializer = new Serialization.Writers.SeparatedValue(); + var serializer = new Writers.SeparatedValue(); // Build the data Data.Models.SeparatedValue.MetadataFile mf = Build(); @@ -196,9 +196,9 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(header); if (longHeader) - Assert.True(Serialization.Writers.SeparatedValue.HeaderArrayExtended.SequenceEqual(header)); + Assert.True(Writers.SeparatedValue.HeaderArrayExtended.SequenceEqual(header)); else - Assert.True(Serialization.Writers.SeparatedValue.HeaderArrayStandard.SequenceEqual(header)); + Assert.True(Writers.SeparatedValue.HeaderArrayStandard.SequenceEqual(header)); } /// diff --git a/SabreTools.Serialization.Readers/AACS.cs b/SabreTools.Serialization.Readers/AACS.cs index 2a9e7914..31408aa9 100644 --- a/SabreTools.Serialization.Readers/AACS.cs +++ b/SabreTools.Serialization.Readers/AACS.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.AACS; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers @@ -106,9 +107,9 @@ namespace SabreTools.Serialization.Readers obj.RecordType = (RecordType)data.ReadByteValue(); obj.RecordLength = data.ReadUInt24LittleEndian(); - if (obj.RecordLength > 4) + if ((uint)obj.RecordLength > 4) { - byte[] copyright = data.ReadBytes((int)(obj.RecordLength - 4)); + byte[] copyright = data.ReadBytes((int)((uint)obj.RecordLength - 4)); obj.Copyright = Encoding.ASCII.GetString(copyright).TrimEnd('\0'); } @@ -149,7 +150,7 @@ namespace SabreTools.Serialization.Readers // Try to parse the signature blocks var blocks = new List(); uint entryCount = 0; - while (entryCount < obj.TotalNumberOfEntries && data.Position < initialOffset + obj.RecordLength) + while (entryCount < obj.TotalNumberOfEntries && data.Position < initialOffset + (uint)obj.RecordLength) { var block = ParseDriveRevocationSignatureBlock(data); entryCount += block.NumberOfEntries; @@ -164,8 +165,8 @@ namespace SabreTools.Serialization.Readers obj.SignatureBlocks = [.. blocks]; // If there's any data left, discard it - if (data.Position < initialOffset + obj.RecordLength) - _ = data.ReadBytes((int)(initialOffset + obj.RecordLength - data.Position)); + if (data.Position < initialOffset + (uint)obj.RecordLength) + _ = data.ReadBytes((int)(initialOffset + (uint)obj.RecordLength - data.Position)); return obj; } @@ -200,8 +201,8 @@ namespace SabreTools.Serialization.Readers obj.RecordType = (RecordType)data.ReadByteValue(); obj.RecordLength = data.ReadUInt24LittleEndian(); - if (obj.RecordLength > 4) - obj.SignatureData = data.ReadBytes((int)(obj.RecordLength - 4)); + if ((uint)obj.RecordLength > 4) + obj.SignatureData = data.ReadBytes((int)((uint)obj.RecordLength - 4)); return obj; } @@ -223,7 +224,7 @@ namespace SabreTools.Serialization.Readers // Try to parse the subset differences var subsetDifferences = new List(); - while (data.Position < initialOffset + obj.RecordLength - 5) + while (data.Position < initialOffset + (uint)obj.RecordLength - 5) { var subsetDifference = ParseSubsetDifference(data); subsetDifferences.Add(subsetDifference); @@ -233,8 +234,8 @@ namespace SabreTools.Serialization.Readers obj.SubsetDifferences = [.. subsetDifferences]; // If there's any data left, discard it - if (data.Position < initialOffset + obj.RecordLength) - _ = data.ReadBytes((int)(initialOffset + obj.RecordLength - data.Position)); + if (data.Position < initialOffset + (uint)obj.RecordLength) + _ = data.ReadBytes((int)(initialOffset + (uint)obj.RecordLength - data.Position)); return obj; } @@ -288,7 +289,7 @@ namespace SabreTools.Serialization.Readers // Try to parse the signature blocks var blocks = new List(); - for (uint entryCount = 0; entryCount < obj.TotalNumberOfEntries && data.Position < initialOffset + obj.RecordLength;) + for (uint entryCount = 0; entryCount < obj.TotalNumberOfEntries && data.Position < initialOffset + (uint)obj.RecordLength;) { var block = ParseHostRevocationSignatureBlock(data); entryCount += block.NumberOfEntries; @@ -303,8 +304,8 @@ namespace SabreTools.Serialization.Readers obj.SignatureBlocks = [.. blocks]; // If there's any data left, discard it - if (data.Position < initialOffset + obj.RecordLength) - _ = data.ReadBytes((int)(initialOffset + obj.RecordLength - data.Position)); + if (data.Position < initialOffset + (uint)obj.RecordLength) + _ = data.ReadBytes((int)(initialOffset + (uint)obj.RecordLength - data.Position)); return obj; } @@ -345,7 +346,7 @@ namespace SabreTools.Serialization.Readers // Try to parse the media keys var mediaKeys = new List(); - while (data.Position < initialOffset + obj.RecordLength) + while (data.Position < initialOffset + (uint)obj.RecordLength) { byte[] mediaKey = data.ReadBytes(0x10); mediaKeys.Add(mediaKey); @@ -390,7 +391,7 @@ namespace SabreTools.Serialization.Readers // Try to parse the offsets var offsets = new List(); - while (data.Position < initialOffset + obj.RecordLength) + while (data.Position < initialOffset + (uint)obj.RecordLength) { uint offset = data.ReadUInt32BigEndian(); offsets.Add(offset); diff --git a/SabreTools.Serialization.Readers/AbstractSyntaxNotationOne.cs b/SabreTools.Serialization.Readers/AbstractSyntaxNotationOne.cs index b779e42f..94bab237 100644 --- a/SabreTools.Serialization.Readers/AbstractSyntaxNotationOne.cs +++ b/SabreTools.Serialization.Readers/AbstractSyntaxNotationOne.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using SabreTools.Data.Models.ASN1; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable CA1822 // Mark members as static #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/AdvancedInstaller.cs b/SabreTools.Serialization.Readers/AdvancedInstaller.cs index f845ba85..31bf4b35 100644 --- a/SabreTools.Serialization.Readers/AdvancedInstaller.cs +++ b/SabreTools.Serialization.Readers/AdvancedInstaller.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.AdvancedInstaller; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.AdvancedInstaller.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/AppPkgHeader.cs b/SabreTools.Serialization.Readers/AppPkgHeader.cs index 0989b558..f4eec771 100644 --- a/SabreTools.Serialization.Readers/AppPkgHeader.cs +++ b/SabreTools.Serialization.Readers/AppPkgHeader.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.PlayStation4.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/Atari7800Cart.cs b/SabreTools.Serialization.Readers/Atari7800Cart.cs index 81a23881..0f382bf9 100644 --- a/SabreTools.Serialization.Readers/Atari7800Cart.cs +++ b/SabreTools.Serialization.Readers/Atari7800Cart.cs @@ -1,6 +1,8 @@ using System.IO; using SabreTools.Data.Models.Atari7800; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.Atari7800.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/AtariLynxCart.cs b/SabreTools.Serialization.Readers/AtariLynxCart.cs index e2b0a8c6..997dff81 100644 --- a/SabreTools.Serialization.Readers/AtariLynxCart.cs +++ b/SabreTools.Serialization.Readers/AtariLynxCart.cs @@ -1,6 +1,8 @@ using System.IO; using SabreTools.Data.Models.AtariLynx; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.AtariLynx.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/AttractMode.cs b/SabreTools.Serialization.Readers/AttractMode.cs index ccc183b8..8bbd00ab 100644 --- a/SabreTools.Serialization.Readers/AttractMode.cs +++ b/SabreTools.Serialization.Readers/AttractMode.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.AttractMode; -using SabreTools.IO.Readers; +using SabreTools.Text.SeparatedValue; namespace SabreTools.Serialization.Readers { @@ -28,7 +28,7 @@ namespace SabreTools.Serialization.Readers try { // Setup the reader and output - var reader = new SeparatedValueReader(data, Encoding.UTF8) + var reader = new Reader(data, Encoding.UTF8) { Separator = ';', VerifyFieldCount = false, diff --git a/SabreTools.Serialization.Readers/BDPlus.cs b/SabreTools.Serialization.Readers/BDPlus.cs index 815ca639..e226d6b2 100644 --- a/SabreTools.Serialization.Readers/BDPlus.cs +++ b/SabreTools.Serialization.Readers/BDPlus.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.BDPlus; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.BDPlus.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/BFPK.cs b/SabreTools.Serialization.Readers/BFPK.cs index da1e5768..0f3e34f6 100644 --- a/SabreTools.Serialization.Readers/BFPK.cs +++ b/SabreTools.Serialization.Readers/BFPK.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.BFPK; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.BFPK.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/BSP.cs b/SabreTools.Serialization.Readers/BSP.cs index 78195425..f05986de 100644 --- a/SabreTools.Serialization.Readers/BSP.cs +++ b/SabreTools.Serialization.Readers/BSP.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.BSP; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.BSP.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/CDROM.cs b/SabreTools.Serialization.Readers/CDROM.cs index 3ddb41ba..c330304a 100644 --- a/SabreTools.Serialization.Readers/CDROM.cs +++ b/SabreTools.Serialization.Readers/CDROM.cs @@ -2,6 +2,7 @@ using System.IO; using SabreTools.Data.Extensions; using SabreTools.Data.Models.CDROM; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/CFB.cs b/SabreTools.Serialization.Readers/CFB.cs index c2020bee..9ca4173a 100644 --- a/SabreTools.Serialization.Readers/CFB.cs +++ b/SabreTools.Serialization.Readers/CFB.cs @@ -5,6 +5,7 @@ using System.Text; using SabreTools.Data.Extensions; using SabreTools.Data.Models.CFB; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.CFB.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/CHD.cs b/SabreTools.Serialization.Readers/CHD.cs index 880450f4..f850a405 100644 --- a/SabreTools.Serialization.Readers/CHD.cs +++ b/SabreTools.Serialization.Readers/CHD.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.CHD; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Serialization.Readers { diff --git a/SabreTools.Serialization.Readers/CIA.cs b/SabreTools.Serialization.Readers/CIA.cs index ee693ef3..2022fc8a 100644 --- a/SabreTools.Serialization.Readers/CIA.cs +++ b/SabreTools.Serialization.Readers/CIA.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.N3DS; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index 55976ccd..aed9f3ce 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.ClrMamePro; -using SabreTools.IO.Readers; +using SabreTools.Text.ClrMamePro; #pragma warning disable CA1822 // Mark members as static namespace SabreTools.Serialization.Readers @@ -78,7 +78,7 @@ namespace SabreTools.Serialization.Readers try { // Setup the reader and output - var reader = new ClrMameProReader(data, Encoding.UTF8) { Quotes = quotes }; + var reader = new Reader(data, Encoding.UTF8) { Quotes = quotes }; var dat = new MetadataFile(); // Loop through and parse out the values @@ -437,9 +437,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Release object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Release object created from the reader context - private static Release? CreateRelease(ClrMameProReader reader) + private static Release? CreateRelease(Reader reader) { if (reader.Internal is null) return null; @@ -477,9 +477,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a BiosSet object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// BiosSet object created from the reader context - private static BiosSet? CreateBiosSet(ClrMameProReader reader) + private static BiosSet? CreateBiosSet(Reader reader) { if (reader.Internal is null) return null; @@ -510,9 +510,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Rom object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Rom object created from the reader context - private static Rom? CreateRom(ClrMameProReader reader) + private static Rom? CreateRom(Reader reader) { if (reader.Internal is null) return null; @@ -615,9 +615,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Disk object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Disk object created from the reader context - private static Disk? CreateDisk(ClrMameProReader reader) + private static Disk? CreateDisk(Reader reader) { if (reader.Internal is null) return null; @@ -657,9 +657,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Media object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Media object created from the reader context - private static Media? CreateMedia(ClrMameProReader reader) + private static Media? CreateMedia(Reader reader) { if (reader.Internal is null) return null; @@ -696,9 +696,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Sample object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Sample object created from the reader context - private static Sample? CreateSample(ClrMameProReader reader) + private static Sample? CreateSample(Reader reader) { if (reader.Internal is null) return null; @@ -723,9 +723,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Archive object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Archive object created from the reader context - private static Archive? CreateArchive(ClrMameProReader reader) + private static Archive? CreateArchive(Reader reader) { if (reader.Internal is null) return null; @@ -750,9 +750,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Chip object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Chip object created from the reader context - private static Chip? CreateChip(ClrMameProReader reader) + private static Chip? CreateChip(Reader reader) { if (reader.Internal is null) return null; @@ -786,9 +786,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Video object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Video object created from the reader context - private static Video? CreateVideo(ClrMameProReader reader) + private static Video? CreateVideo(Reader reader) { if (reader.Internal is null) return null; @@ -831,9 +831,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Sound object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Sound object created from the reader context - private static Sound? CreateSound(ClrMameProReader reader) + private static Sound? CreateSound(Reader reader) { if (reader.Internal is null) return null; @@ -858,9 +858,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Input object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Input object created from the reader context - private static Input? CreateInput(ClrMameProReader reader) + private static Input? CreateInput(Reader reader) { if (reader.Internal is null) return null; @@ -900,9 +900,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a DipSwitch object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// DipSwitch object created from the reader context - private static DipSwitch? CreateDipSwitch(ClrMameProReader reader) + private static DipSwitch? CreateDipSwitch(Reader reader) { if (reader.Internal is null) return null; @@ -935,9 +935,9 @@ namespace SabreTools.Serialization.Readers /// /// Create a Driver object from the current reader context /// - /// ClrMameProReader representing the metadata file + /// Reader representing the metadata file /// Driver object created from the reader context - private static Driver? CreateDriver(ClrMameProReader reader) + private static Driver? CreateDriver(Reader reader) { if (reader.Internal is null) return null; diff --git a/SabreTools.Serialization.Readers/DosCenter.cs b/SabreTools.Serialization.Readers/DosCenter.cs index f16b650f..0480c926 100644 --- a/SabreTools.Serialization.Readers/DosCenter.cs +++ b/SabreTools.Serialization.Readers/DosCenter.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.DosCenter; -using SabreTools.IO.Readers; +using SabreTools.Text.ClrMamePro; namespace SabreTools.Serialization.Readers { @@ -18,7 +18,7 @@ namespace SabreTools.Serialization.Readers try { // Setup the reader and output - var reader = new ClrMameProReader(data, Encoding.UTF8) { DosCenter = true }; + var reader = new Reader(data, Encoding.UTF8) { DosCenter = true }; var dat = new MetadataFile(); // Loop through and parse out the values @@ -176,7 +176,7 @@ namespace SabreTools.Serialization.Readers /// /// ClrMameProReader representing the metadata file /// File object created from the reader context - private static Data.Models.DosCenter.File? CreateFile(ClrMameProReader reader) + private static Data.Models.DosCenter.File? CreateFile(Reader reader) { if (reader.Internal is null) return null; diff --git a/SabreTools.Serialization.Readers/EverdriveSMDB.cs b/SabreTools.Serialization.Readers/EverdriveSMDB.cs index 43363cd9..100579b2 100644 --- a/SabreTools.Serialization.Readers/EverdriveSMDB.cs +++ b/SabreTools.Serialization.Readers/EverdriveSMDB.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.EverdriveSMDB; -using SabreTools.IO.Readers; +using SabreTools.Text.SeparatedValue; namespace SabreTools.Serialization.Readers { @@ -18,7 +18,7 @@ namespace SabreTools.Serialization.Readers try { // Setup the reader and output - var reader = new SeparatedValueReader(data, Encoding.UTF8) + var reader = new Reader(data, Encoding.UTF8) { Header = false, Separator = '\t', diff --git a/SabreTools.Serialization.Readers/FDS.cs b/SabreTools.Serialization.Readers/FDS.cs index 733cfd58..e6f9ebfd 100644 --- a/SabreTools.Serialization.Readers/FDS.cs +++ b/SabreTools.Serialization.Readers/FDS.cs @@ -1,6 +1,8 @@ using System.IO; using SabreTools.Data.Models.NES; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.NES.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/GCF.cs b/SabreTools.Serialization.Readers/GCF.cs index 24d96bae..4e94b7db 100644 --- a/SabreTools.Serialization.Readers/GCF.cs +++ b/SabreTools.Serialization.Readers/GCF.cs @@ -2,6 +2,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.GCF; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/GZip.cs b/SabreTools.Serialization.Readers/GZip.cs index 594aa286..3f26bbcc 100644 --- a/SabreTools.Serialization.Readers/GZip.cs +++ b/SabreTools.Serialization.Readers/GZip.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.IO; using SabreTools.Data.Models.GZIP; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.GZIP.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/Hashfile.cs b/SabreTools.Serialization.Readers/Hashfile.cs index 8a973586..fcc6f0b2 100644 --- a/SabreTools.Serialization.Readers/Hashfile.cs +++ b/SabreTools.Serialization.Readers/Hashfile.cs @@ -69,24 +69,30 @@ namespace SabreTools.Serialization.Readers /// public Data.Models.Hashfile.Hashfile? Deserialize(Stream? data, HashType hash) { -#pragma warning disable IDE0072 - return hash switch - { - HashType.CRC32 => DeserializeSFV(data), - HashType.MD2 => DeserializeMD2(data), - HashType.MD4 => DeserializeMD4(data), - HashType.MD5 => DeserializeMD5(data), - HashType.RIPEMD128 => DeserializeRIPEMD128(data), - HashType.RIPEMD160 => DeserializeRIPEMD160(data), - HashType.SHA1 => DeserializeSHA1(data), - HashType.SHA256 => DeserializeSHA256(data), - HashType.SHA384 => DeserializeSHA384(data), - HashType.SHA512 => DeserializeSHA512(data), - HashType.SpamSum => DeserializeSpamSum(data), - - _ => null, - }; -#pragma warning restore IDE0072 + if (hash == HashType.CRC32) + return DeserializeSFV(data); + else if (hash == HashType.MD2) + return DeserializeMD2(data); + else if (hash == HashType.MD4) + return DeserializeMD4(data); + else if (hash == HashType.MD5) + return DeserializeMD5(data); + else if (hash == HashType.RIPEMD128) + return DeserializeRIPEMD128(data); + else if (hash == HashType.RIPEMD160) + return DeserializeRIPEMD160(data); + else if (hash == HashType.SHA1) + return DeserializeSHA1(data); + else if (hash == HashType.SHA256) + return DeserializeSHA256(data); + else if (hash == HashType.SHA384) + return DeserializeSHA384(data); + else if (hash == HashType.SHA512) + return DeserializeSHA512(data); + else if (hash == HashType.SpamSum) + return DeserializeSpamSum(data); + else + return null; } /// diff --git a/SabreTools.Serialization.Readers/IRD.cs b/SabreTools.Serialization.Readers/IRD.cs index 93c8dcbd..bdecc4f8 100644 --- a/SabreTools.Serialization.Readers/IRD.cs +++ b/SabreTools.Serialization.Readers/IRD.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/ISO9660.cs b/SabreTools.Serialization.Readers/ISO9660.cs index de8ecf27..ca233422 100644 --- a/SabreTools.Serialization.Readers/ISO9660.cs +++ b/SabreTools.Serialization.Readers/ISO9660.cs @@ -3,6 +3,8 @@ using System.IO; using SabreTools.Data.Extensions; using SabreTools.Data.Models.ISO9660; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; #pragma warning disable CA1822 // Mark members as static #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/InstallShieldArchiveV3.cs b/SabreTools.Serialization.Readers/InstallShieldArchiveV3.cs index 7e3bf589..2ac274bb 100644 --- a/SabreTools.Serialization.Readers/InstallShieldArchiveV3.cs +++ b/SabreTools.Serialization.Readers/InstallShieldArchiveV3.cs @@ -3,6 +3,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.InstallShieldArchiveV3; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/InstallShieldCabinet.cs b/SabreTools.Serialization.Readers/InstallShieldCabinet.cs index 0634f635..1f2a6f95 100644 --- a/SabreTools.Serialization.Readers/InstallShieldCabinet.cs +++ b/SabreTools.Serialization.Readers/InstallShieldCabinet.cs @@ -5,6 +5,8 @@ using System.Text; using SabreTools.Data.Extensions; using SabreTools.Data.Models.InstallShieldCabinet; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.InstallShieldCabinet.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/InstallShieldExecutable.cs b/SabreTools.Serialization.Readers/InstallShieldExecutable.cs index ccb868cd..6e732f87 100644 --- a/SabreTools.Serialization.Readers/InstallShieldExecutable.cs +++ b/SabreTools.Serialization.Readers/InstallShieldExecutable.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using SabreTools.Data.Models.InstallShieldExecutable; using SabreTools.IO.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.InstallShieldExecutable.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/LZKWAJ.cs b/SabreTools.Serialization.Readers/LZKWAJ.cs index aeab9e31..3731b1b4 100644 --- a/SabreTools.Serialization.Readers/LZKWAJ.cs +++ b/SabreTools.Serialization.Readers/LZKWAJ.cs @@ -2,6 +2,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.LZ; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.LZ.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/LZQBasic.cs b/SabreTools.Serialization.Readers/LZQBasic.cs index 3517379c..2af03f22 100644 --- a/SabreTools.Serialization.Readers/LZQBasic.cs +++ b/SabreTools.Serialization.Readers/LZQBasic.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.LZ; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.LZ.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/LZSZDD.cs b/SabreTools.Serialization.Readers/LZSZDD.cs index d1d334d6..3544ab53 100644 --- a/SabreTools.Serialization.Readers/LZSZDD.cs +++ b/SabreTools.Serialization.Readers/LZSZDD.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.LZ; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.LZ.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/LinearExecutable.cs b/SabreTools.Serialization.Readers/LinearExecutable.cs index b031e55f..3fbee45d 100644 --- a/SabreTools.Serialization.Readers/LinearExecutable.cs +++ b/SabreTools.Serialization.Readers/LinearExecutable.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.LinearExecutable; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.LinearExecutable.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/MSDOS.cs b/SabreTools.Serialization.Readers/MSDOS.cs index 4a70052a..981fd398 100644 --- a/SabreTools.Serialization.Readers/MSDOS.cs +++ b/SabreTools.Serialization.Readers/MSDOS.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.MSDOS; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.MSDOS.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/MicrosoftCabinet.cs b/SabreTools.Serialization.Readers/MicrosoftCabinet.cs index ebf7a2fe..1f069cdc 100644 --- a/SabreTools.Serialization.Readers/MicrosoftCabinet.cs +++ b/SabreTools.Serialization.Readers/MicrosoftCabinet.cs @@ -2,6 +2,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.MicrosoftCabinet; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.MicrosoftCabinet.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/MoPaQ.cs b/SabreTools.Serialization.Readers/MoPaQ.cs index b6c5b955..e4721c51 100644 --- a/SabreTools.Serialization.Readers/MoPaQ.cs +++ b/SabreTools.Serialization.Readers/MoPaQ.cs @@ -2,8 +2,9 @@ using System; using System.IO; using System.Text; using SabreTools.Data.Models.MoPaQ; -using SabreTools.IO.Encryption; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Security.Cryptography; using static SabreTools.Data.Models.MoPaQ.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/N3DS.cs b/SabreTools.Serialization.Readers/N3DS.cs index 049520f8..18e0563b 100644 --- a/SabreTools.Serialization.Readers/N3DS.cs +++ b/SabreTools.Serialization.Readers/N3DS.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.N3DS; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.N3DS.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/NCF.cs b/SabreTools.Serialization.Readers/NCF.cs index c354c71b..bb6a1bac 100644 --- a/SabreTools.Serialization.Readers/NCF.cs +++ b/SabreTools.Serialization.Readers/NCF.cs @@ -2,6 +2,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.NCF; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/NESCart.cs b/SabreTools.Serialization.Readers/NESCart.cs index 804bf8d6..1f5ccb0d 100644 --- a/SabreTools.Serialization.Readers/NESCart.cs +++ b/SabreTools.Serialization.Readers/NESCart.cs @@ -1,6 +1,8 @@ using System.IO; using SabreTools.Data.Models.NES; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.NES.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/NewExecutable.cs b/SabreTools.Serialization.Readers/NewExecutable.cs index 8402d00b..d5197a46 100644 --- a/SabreTools.Serialization.Readers/NewExecutable.cs +++ b/SabreTools.Serialization.Readers/NewExecutable.cs @@ -4,6 +4,7 @@ using System.Text; using SabreTools.Data.Extensions; using SabreTools.Data.Models.NewExecutable; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.NewExecutable.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/Nitro.cs b/SabreTools.Serialization.Readers/Nitro.cs index d6eebd05..541942c2 100644 --- a/SabreTools.Serialization.Readers/Nitro.cs +++ b/SabreTools.Serialization.Readers/Nitro.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.Nitro; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/PAK.cs b/SabreTools.Serialization.Readers/PAK.cs index d3e7df7a..f1a5f439 100644 --- a/SabreTools.Serialization.Readers/PAK.cs +++ b/SabreTools.Serialization.Readers/PAK.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.PAK; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.PAK.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/PFF.cs b/SabreTools.Serialization.Readers/PFF.cs index 719844d1..2c30e509 100644 --- a/SabreTools.Serialization.Readers/PFF.cs +++ b/SabreTools.Serialization.Readers/PFF.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.PFF; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.PFF.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/PIC.cs b/SabreTools.Serialization.Readers/PIC.cs index 7cf51e07..872fd6ac 100644 --- a/SabreTools.Serialization.Readers/PIC.cs +++ b/SabreTools.Serialization.Readers/PIC.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.PIC; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.PIC.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/PKZIP.cs b/SabreTools.Serialization.Readers/PKZIP.cs index 30ab350a..82170375 100644 --- a/SabreTools.Serialization.Readers/PKZIP.cs +++ b/SabreTools.Serialization.Readers/PKZIP.cs @@ -4,6 +4,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.PKZIP; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.PKZIP.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/PlayJAudio.cs b/SabreTools.Serialization.Readers/PlayJAudio.cs index d375cda4..785ba244 100644 --- a/SabreTools.Serialization.Readers/PlayJAudio.cs +++ b/SabreTools.Serialization.Readers/PlayJAudio.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.PlayJ; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.PlayJ.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/PlayJPlaylist.cs b/SabreTools.Serialization.Readers/PlayJPlaylist.cs index 0b210c9f..857fba23 100644 --- a/SabreTools.Serialization.Readers/PlayJPlaylist.cs +++ b/SabreTools.Serialization.Readers/PlayJPlaylist.cs @@ -1,6 +1,7 @@ using System.IO; using SabreTools.Data.Models.PlayJ; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/PortableExecutable.cs b/SabreTools.Serialization.Readers/PortableExecutable.cs index 629fd4da..c2ea8d8b 100644 --- a/SabreTools.Serialization.Readers/PortableExecutable.cs +++ b/SabreTools.Serialization.Readers/PortableExecutable.cs @@ -8,6 +8,8 @@ using SabreTools.Data.Models.COFF; using SabreTools.Data.Models.COFF.SymbolTableEntries; using SabreTools.Data.Models.PortableExecutable; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.COFF.Constants; using static SabreTools.Data.Models.PortableExecutable.Constants; diff --git a/SabreTools.Serialization.Readers/QD.cs b/SabreTools.Serialization.Readers/QD.cs index f898ba35..e0cb3ddb 100644 --- a/SabreTools.Serialization.Readers/QD.cs +++ b/SabreTools.Serialization.Readers/QD.cs @@ -1,5 +1,6 @@ using System.IO; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Serialization.Readers { diff --git a/SabreTools.Serialization.Readers/Quantum.cs b/SabreTools.Serialization.Readers/Quantum.cs index a563dd9c..aaadd1d0 100644 --- a/SabreTools.Serialization.Readers/Quantum.cs +++ b/SabreTools.Serialization.Readers/Quantum.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.Quantum; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.Quantum.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/RomCenter.cs b/SabreTools.Serialization.Readers/RomCenter.cs index 1fb48c85..22791773 100644 --- a/SabreTools.Serialization.Readers/RomCenter.cs +++ b/SabreTools.Serialization.Readers/RomCenter.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.RomCenter; -using SabreTools.IO.Readers; +using SabreTools.Text.INI; #pragma warning disable CA1847 // Use char literal for a single character lookup namespace SabreTools.Serialization.Readers @@ -19,7 +19,7 @@ namespace SabreTools.Serialization.Readers try { // Setup the reader and output - var reader = new IniReader(data, Encoding.UTF8) + var reader = new Reader(data, Encoding.UTF8) { ValidateRows = false, }; @@ -36,11 +36,11 @@ namespace SabreTools.Serialization.Readers // Ignore certain row types switch (reader.RowType) { - case IniRowType.None: - case IniRowType.Comment: + case RowType.None: + case RowType.Comment: continue; - case IniRowType.SectionHeader: + case RowType.SectionHeader: switch (reader.Section?.ToLowerInvariant()) { case "credits": @@ -61,8 +61,8 @@ namespace SabreTools.Serialization.Readers continue; - case IniRowType.KeyValue: - case IniRowType.Invalid: + case RowType.KeyValue: + case RowType.Invalid: default: break; } diff --git a/SabreTools.Serialization.Readers/SFB.cs b/SabreTools.Serialization.Readers/SFB.cs index b0bb4c7f..a20ffe49 100644 --- a/SabreTools.Serialization.Readers/SFB.cs +++ b/SabreTools.Serialization.Readers/SFB.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.PlayStation3.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/SFO.cs b/SabreTools.Serialization.Readers/SFO.cs index 79be7d17..a1241f5c 100644 --- a/SabreTools.Serialization.Readers/SFO.cs +++ b/SabreTools.Serialization.Readers/SFO.cs @@ -1,6 +1,6 @@ using System.IO; using SabreTools.Data.Models.PlayStation3; -using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.PlayStation3.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/SGA.cs b/SabreTools.Serialization.Readers/SGA.cs index 2cb6c48e..df41747e 100644 --- a/SabreTools.Serialization.Readers/SGA.cs +++ b/SabreTools.Serialization.Readers/SGA.cs @@ -3,6 +3,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.SGA; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.SGA.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/SabreTools.Serialization.Readers.csproj b/SabreTools.Serialization.Readers/SabreTools.Serialization.Readers.csproj index ce5dc9bf..9e623f66 100644 --- a/SabreTools.Serialization.Readers/SabreTools.Serialization.Readers.csproj +++ b/SabreTools.Serialization.Readers/SabreTools.Serialization.Readers.csproj @@ -41,9 +41,9 @@ - - - + + + \ No newline at end of file diff --git a/SabreTools.Serialization.Readers/SecuROMAddD.cs b/SabreTools.Serialization.Readers/SecuROMAddD.cs index 6b1f05b2..2bfb984b 100644 --- a/SabreTools.Serialization.Readers/SecuROMAddD.cs +++ b/SabreTools.Serialization.Readers/SecuROMAddD.cs @@ -3,6 +3,8 @@ using System.Text; using System.Text.RegularExpressions; using SabreTools.Data.Models.SecuROM; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.SecuROM.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/SecuROMDFA.cs b/SabreTools.Serialization.Readers/SecuROMDFA.cs index ebd66984..38295b38 100644 --- a/SabreTools.Serialization.Readers/SecuROMDFA.cs +++ b/SabreTools.Serialization.Readers/SecuROMDFA.cs @@ -3,6 +3,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.SecuROM; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.SecuROM.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/SecuROMMatroschkaPackage.cs b/SabreTools.Serialization.Readers/SecuROMMatroschkaPackage.cs index 0dc05e41..862a793b 100644 --- a/SabreTools.Serialization.Readers/SecuROMMatroschkaPackage.cs +++ b/SabreTools.Serialization.Readers/SecuROMMatroschkaPackage.cs @@ -2,6 +2,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.SecuROM; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.SecuROM.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/SeparatedValue.cs b/SabreTools.Serialization.Readers/SeparatedValue.cs index 4327310b..7f97de47 100644 --- a/SabreTools.Serialization.Readers/SeparatedValue.cs +++ b/SabreTools.Serialization.Readers/SeparatedValue.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Text; using SabreTools.Data.Models.SeparatedValue; -using SabreTools.IO.Readers; +using SabreTools.Text.SeparatedValue; #pragma warning disable CA1822 // Mark members as static namespace SabreTools.Serialization.Readers @@ -85,7 +85,7 @@ namespace SabreTools.Serialization.Readers try { // Setup the reader and output - var reader = new SeparatedValueReader(data, Encoding.UTF8) + var reader = new Reader(data, Encoding.UTF8) { Header = true, Separator = delim, diff --git a/SabreTools.Serialization.Readers/SkuSis.cs b/SabreTools.Serialization.Readers/SkuSis.cs index 70650593..34555381 100644 --- a/SabreTools.Serialization.Readers/SkuSis.cs +++ b/SabreTools.Serialization.Readers/SkuSis.cs @@ -2,6 +2,8 @@ using System; using System.IO; using System.Text; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.VDF.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/SpoonInstaller.cs b/SabreTools.Serialization.Readers/SpoonInstaller.cs index eb84c76d..4ad75a58 100644 --- a/SabreTools.Serialization.Readers/SpoonInstaller.cs +++ b/SabreTools.Serialization.Readers/SpoonInstaller.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.SpoonInstaller; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/TapeArchive.cs b/SabreTools.Serialization.Readers/TapeArchive.cs index 6951d191..094595b3 100644 --- a/SabreTools.Serialization.Readers/TapeArchive.cs +++ b/SabreTools.Serialization.Readers/TapeArchive.cs @@ -4,6 +4,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.TAR; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/VBSP.cs b/SabreTools.Serialization.Readers/VBSP.cs index ec4033bc..f9578ecf 100644 --- a/SabreTools.Serialization.Readers/VBSP.cs +++ b/SabreTools.Serialization.Readers/VBSP.cs @@ -4,6 +4,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.BSP; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.BSP.Constants; // TODO: Finish replacing ReadType diff --git a/SabreTools.Serialization.Readers/VPK.cs b/SabreTools.Serialization.Readers/VPK.cs index f9932a87..07e4acf9 100644 --- a/SabreTools.Serialization.Readers/VPK.cs +++ b/SabreTools.Serialization.Readers/VPK.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.IO; using SabreTools.Data.Models.VPK; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.VPK.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/WAD3.cs b/SabreTools.Serialization.Readers/WAD3.cs index 6c6ff2a1..c1f6ce21 100644 --- a/SabreTools.Serialization.Readers/WAD3.cs +++ b/SabreTools.Serialization.Readers/WAD3.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.WAD3; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.WAD3.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/WiseOverlayHeader.cs b/SabreTools.Serialization.Readers/WiseOverlayHeader.cs index e0520a09..0ea1b860 100644 --- a/SabreTools.Serialization.Readers/WiseOverlayHeader.cs +++ b/SabreTools.Serialization.Readers/WiseOverlayHeader.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.WiseInstaller; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0017 // Simplify object initialization namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/WiseScript.cs b/SabreTools.Serialization.Readers/WiseScript.cs index 93b613b6..9b0220f8 100644 --- a/SabreTools.Serialization.Readers/WiseScript.cs +++ b/SabreTools.Serialization.Readers/WiseScript.cs @@ -4,6 +4,8 @@ using System.IO; using SabreTools.Data.Models.WiseInstaller; using SabreTools.Data.Models.WiseInstaller.Actions; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; #pragma warning disable CA1866 // Use char overload #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/WiseSectionHeader.cs b/SabreTools.Serialization.Readers/WiseSectionHeader.cs index 9457e323..5ab46bd8 100644 --- a/SabreTools.Serialization.Readers/WiseSectionHeader.cs +++ b/SabreTools.Serialization.Readers/WiseSectionHeader.cs @@ -3,6 +3,9 @@ using System.IO; using System.Text; using SabreTools.Data.Models.WiseInstaller; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.WiseInstaller.Constants; namespace SabreTools.Serialization.Readers diff --git a/SabreTools.Serialization.Readers/XZ.cs b/SabreTools.Serialization.Readers/XZ.cs index 92009e9d..c95e27b5 100644 --- a/SabreTools.Serialization.Readers/XZ.cs +++ b/SabreTools.Serialization.Readers/XZ.cs @@ -3,6 +3,8 @@ using System.IO; using SabreTools.Data.Extensions; using SabreTools.Data.Models.XZ; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.XZ.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/XZP.cs b/SabreTools.Serialization.Readers/XZP.cs index 4dedef06..2aedf896 100644 --- a/SabreTools.Serialization.Readers/XZP.cs +++ b/SabreTools.Serialization.Readers/XZP.cs @@ -2,6 +2,8 @@ using System.IO; using System.Text; using SabreTools.Data.Models.XZP; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; using static SabreTools.Data.Models.XZP.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/XboxExecutable.cs b/SabreTools.Serialization.Readers/XboxExecutable.cs index 60f238be..ffda8926 100644 --- a/SabreTools.Serialization.Readers/XboxExecutable.cs +++ b/SabreTools.Serialization.Readers/XboxExecutable.cs @@ -1,6 +1,8 @@ using System.IO; using SabreTools.Data.Models.XboxExecutable; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.XboxExecutable.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Readers/ZSTD.cs b/SabreTools.Serialization.Readers/ZSTD.cs index 66287ea8..f220bae5 100644 --- a/SabreTools.Serialization.Readers/ZSTD.cs +++ b/SabreTools.Serialization.Readers/ZSTD.cs @@ -1,6 +1,8 @@ using System.IO; using SabreTools.Data.Models.ZSTD; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.ZSTD.Constants; #pragma warning disable IDE0017 // Simplify object initialization diff --git a/SabreTools.Serialization.Writers.Test/ArchiveDotOrgTests.cs b/SabreTools.Serialization.Writers.Test/ArchiveDotOrgTests.cs index a05ec70c..07db7652 100644 --- a/SabreTools.Serialization.Writers.Test/ArchiveDotOrgTests.cs +++ b/SabreTools.Serialization.Writers.Test/ArchiveDotOrgTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/AttractModeTests.cs b/SabreTools.Serialization.Writers.Test/AttractModeTests.cs index 0f0f2159..a977ea2b 100644 --- a/SabreTools.Serialization.Writers.Test/AttractModeTests.cs +++ b/SabreTools.Serialization.Writers.Test/AttractModeTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/CatalogTests.cs b/SabreTools.Serialization.Writers.Test/CatalogTests.cs index 3b1a1914..25f73433 100644 --- a/SabreTools.Serialization.Writers.Test/CatalogTests.cs +++ b/SabreTools.Serialization.Writers.Test/CatalogTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Writers.Test/ClrMameProTests.cs index e03dec49..41a37d69 100644 --- a/SabreTools.Serialization.Writers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Writers.Test/ClrMameProTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/CueSheetTests.cs b/SabreTools.Serialization.Writers.Test/CueSheetTests.cs index 9c2bd5cc..141a3539 100644 --- a/SabreTools.Serialization.Writers.Test/CueSheetTests.cs +++ b/SabreTools.Serialization.Writers.Test/CueSheetTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/DosCenterTests.cs b/SabreTools.Serialization.Writers.Test/DosCenterTests.cs index b72600ca..c0d9e0f2 100644 --- a/SabreTools.Serialization.Writers.Test/DosCenterTests.cs +++ b/SabreTools.Serialization.Writers.Test/DosCenterTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/EverdriveSMDBTests.cs b/SabreTools.Serialization.Writers.Test/EverdriveSMDBTests.cs index 1ab44a22..04995465 100644 --- a/SabreTools.Serialization.Writers.Test/EverdriveSMDBTests.cs +++ b/SabreTools.Serialization.Writers.Test/EverdriveSMDBTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/HashfileTests.cs b/SabreTools.Serialization.Writers.Test/HashfileTests.cs index 61989a96..8541f199 100644 --- a/SabreTools.Serialization.Writers.Test/HashfileTests.cs +++ b/SabreTools.Serialization.Writers.Test/HashfileTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/IRDTests.cs b/SabreTools.Serialization.Writers.Test/IRDTests.cs index be6fb9ea..027f912b 100644 --- a/SabreTools.Serialization.Writers.Test/IRDTests.cs +++ b/SabreTools.Serialization.Writers.Test/IRDTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/ListromTests.cs b/SabreTools.Serialization.Writers.Test/ListromTests.cs index 7aca2a8b..b15075e1 100644 --- a/SabreTools.Serialization.Writers.Test/ListromTests.cs +++ b/SabreTools.Serialization.Writers.Test/ListromTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/ListxmlTests.cs b/SabreTools.Serialization.Writers.Test/ListxmlTests.cs index 60db7515..7f32a393 100644 --- a/SabreTools.Serialization.Writers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Writers.Test/ListxmlTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/LogiqxTests.cs b/SabreTools.Serialization.Writers.Test/LogiqxTests.cs index ad593ca1..3d2914ce 100644 --- a/SabreTools.Serialization.Writers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Writers.Test/LogiqxTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/M1Tests.cs b/SabreTools.Serialization.Writers.Test/M1Tests.cs index a3f67c93..fca80bc8 100644 --- a/SabreTools.Serialization.Writers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Writers.Test/M1Tests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/MessTests.cs b/SabreTools.Serialization.Writers.Test/MessTests.cs index 909eb595..acbdd4cd 100644 --- a/SabreTools.Serialization.Writers.Test/MessTests.cs +++ b/SabreTools.Serialization.Writers.Test/MessTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/OfflineListTests.cs b/SabreTools.Serialization.Writers.Test/OfflineListTests.cs index 0fcb72f3..3c058087 100644 --- a/SabreTools.Serialization.Writers.Test/OfflineListTests.cs +++ b/SabreTools.Serialization.Writers.Test/OfflineListTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/OpenMSXTests.cs b/SabreTools.Serialization.Writers.Test/OpenMSXTests.cs index f3eaaf05..c61de641 100644 --- a/SabreTools.Serialization.Writers.Test/OpenMSXTests.cs +++ b/SabreTools.Serialization.Writers.Test/OpenMSXTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/RomCenterTests.cs b/SabreTools.Serialization.Writers.Test/RomCenterTests.cs index ee922a63..2a76032b 100644 --- a/SabreTools.Serialization.Writers.Test/RomCenterTests.cs +++ b/SabreTools.Serialization.Writers.Test/RomCenterTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/SeparatedValueTests.cs b/SabreTools.Serialization.Writers.Test/SeparatedValueTests.cs index 9f100577..9f2e2e12 100644 --- a/SabreTools.Serialization.Writers.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.Writers.Test/SeparatedValueTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Writers.Test/SoftwareListTests.cs index 7157a6ed..ea888adf 100644 --- a/SabreTools.Serialization.Writers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Writers.Test/SoftwareListTests.cs @@ -1,5 +1,4 @@ using System.IO; -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/XMIDTests.cs b/SabreTools.Serialization.Writers.Test/XMIDTests.cs index 7ccfefbf..e07c62d7 100644 --- a/SabreTools.Serialization.Writers.Test/XMIDTests.cs +++ b/SabreTools.Serialization.Writers.Test/XMIDTests.cs @@ -1,4 +1,3 @@ -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers.Test/XeMIDTests.cs b/SabreTools.Serialization.Writers.Test/XeMIDTests.cs index 9e67c393..b9498424 100644 --- a/SabreTools.Serialization.Writers.Test/XeMIDTests.cs +++ b/SabreTools.Serialization.Writers.Test/XeMIDTests.cs @@ -1,4 +1,3 @@ -using SabreTools.Serialization.Writers; using Xunit; namespace SabreTools.Serialization.Writers.Test diff --git a/SabreTools.Serialization.Writers/AttractMode.cs b/SabreTools.Serialization.Writers/AttractMode.cs index cecf7dca..29898453 100644 --- a/SabreTools.Serialization.Writers/AttractMode.cs +++ b/SabreTools.Serialization.Writers/AttractMode.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.AttractMode; using SabreTools.IO.Extensions; -using SabreTools.IO.Writers; +using SabreTools.Text.SeparatedValue; #pragma warning disable CA1822 // Mark members as static namespace SabreTools.Serialization.Writers @@ -101,7 +101,7 @@ namespace SabreTools.Serialization.Writers return false; using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None); - stream.CopyTo(fs); + stream.BlockCopy(fs); fs.Flush(); return true; @@ -124,7 +124,7 @@ namespace SabreTools.Serialization.Writers // Setup the writer and output var stream = new MemoryStream(); - var writer = new SeparatedValueWriter(stream, Encoding.UTF8) + var writer = new Writer(stream, Encoding.UTF8) { Separator = ';', Quotes = false, @@ -146,9 +146,9 @@ namespace SabreTools.Serialization.Writers /// Write rows information to the current writer /// /// Array of Row objects representing the rows information - /// SeparatedValueWriter representing the output + /// Writer representing the output /// True if the long variant of the row should be written, false otherwise - private static void WriteRows(Row[]? rows, SeparatedValueWriter writer, bool longHeader) + private static void WriteRows(Row[]? rows, Writer writer, bool longHeader) { // If the games information is missing, we can't do anything if (rows is null || rows.Length == 0) diff --git a/SabreTools.Serialization.Writers/BaseBinaryWriter.cs b/SabreTools.Serialization.Writers/BaseBinaryWriter.cs index c0478ea1..a45757fb 100644 --- a/SabreTools.Serialization.Writers/BaseBinaryWriter.cs +++ b/SabreTools.Serialization.Writers/BaseBinaryWriter.cs @@ -1,4 +1,5 @@ using System.IO; +using SabreTools.IO.Extensions; namespace SabreTools.Serialization.Writers { @@ -47,7 +48,7 @@ namespace SabreTools.Serialization.Writers return false; using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None); - stream.CopyTo(fs); + stream.BlockCopy(fs); fs.Flush(); return true; diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 43ecb754..10e1e155 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.ClrMamePro; using SabreTools.IO.Extensions; -using SabreTools.IO.Writers; +using SabreTools.Text.ClrMamePro; #pragma warning disable CA1822 // Mark members as static namespace SabreTools.Serialization.Writers @@ -46,7 +46,7 @@ namespace SabreTools.Serialization.Writers return false; using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None); - stream.CopyTo(fs); + stream.BlockCopy(fs); fs.Flush(); return true; @@ -69,7 +69,7 @@ namespace SabreTools.Serialization.Writers // Setup the writer and output var stream = new MemoryStream(); - var writer = new ClrMameProWriter(stream, Encoding.UTF8) { Quotes = quotes }; + var writer = new Writer(stream, Encoding.UTF8) { Quotes = quotes }; // Write the header, if it exists WriteHeader(obj.ClrMamePro, writer); @@ -89,8 +89,8 @@ namespace SabreTools.Serialization.Writers /// Write header information to the current writer /// /// ClrMamePro representing the header information - /// ClrMameProWriter representing the output - private static void WriteHeader(Data.Models.ClrMamePro.ClrMamePro? header, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteHeader(Data.Models.ClrMamePro.ClrMamePro? header, Writer writer) { // If the header information is missing, we can't do anything if (header is null) @@ -122,8 +122,8 @@ namespace SabreTools.Serialization.Writers /// Write games information to the current writer /// /// Array of GameBase objects representing the games information - /// ClrMameProWriter representing the output - private static void WriteGames(GameBase[]? games, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteGames(GameBase[]? games, Writer writer) { // If the games information is missing, we can't do anything if (games is null || games.Length == 0) @@ -144,8 +144,8 @@ namespace SabreTools.Serialization.Writers /// Write game information to the current writer /// /// GameBase object representing the game information - /// ClrMameProWriter representing the output - private static void WriteGame(GameBase game, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteGame(GameBase game, Writer writer) { // If the game information is missing, we can't do anything if (game is null) @@ -203,8 +203,8 @@ namespace SabreTools.Serialization.Writers /// Write releases information to the current writer /// /// Array of Release objects to write - /// ClrMameProWriter representing the output - private static void WriteReleases(Release[]? releases, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteReleases(Release[]? releases, Writer writer) { // If the array is missing, we can't do anything if (releases is null) @@ -226,8 +226,8 @@ namespace SabreTools.Serialization.Writers /// Write biossets information to the current writer /// /// Array of BiosSet objects to write - /// ClrMameProWriter representing the output - private static void WriteBiosSets(BiosSet[]? biossets, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteBiosSets(BiosSet[]? biossets, Writer writer) { // If the array is missing, we can't do anything if (biossets is null) @@ -247,8 +247,8 @@ namespace SabreTools.Serialization.Writers /// Write roms information to the current writer /// /// Array of Rom objects to write - /// ClrMameProWriter representing the output - private static void WriteRoms(Rom[]? roms, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteRoms(Rom[]? roms, Writer writer) { // If the array is missing, we can't do anything if (roms is null) @@ -292,8 +292,8 @@ namespace SabreTools.Serialization.Writers /// Write disks information to the current writer /// /// Array of Disk objects to write - /// ClrMameProWriter representing the output - private static void WriteDisks(Disk[]? disks, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteDisks(Disk[]? disks, Writer writer) { // If the array is missing, we can't do anything if (disks is null) @@ -316,8 +316,8 @@ namespace SabreTools.Serialization.Writers /// Write medias information to the current writer /// /// Array of Media objects to write - /// ClrMameProWriter representing the output - private static void WriteMedia(Media[]? medias, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteMedia(Media[]? medias, Writer writer) { // If the array is missing, we can't do anything if (medias is null) @@ -339,8 +339,8 @@ namespace SabreTools.Serialization.Writers /// Write samples information to the current writer /// /// Array of Sample objects to write - /// ClrMameProWriter representing the output - private static void WriteSamples(Sample[]? samples, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteSamples(Sample[]? samples, Writer writer) { // If the array is missing, we can't do anything if (samples is null) @@ -358,8 +358,8 @@ namespace SabreTools.Serialization.Writers /// Write archives information to the current writer /// /// Array of Archive objects to write - /// ClrMameProWriter representing the output - private static void WriteArchives(Archive[]? archives, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteArchives(Archive[]? archives, Writer writer) { // If the array is missing, we can't do anything if (archives is null) @@ -377,8 +377,8 @@ namespace SabreTools.Serialization.Writers /// Write chips information to the current writer /// /// Array of Chip objects to write - /// ClrMameProWriter representing the output - private static void WriteChips(Chip[]? chips, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteChips(Chip[]? chips, Writer writer) { // If the array is missing, we can't do anything if (chips is null) @@ -399,8 +399,8 @@ namespace SabreTools.Serialization.Writers /// Write video information to the current writer /// /// Array of Video objects to write - /// ClrMameProWriter representing the output - private static void WriteVideos(Video[]? videos, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteVideos(Video[]? videos, Writer writer) { // If the item is missing, we can't do anything if (videos is null) @@ -424,8 +424,8 @@ namespace SabreTools.Serialization.Writers /// Write sound information to the current writer /// /// Sound object to write - /// ClrMameProWriter representing the output - private static void WriteSound(Sound? sound, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteSound(Sound? sound, Writer writer) { // If the item is missing, we can't do anything if (sound is null) @@ -440,8 +440,8 @@ namespace SabreTools.Serialization.Writers /// Write input information to the current writer /// /// Input object to write - /// ClrMameProWriter representing the output - private static void WriteInput(Input? input, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteInput(Input? input, Writer writer) { // If the item is missing, we can't do anything if (input is null) @@ -461,8 +461,8 @@ namespace SabreTools.Serialization.Writers /// Write dipswitches information to the current writer /// /// Array of DipSwitch objects to write - /// ClrMameProWriter representing the output - private static void WriteDipSwitches(DipSwitch[]? dipswitches, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteDipSwitches(DipSwitch[]? dipswitches, Writer writer) { // If the array is missing, we can't do anything if (dipswitches is null) @@ -486,8 +486,8 @@ namespace SabreTools.Serialization.Writers /// Write driver information to the current writer /// /// Driver object to write - /// ClrMameProWriter representing the output - private static void WriteDriver(Driver? driver, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteDriver(Driver? driver, Writer writer) { // If the item is missing, we can't do anything if (driver is null) @@ -506,8 +506,8 @@ namespace SabreTools.Serialization.Writers /// Write info information to the current writer /// /// ClrMamePro representing the info information - /// ClrMameProWriter representing the output - private static void WriteInfo(Info? info, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteInfo(Info? info, Writer writer) { // If the info information is missing, we can't do anything if (info?.Source is null) diff --git a/SabreTools.Serialization.Writers/DosCenter.cs b/SabreTools.Serialization.Writers/DosCenter.cs index 98f36982..09b1dae8 100644 --- a/SabreTools.Serialization.Writers/DosCenter.cs +++ b/SabreTools.Serialization.Writers/DosCenter.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.DosCenter; using SabreTools.IO.Extensions; -using SabreTools.IO.Writers; +using SabreTools.Text.ClrMamePro; namespace SabreTools.Serialization.Writers { @@ -17,7 +17,7 @@ namespace SabreTools.Serialization.Writers // Setup the writer and output var stream = new MemoryStream(); - var writer = new ClrMameProWriter(stream, Encoding.UTF8) + var writer = new Writer(stream, Encoding.UTF8) { Quotes = false, }; @@ -37,8 +37,8 @@ namespace SabreTools.Serialization.Writers /// Write header information to the current writer /// /// DosCenter representing the header information - /// ClrMameProWriter representing the output - private static void WriteHeader(Data.Models.DosCenter.DosCenter? header, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteHeader(Data.Models.DosCenter.DosCenter? header, Writer writer) { // If the header information is missing, we can't do anything if (header is null) @@ -62,8 +62,8 @@ namespace SabreTools.Serialization.Writers /// Write games information to the current writer /// /// Array of Game objects representing the games information - /// ClrMameProWriter representing the output - private static void WriteGames(Game[]? games, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteGames(Game[]? games, Writer writer) { // If the games information is missing, we can't do anything if (games is null || games.Length == 0) @@ -81,8 +81,8 @@ namespace SabreTools.Serialization.Writers /// Write game information to the current writer /// /// Game object representing the game information - /// ClrMameProWriter representing the output - private static void WriteGame(Game game, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteGame(Game game, Writer writer) { // If the game information is missing, we can't do anything if (game is null) @@ -103,8 +103,8 @@ namespace SabreTools.Serialization.Writers /// Write files information to the current writer /// /// Array of File objects to write - /// ClrMameProWriter representing the output - private static void WriteFiles(Data.Models.DosCenter.File[]? files, ClrMameProWriter writer) + /// Writer representing the output + private static void WriteFiles(Data.Models.DosCenter.File[]? files, Writer writer) { // If the array is missing, we can't do anything if (files is null) diff --git a/SabreTools.Serialization.Writers/EverdriveSMDB.cs b/SabreTools.Serialization.Writers/EverdriveSMDB.cs index c0ba96f7..c7f56504 100644 --- a/SabreTools.Serialization.Writers/EverdriveSMDB.cs +++ b/SabreTools.Serialization.Writers/EverdriveSMDB.cs @@ -3,7 +3,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.EverdriveSMDB; using SabreTools.IO.Extensions; -using SabreTools.IO.Writers; +using SabreTools.Text.SeparatedValue; namespace SabreTools.Serialization.Writers { @@ -18,7 +18,7 @@ namespace SabreTools.Serialization.Writers // Setup the writer and output var stream = new MemoryStream(); - var writer = new SeparatedValueWriter(stream, Encoding.UTF8) { Separator = '\t', Quotes = false }; + var writer = new Writer(stream, Encoding.UTF8) { Separator = '\t', Quotes = false }; // Write out the rows, if they exist WriteRows(obj.Row, writer); @@ -32,8 +32,8 @@ namespace SabreTools.Serialization.Writers /// Write rows information to the current writer /// /// Array of Row objects representing the rows information - /// SeparatedValueWriter representing the output - private static void WriteRows(Row[]? rows, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteRows(Row[]? rows, Writer writer) { // If the games information is missing, we can't do anything if (rows is null || rows.Length == 0) diff --git a/SabreTools.Serialization.Writers/Hashfile.cs b/SabreTools.Serialization.Writers/Hashfile.cs index 3efd014e..e1b83070 100644 --- a/SabreTools.Serialization.Writers/Hashfile.cs +++ b/SabreTools.Serialization.Writers/Hashfile.cs @@ -4,7 +4,7 @@ using System.Text; using SabreTools.Data.Models.Hashfile; using SabreTools.Hashing; using SabreTools.IO.Extensions; -using SabreTools.IO.Writers; +using SabreTools.Text.SeparatedValue; #pragma warning disable CA1822 // Mark members as static namespace SabreTools.Serialization.Writers @@ -48,7 +48,7 @@ namespace SabreTools.Serialization.Writers return false; using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None); - stream.CopyTo(fs); + stream.BlockCopy(fs); fs.Flush(); return true; @@ -71,7 +71,7 @@ namespace SabreTools.Serialization.Writers // Setup the writer and output var stream = new MemoryStream(); - var writer = new SeparatedValueWriter(stream, Encoding.UTF8) + var writer = new Writer(stream, Encoding.UTF8) { Separator = ' ', Quotes = false, @@ -79,46 +79,30 @@ namespace SabreTools.Serialization.Writers }; // Write out the items, if they exist -#pragma warning disable IDE0010 - switch (hash) - { - case HashType.CRC32: - WriteSFV(obj.SFV, writer); - break; - case HashType.MD2: - WriteMD2(obj.MD2, writer); - break; - case HashType.MD4: - WriteMD4(obj.MD4, writer); - break; - case HashType.MD5: - WriteMD5(obj.MD5, writer); - break; - case HashType.RIPEMD128: - WriteRIPEMD128(obj.RIPEMD128, writer); - break; - case HashType.RIPEMD160: - WriteRIPEMD160(obj.RIPEMD160, writer); - break; - case HashType.SHA1: - WriteSHA1(obj.SHA1, writer); - break; - case HashType.SHA256: - WriteSHA256(obj.SHA256, writer); - break; - case HashType.SHA384: - WriteSHA384(obj.SHA384, writer); - break; - case HashType.SHA512: - WriteSHA512(obj.SHA512, writer); - break; - case HashType.SpamSum: - WriteSpamSum(obj.SpamSum, writer); - break; - default: - throw new ArgumentOutOfRangeException(nameof(hash)); - } -#pragma warning restore IDE0010 + if (hash == HashType.CRC32) + WriteSFV(obj.SFV, writer); + else if (hash == HashType.MD2) + WriteMD2(obj.MD2, writer); + else if (hash == HashType.MD4) + WriteMD4(obj.MD4, writer); + else if (hash == HashType.MD5) + WriteMD5(obj.MD5, writer); + else if (hash == HashType.RIPEMD128) + WriteRIPEMD128(obj.RIPEMD128, writer); + else if (hash == HashType.RIPEMD160) + WriteRIPEMD160(obj.RIPEMD160, writer); + else if (hash == HashType.SHA1) + WriteSHA1(obj.SHA1, writer); + else if (hash == HashType.SHA256) + WriteSHA256(obj.SHA256, writer); + else if (hash == HashType.SHA384) + WriteSHA384(obj.SHA384, writer); + else if (hash == HashType.SHA512) + WriteSHA512(obj.SHA512, writer); + else if (hash == HashType.SpamSum) + WriteSpamSum(obj.SpamSum, writer); + else + throw new ArgumentOutOfRangeException(nameof(hash)); // Return the stream stream.SeekIfPossible(0, SeekOrigin.Begin); @@ -129,8 +113,8 @@ namespace SabreTools.Serialization.Writers /// Write SFV information to the current writer /// /// Array of SFV objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteSFV(SFV[]? sfvs, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteSFV(SFV[]? sfvs, Writer writer) { // If the item information is missing, we can't do anything if (sfvs is null || sfvs.Length == 0) @@ -151,8 +135,8 @@ namespace SabreTools.Serialization.Writers /// Write MD2 information to the current writer /// /// Array of MD2 objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteMD2(MD2[]? md2s, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteMD2(MD2[]? md2s, Writer writer) { // If the item information is missing, we can't do anything if (md2s is null || md2s.Length == 0) @@ -173,8 +157,8 @@ namespace SabreTools.Serialization.Writers /// Write MD4 information to the current writer /// /// Array of MD4 objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteMD4(MD4[]? md4s, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteMD4(MD4[]? md4s, Writer writer) { // If the item information is missing, we can't do anything if (md4s is null || md4s.Length == 0) @@ -195,8 +179,8 @@ namespace SabreTools.Serialization.Writers /// Write MD5 information to the current writer /// /// Array of MD5 objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteMD5(MD5[]? md5s, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteMD5(MD5[]? md5s, Writer writer) { // If the item information is missing, we can't do anything if (md5s is null || md5s.Length == 0) @@ -217,8 +201,8 @@ namespace SabreTools.Serialization.Writers /// Write RIPEMD128 information to the current writer /// /// Array of RIPEMD128 objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteRIPEMD128(RIPEMD128[]? ripemd128s, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteRIPEMD128(RIPEMD128[]? ripemd128s, Writer writer) { // If the item information is missing, we can't do anything if (ripemd128s is null || ripemd128s.Length == 0) @@ -239,8 +223,8 @@ namespace SabreTools.Serialization.Writers /// Write RIPEMD160 information to the current writer /// /// Array of RIPEMD160 objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteRIPEMD160(RIPEMD160[]? ripemd160s, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteRIPEMD160(RIPEMD160[]? ripemd160s, Writer writer) { // If the item information is missing, we can't do anything if (ripemd160s is null || ripemd160s.Length == 0) @@ -261,8 +245,8 @@ namespace SabreTools.Serialization.Writers /// Write SHA1 information to the current writer /// /// Array of SHA1 objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteSHA1(SHA1[]? sha1s, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteSHA1(SHA1[]? sha1s, Writer writer) { // If the item information is missing, we can't do anything if (sha1s is null || sha1s.Length == 0) @@ -283,8 +267,8 @@ namespace SabreTools.Serialization.Writers /// Write SHA256 information to the current writer /// /// Array of SHA256 objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteSHA256(SHA256[]? sha256s, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteSHA256(SHA256[]? sha256s, Writer writer) { // If the item information is missing, we can't do anything if (sha256s is null || sha256s.Length == 0) @@ -305,8 +289,8 @@ namespace SabreTools.Serialization.Writers /// Write SHA384 information to the current writer /// /// Array of SHA384 objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteSHA384(SHA384[]? sha384s, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteSHA384(SHA384[]? sha384s, Writer writer) { // If the item information is missing, we can't do anything if (sha384s is null || sha384s.Length == 0) @@ -327,8 +311,8 @@ namespace SabreTools.Serialization.Writers /// Write SHA512 information to the current writer /// /// Array of SHA512 objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteSHA512(SHA512[]? sha512s, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteSHA512(SHA512[]? sha512s, Writer writer) { // If the item information is missing, we can't do anything if (sha512s is null || sha512s.Length == 0) @@ -349,8 +333,8 @@ namespace SabreTools.Serialization.Writers /// Write SpamSum information to the current writer /// /// Array of SpamSum objects representing the files - /// SeparatedValueWriter representing the output - private static void WriteSpamSum(SpamSum[]? spamsums, SeparatedValueWriter writer) + /// Writer representing the output + private static void WriteSpamSum(SpamSum[]? spamsums, Writer writer) { // If the item information is missing, we can't do anything if (spamsums is null || spamsums.Length == 0) diff --git a/SabreTools.Serialization.Writers/JsonFile.cs b/SabreTools.Serialization.Writers/JsonFile.cs index 7b8b2ac3..6d67d470 100644 --- a/SabreTools.Serialization.Writers/JsonFile.cs +++ b/SabreTools.Serialization.Writers/JsonFile.cs @@ -61,7 +61,7 @@ namespace SabreTools.Serialization.Writers return false; using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None); - stream.CopyTo(fs); + stream.BlockCopy(fs); fs.Flush(); return true; diff --git a/SabreTools.Serialization.Writers/OldDotNet.cs b/SabreTools.Serialization.Writers/OldDotNet.cs deleted file mode 100644 index 8d971723..00000000 --- a/SabreTools.Serialization.Writers/OldDotNet.cs +++ /dev/null @@ -1,50 +0,0 @@ -#if NET20 || NET35 - -using System; -using System.IO; - -namespace SabreTools.Serialization.Writers -{ - /// - /// Derived from the mscorlib code from .NET Framework 4.0 - /// - internal static class OldDotNet - { - public static void CopyTo(this Stream source, Stream destination) - { - if (destination is null) - { - throw new ArgumentNullException("destination"); - } - - if (!source.CanRead && !source.CanWrite) - { - throw new ObjectDisposedException(null); - } - - if (!destination.CanRead && !destination.CanWrite) - { - throw new ObjectDisposedException("destination"); - } - - if (!source.CanRead) - { - throw new NotSupportedException(); - } - - if (!destination.CanWrite) - { - throw new NotSupportedException(); - } - - byte[] array = new byte[81920]; - int count; - while ((count = source.Read(array, 0, array.Length)) != 0) - { - destination.Write(array, 0, count); - } - } - } -} - -#endif diff --git a/SabreTools.Serialization.Writers/RomCenter.cs b/SabreTools.Serialization.Writers/RomCenter.cs index f1b92e78..c7e7f60f 100644 --- a/SabreTools.Serialization.Writers/RomCenter.cs +++ b/SabreTools.Serialization.Writers/RomCenter.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.RomCenter; using SabreTools.IO.Extensions; -using SabreTools.IO.Writers; +using SabreTools.Text.INI; namespace SabreTools.Serialization.Writers { @@ -17,7 +17,7 @@ namespace SabreTools.Serialization.Writers // Setup the writer and output var stream = new MemoryStream(); - var writer = new IniWriter(stream, Encoding.UTF8); + var writer = new Writer(stream, Encoding.UTF8); // Write out the credits section WriteCredits(obj.Credits, writer); @@ -40,8 +40,8 @@ namespace SabreTools.Serialization.Writers /// Write credits information to the current writer /// /// Credits object representing the credits information - /// IniWriter representing the output - private static void WriteCredits(Credits? credits, IniWriter writer) + /// Writer representing the output + private static void WriteCredits(Credits? credits, Writer writer) { // If the credits information is missing, we can't do anything if (credits is null) @@ -72,8 +72,8 @@ namespace SabreTools.Serialization.Writers /// Write dat information to the current writer /// /// Dat object representing the dat information - /// IniWriter representing the output - private static void WriteDat(Dat? dat, IniWriter writer) + /// Writer representing the output + private static void WriteDat(Dat? dat, Writer writer) { // If the dat information is missing, we can't do anything if (dat is null) @@ -98,8 +98,8 @@ namespace SabreTools.Serialization.Writers /// Write emulator information to the current writer /// /// Emulator object representing the emulator information - /// IniWriter representing the output - private static void WriteEmulator(Emulator? emulator, IniWriter writer) + /// Writer representing the output + private static void WriteEmulator(Emulator? emulator, Writer writer) { // If the emulator information is missing, we can't do anything if (emulator is null) @@ -120,8 +120,8 @@ namespace SabreTools.Serialization.Writers /// Write games information to the current writer /// /// Games object representing the games information - /// IniWriter representing the output - private static void WriteGames(Games? games, IniWriter writer) + /// Writer representing the output + private static void WriteGames(Games? games, Writer writer) { // If the games information is missing, we can't do anything if (games?.Rom is null || games.Rom.Length == 0) diff --git a/SabreTools.Serialization.Writers/SabreTools.Serialization.Writers.csproj b/SabreTools.Serialization.Writers/SabreTools.Serialization.Writers.csproj index 22e2b91c..da86eb6b 100644 --- a/SabreTools.Serialization.Writers/SabreTools.Serialization.Writers.csproj +++ b/SabreTools.Serialization.Writers/SabreTools.Serialization.Writers.csproj @@ -37,7 +37,7 @@ - + \ No newline at end of file diff --git a/SabreTools.Serialization.Writers/SeparatedValue.cs b/SabreTools.Serialization.Writers/SeparatedValue.cs index 368cd38e..f4a96fc8 100644 --- a/SabreTools.Serialization.Writers/SeparatedValue.cs +++ b/SabreTools.Serialization.Writers/SeparatedValue.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; using SabreTools.Data.Models.SeparatedValue; using SabreTools.IO.Extensions; -using SabreTools.IO.Writers; +using SabreTools.Text.SeparatedValue; #pragma warning disable CA1822 // Mark members as static namespace SabreTools.Serialization.Writers @@ -89,7 +89,7 @@ namespace SabreTools.Serialization.Writers return false; using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None); - stream.CopyTo(fs); + stream.BlockCopy(fs); fs.Flush(); return true; @@ -112,7 +112,7 @@ namespace SabreTools.Serialization.Writers // Setup the writer and output var stream = new MemoryStream(); - var writer = new SeparatedValueWriter(stream, Encoding.UTF8) + var writer = new Writer(stream, Encoding.UTF8) { Separator = delim, Quotes = true @@ -132,9 +132,9 @@ namespace SabreTools.Serialization.Writers /// /// Write header information to the current writer /// - /// SeparatedValueWriter representing the output + /// Writer representing the output /// True if the long variant of the row should be written, false otherwise - private static void WriteHeader(SeparatedValueWriter writer, bool longHeader) + private static void WriteHeader(Writer writer, bool longHeader) { string[] headerArray = longHeader ? HeaderArrayExtended : HeaderArrayStandard; writer.WriteHeader(headerArray); @@ -145,9 +145,9 @@ namespace SabreTools.Serialization.Writers /// Write rows information to the current writer /// /// Array of Row objects representing the rows information - /// SeparatedValueWriter representing the output + /// Writer representing the output /// True if the long variant of the row should be written, false otherwise - private static void WriteRows(Row[]? rows, SeparatedValueWriter writer, bool longHeader) + private static void WriteRows(Row[]? rows, Writer writer, bool longHeader) { // If the games information is missing, we can't do anything if (rows is null || rows.Length == 0) diff --git a/SabreTools.Serialization.Writers/XmlFile.cs b/SabreTools.Serialization.Writers/XmlFile.cs index 051b0560..fa7fa37e 100644 --- a/SabreTools.Serialization.Writers/XmlFile.cs +++ b/SabreTools.Serialization.Writers/XmlFile.cs @@ -66,7 +66,7 @@ namespace SabreTools.Serialization.Writers return false; using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None); - stream.CopyTo(fs); + stream.BlockCopy(fs); fs.Flush(); return true; diff --git a/SabreTools.Serialization/SabreTools.Serialization.csproj b/SabreTools.Serialization/SabreTools.Serialization.csproj index fa64e931..e55b7136 100644 --- a/SabreTools.Serialization/SabreTools.Serialization.csproj +++ b/SabreTools.Serialization/SabreTools.Serialization.csproj @@ -42,8 +42,11 @@ + + + @@ -56,11 +59,14 @@ + - + + + \ No newline at end of file diff --git a/SabreTools.Wrappers/AACSMediaKeyBlock.Printing.cs b/SabreTools.Wrappers/AACSMediaKeyBlock.Printing.cs index 72a5f2df..bbae6b73 100644 --- a/SabreTools.Wrappers/AACSMediaKeyBlock.Printing.cs +++ b/SabreTools.Wrappers/AACSMediaKeyBlock.Printing.cs @@ -51,7 +51,7 @@ namespace SabreTools.Wrappers } builder.AppendLine($" Record type: {record.RecordType} (0x{record.RecordType:X})"); - builder.AppendLine(record.RecordLength, " Record length"); + builder.AppendLine((uint)record.RecordLength, " Record length"); switch (record) { diff --git a/SabreTools.Wrappers/Atari7800Cart.Extraction.cs b/SabreTools.Wrappers/Atari7800Cart.Extraction.cs index c3a0cd5e..ee03c284 100644 --- a/SabreTools.Wrappers/Atari7800Cart.Extraction.cs +++ b/SabreTools.Wrappers/Atari7800Cart.Extraction.cs @@ -1,7 +1,7 @@ using System; using System.IO; using SabreTools.Data.Models.Atari7800; -using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/AtariLynxCart.Extraction.cs b/SabreTools.Wrappers/AtariLynxCart.Extraction.cs index b96525e8..93dc8648 100644 --- a/SabreTools.Wrappers/AtariLynxCart.Extraction.cs +++ b/SabreTools.Wrappers/AtariLynxCart.Extraction.cs @@ -1,7 +1,7 @@ using System; using System.IO; using SabreTools.Data.Models.AtariLynx; -using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/BFPK.Extraction.cs b/SabreTools.Wrappers/BFPK.Extraction.cs index 4893e216..e2aef88a 100644 --- a/SabreTools.Wrappers/BFPK.Extraction.cs +++ b/SabreTools.Wrappers/BFPK.Extraction.cs @@ -1,9 +1,7 @@ using System; using System.IO; using SabreTools.IO.Compression.Deflate; -#if NET20 || NET35 -using SabreTools.Serialization; -#endif +using SabreTools.IO.Extensions; namespace SabreTools.Wrappers { @@ -97,7 +95,7 @@ namespace SabreTools.Wrappers { using var ms = new MemoryStream(data); using var zs = new ZlibStream(ms, CompressionMode.Decompress); - zs.CopyTo(fs); + zs.BlockCopy(fs); fs.Flush(); } } diff --git a/SabreTools.Wrappers/BZip2.Extraction.cs b/SabreTools.Wrappers/BZip2.Extraction.cs index 97478c5f..b4ed24f6 100644 --- a/SabreTools.Wrappers/BZip2.Extraction.cs +++ b/SabreTools.Wrappers/BZip2.Extraction.cs @@ -1,9 +1,7 @@ using System; using System.IO; using SabreTools.IO.Compression.BZip2; -#if NET20 || NET35 -using SabreTools.Serialization; -#endif +using SabreTools.IO.Extensions; namespace SabreTools.Wrappers { @@ -40,7 +38,7 @@ namespace SabreTools.Wrappers // Extract the file using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None); - bz2File.CopyTo(fs); + bz2File.BlockCopy(fs); fs.Flush(); return true; diff --git a/SabreTools.Wrappers/CFB.Extraction.cs b/SabreTools.Wrappers/CFB.Extraction.cs index fd8d191d..91d841a9 100644 --- a/SabreTools.Wrappers/CFB.Extraction.cs +++ b/SabreTools.Wrappers/CFB.Extraction.cs @@ -2,9 +2,7 @@ using System; using System.IO; using System.Text; using SabreTools.Data.Models.CFB; -#if NETFRAMEWORK || NETSTANDARD2_0 -using SabreTools.IO.Extensions; -#endif +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/CFB.cs b/SabreTools.Wrappers/CFB.cs index 6dc676d1..6b2a42c8 100644 --- a/SabreTools.Wrappers/CFB.cs +++ b/SabreTools.Wrappers/CFB.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using SabreTools.Data.Models.CFB; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/ExtensionAttribute.cs b/SabreTools.Wrappers/ExtensionAttribute.cs index b40aacab..478ed8be 100644 --- a/SabreTools.Wrappers/ExtensionAttribute.cs +++ b/SabreTools.Wrappers/ExtensionAttribute.cs @@ -3,7 +3,7 @@ namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] - internal sealed class ExtensionAttribute : Attribute {} + internal sealed class ExtensionAttribute : Attribute { } } #endif diff --git a/SabreTools.Wrappers/FDS.Extraction.cs b/SabreTools.Wrappers/FDS.Extraction.cs index 8b755e8f..9979f5d6 100644 --- a/SabreTools.Wrappers/FDS.Extraction.cs +++ b/SabreTools.Wrappers/FDS.Extraction.cs @@ -1,6 +1,6 @@ using System; using System.IO; -using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/GZip.Extraction.cs b/SabreTools.Wrappers/GZip.Extraction.cs index 1ec0a826..9e499f63 100644 --- a/SabreTools.Wrappers/GZip.Extraction.cs +++ b/SabreTools.Wrappers/GZip.Extraction.cs @@ -3,9 +3,6 @@ using System.IO; using SabreTools.Data.Models.GZIP; using SabreTools.IO.Compression.Deflate; using SabreTools.IO.Extensions; -#if NET20 || NET35 -using SabreTools.Serialization; -#endif namespace SabreTools.Wrappers { @@ -59,7 +56,7 @@ namespace SabreTools.Wrappers // Write the file using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None); - deflateStream.CopyTo(fs); + deflateStream.BlockCopy(fs); fs.Flush(); return true; diff --git a/SabreTools.Wrappers/GZip.cs b/SabreTools.Wrappers/GZip.cs index aebc5b35..993c920b 100644 --- a/SabreTools.Wrappers/GZip.cs +++ b/SabreTools.Wrappers/GZip.cs @@ -1,6 +1,7 @@ using System.IO; using SabreTools.Data.Models.GZIP; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/ISO9660.Extraction.cs b/SabreTools.Wrappers/ISO9660.Extraction.cs index 1f0403e5..4ec78986 100644 --- a/SabreTools.Wrappers/ISO9660.Extraction.cs +++ b/SabreTools.Wrappers/ISO9660.Extraction.cs @@ -5,6 +5,8 @@ using System.Text; using SabreTools.Data.Extensions; using SabreTools.Data.Models.ISO9660; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/ISO9660.Printing.cs b/SabreTools.Wrappers/ISO9660.Printing.cs index 09a2ae1c..5423727a 100644 --- a/SabreTools.Wrappers/ISO9660.Printing.cs +++ b/SabreTools.Wrappers/ISO9660.Printing.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Text; using SabreTools.Data.Extensions; using SabreTools.Data.Models.ISO9660; -using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/InstallShieldExecutable.Extraction.cs b/SabreTools.Wrappers/InstallShieldExecutable.Extraction.cs index a80167d7..3f8c7837 100644 --- a/SabreTools.Wrappers/InstallShieldExecutable.Extraction.cs +++ b/SabreTools.Wrappers/InstallShieldExecutable.Extraction.cs @@ -1,6 +1,7 @@ using System; using System.IO; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/LinearExecutable.cs b/SabreTools.Wrappers/LinearExecutable.cs index 6b143a61..a07e4c8d 100644 --- a/SabreTools.Wrappers/LinearExecutable.cs +++ b/SabreTools.Wrappers/LinearExecutable.cs @@ -2,6 +2,7 @@ using System.IO; using SabreTools.Data.Models.LinearExecutable; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable IDE0330 // Use 'System.Threading.Lock' namespace SabreTools.Wrappers diff --git a/SabreTools.Wrappers/MicrosoftCabinet.Extraction.cs b/SabreTools.Wrappers/MicrosoftCabinet.Extraction.cs index d60f4886..7bb5c201 100644 --- a/SabreTools.Wrappers/MicrosoftCabinet.Extraction.cs +++ b/SabreTools.Wrappers/MicrosoftCabinet.Extraction.cs @@ -4,6 +4,7 @@ using System.IO; using SabreTools.Data.Models.MicrosoftCabinet; using SabreTools.IO.Compression.MSZIP; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; #pragma warning disable CA1822 // Mark members as static namespace SabreTools.Wrappers diff --git a/SabreTools.Wrappers/N3DS.Encryption.cs b/SabreTools.Wrappers/N3DS.Encryption.cs index d719e4fc..2edfb011 100644 --- a/SabreTools.Wrappers/N3DS.Encryption.cs +++ b/SabreTools.Wrappers/N3DS.Encryption.cs @@ -1,8 +1,10 @@ using System; using System.IO; using SabreTools.Data.Models.N3DS; -using SabreTools.IO.Encryption; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; +using SabreTools.Security.Cryptography; using static SabreTools.Data.Models.N3DS.Constants; namespace SabreTools.Wrappers diff --git a/SabreTools.Wrappers/NESCart.Extraction.cs b/SabreTools.Wrappers/NESCart.Extraction.cs index d600620d..ad76939c 100644 --- a/SabreTools.Wrappers/NESCart.Extraction.cs +++ b/SabreTools.Wrappers/NESCart.Extraction.cs @@ -1,7 +1,7 @@ using System; using System.IO; using SabreTools.Data.Models.NES; -using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/NewExecutable.Extraction.cs b/SabreTools.Wrappers/NewExecutable.Extraction.cs index e0f52275..40776d7f 100644 --- a/SabreTools.Wrappers/NewExecutable.Extraction.cs +++ b/SabreTools.Wrappers/NewExecutable.Extraction.cs @@ -1,6 +1,8 @@ using System; using System.IO; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/NewExecutable.cs b/SabreTools.Wrappers/NewExecutable.cs index b7fcadfb..d4de716b 100644 --- a/SabreTools.Wrappers/NewExecutable.cs +++ b/SabreTools.Wrappers/NewExecutable.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using SabreTools.Data.Models.NewExecutable; using SabreTools.IO.Extensions; +using SabreTools.Text.Extensions; #pragma warning disable IDE0330 // Use 'System.Threading.Lock' namespace SabreTools.Wrappers diff --git a/SabreTools.Wrappers/Nitro.Encryption.cs b/SabreTools.Wrappers/Nitro.Encryption.cs index 42967f31..486b16fd 100644 --- a/SabreTools.Wrappers/Nitro.Encryption.cs +++ b/SabreTools.Wrappers/Nitro.Encryption.cs @@ -1,6 +1,6 @@ using System; using SabreTools.Data.Models.Nitro; -using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/OldDotNet.cs b/SabreTools.Wrappers/OldDotNet.cs deleted file mode 100644 index d9b113c5..00000000 --- a/SabreTools.Wrappers/OldDotNet.cs +++ /dev/null @@ -1,50 +0,0 @@ -#if NET20 || NET35 - -using System; -using System.IO; - -namespace SabreTools.Wrappers -{ - /// - /// Derived from the mscorlib code from .NET Framework 4.0 - /// - internal static class OldDotNet - { - public static void CopyTo(this Stream source, Stream destination) - { - if (destination is null) - { - throw new ArgumentNullException("destination"); - } - - if (!source.CanRead && !source.CanWrite) - { - throw new ObjectDisposedException(null); - } - - if (!destination.CanRead && !destination.CanWrite) - { - throw new ObjectDisposedException("destination"); - } - - if (!source.CanRead) - { - throw new NotSupportedException(); - } - - if (!destination.CanWrite) - { - throw new NotSupportedException(); - } - - byte[] array = new byte[81920]; - int count; - while ((count = source.Read(array, 0, array.Length)) != 0) - { - destination.Write(array, 0, count); - } - } - } -} - -#endif diff --git a/SabreTools.Wrappers/PortableExecutable.Extraction.cs b/SabreTools.Wrappers/PortableExecutable.Extraction.cs index aed78df5..ecf08cb6 100644 --- a/SabreTools.Wrappers/PortableExecutable.Extraction.cs +++ b/SabreTools.Wrappers/PortableExecutable.Extraction.cs @@ -3,6 +3,8 @@ using System.IO; using SabreTools.IO.Compression.BZip2; using SabreTools.IO.Compression.zlib; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/PortableExecutable.Printing.cs b/SabreTools.Wrappers/PortableExecutable.Printing.cs index b3f6d7aa..9d975cb5 100644 --- a/SabreTools.Wrappers/PortableExecutable.Printing.cs +++ b/SabreTools.Wrappers/PortableExecutable.Printing.cs @@ -8,6 +8,8 @@ using SabreTools.Data.Models.COFF.SymbolTableEntries; using SabreTools.Data.Models.PortableExecutable; using SabreTools.Data.Models.PortableExecutable.Resource.Entries; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/PortableExecutable.cs b/SabreTools.Wrappers/PortableExecutable.cs index 52323865..ea82aca0 100644 --- a/SabreTools.Wrappers/PortableExecutable.cs +++ b/SabreTools.Wrappers/PortableExecutable.cs @@ -7,6 +7,8 @@ using SabreTools.Data.Models.COFF; using SabreTools.Data.Models.PortableExecutable; using SabreTools.Data.Models.PortableExecutable.Resource.Entries; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; +using SabreTools.Text.Extensions; #pragma warning disable IDE0330 // Use 'System.Threading.Lock' namespace SabreTools.Wrappers diff --git a/SabreTools.Wrappers/SabreTools.Wrappers.csproj b/SabreTools.Wrappers/SabreTools.Wrappers.csproj index 5d0ad834..a788393a 100644 --- a/SabreTools.Wrappers/SabreTools.Wrappers.csproj +++ b/SabreTools.Wrappers/SabreTools.Wrappers.csproj @@ -47,10 +47,10 @@ - - - - + + + + \ No newline at end of file diff --git a/SabreTools.Wrappers/VPK.Extraction.cs b/SabreTools.Wrappers/VPK.Extraction.cs index b407f250..76d5d452 100644 --- a/SabreTools.Wrappers/VPK.Extraction.cs +++ b/SabreTools.Wrappers/VPK.Extraction.cs @@ -1,6 +1,7 @@ using System; using System.IO; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; using static SabreTools.Data.Models.VPK.Constants; namespace SabreTools.Wrappers diff --git a/SabreTools.Wrappers/WiseOverlayHeader.Extraction.cs b/SabreTools.Wrappers/WiseOverlayHeader.Extraction.cs index 3e54f425..7e362d99 100644 --- a/SabreTools.Wrappers/WiseOverlayHeader.Extraction.cs +++ b/SabreTools.Wrappers/WiseOverlayHeader.Extraction.cs @@ -1,9 +1,9 @@ using System; using System.IO; using SabreTools.Data.Models.WiseInstaller.Actions; +using SabreTools.IO; using SabreTools.IO.Compression.Deflate; using SabreTools.IO.Extensions; -using SabreTools.IO.Streams; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/WiseSectionHeader.Extraction.cs b/SabreTools.Wrappers/WiseSectionHeader.Extraction.cs index ec5f9b18..d43d93e1 100644 --- a/SabreTools.Wrappers/WiseSectionHeader.Extraction.cs +++ b/SabreTools.Wrappers/WiseSectionHeader.Extraction.cs @@ -3,6 +3,7 @@ using System.IO; using SabreTools.Hashing; using SabreTools.IO.Compression.Deflate; using SabreTools.IO.Extensions; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/WrapperBase.cs b/SabreTools.Wrappers/WrapperBase.cs index a80c4422..a272759b 100644 --- a/SabreTools.Wrappers/WrapperBase.cs +++ b/SabreTools.Wrappers/WrapperBase.cs @@ -1,7 +1,7 @@ using System; using System.IO; +using SabreTools.IO; using SabreTools.IO.Extensions; -using SabreTools.IO.Streams; namespace SabreTools.Wrappers { @@ -21,10 +21,10 @@ namespace SabreTools.Wrappers #region Properties - /// + /// public string? Filename => _dataSource.Filename; - /// + /// public long Length => _dataSource.Length; #endregion @@ -34,7 +34,7 @@ namespace SabreTools.Wrappers /// /// Source of the original data /// - protected readonly ViewStream _dataSource; + protected readonly ReadOnlyViewStream _dataSource; #if NETCOREAPP #pragma warning disable IDE1006 // Naming Styles @@ -100,7 +100,7 @@ namespace SabreTools.Wrappers if (length < 0 || offset + length > data.Length) throw new ArgumentOutOfRangeException(nameof(length)); - _dataSource = new ViewStream(data, offset, length); + _dataSource = new ReadOnlyViewStream(data, offset, length); } #endregion @@ -142,7 +142,7 @@ namespace SabreTools.Wrappers if (length < 0 || offset + length > data.Length) throw new ArgumentOutOfRangeException(nameof(length)); - _dataSource = new ViewStream(data, offset, length); + _dataSource = new ReadOnlyViewStream(data, offset, length); } #endregion diff --git a/SabreTools.Wrappers/WrapperFactory.cs b/SabreTools.Wrappers/WrapperFactory.cs index d0ef0e4c..93057d47 100644 --- a/SabreTools.Wrappers/WrapperFactory.cs +++ b/SabreTools.Wrappers/WrapperFactory.cs @@ -1,6 +1,8 @@ using System; using System.IO; using SabreTools.IO.Extensions; +using SabreTools.Matching; +using SabreTools.Numerics.Extensions; namespace SabreTools.Wrappers { diff --git a/SabreTools.Wrappers/XZ.Extraction.cs b/SabreTools.Wrappers/XZ.Extraction.cs index 474a6d01..29ab70f7 100644 --- a/SabreTools.Wrappers/XZ.Extraction.cs +++ b/SabreTools.Wrappers/XZ.Extraction.cs @@ -42,7 +42,7 @@ namespace SabreTools.Wrappers // Extract the file using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None); - xzFile.CopyTo(fs); + xzFile.BlockCopy(fs); fs.Flush(); return true; diff --git a/SabreTools.Wrappers/ZSTD.Extraction.cs b/SabreTools.Wrappers/ZSTD.Extraction.cs index 349515e9..9a7bb5b4 100644 --- a/SabreTools.Wrappers/ZSTD.Extraction.cs +++ b/SabreTools.Wrappers/ZSTD.Extraction.cs @@ -2,7 +2,7 @@ using System; #if NET462_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER using System.IO; #endif -using SabreTools.IO.Extensions; +using SabreTools.Matching; #if NET462_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER using SharpCompress.Compressors.ZStandard; #endif @@ -43,11 +43,11 @@ namespace SabreTools.Wrappers Directory.CreateDirectory(directoryName); // Open the source as a zStandard stream - var zstdStream = new ZStandardStream(_dataSource, false); + var zstdStream = new ZStandardStream(_dataSource, leaveOpen: false); // Write the file using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None); - zstdStream.CopyTo(fs); + zstdStream.BlockCopy(fs); fs.Flush(); return true;