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;