diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
index 145b5211..8f25855e 100644
--- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
+++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
@@ -40,12 +40,12 @@ namespace SabreTools.Data.Extensions.Test
DictionaryBase? self = new Disk
{
Name = "name",
- [Disk.MergeKey] = "XXXXXX",
- [Disk.RegionKey] = "XXXXXX",
+ Merge = "merge",
+ Region = "region",
Status = ItemStatus.Good,
Optional = true,
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
};
Rom? actual = self.ConvertToRom();
@@ -54,12 +54,12 @@ namespace SabreTools.Data.Extensions.Test
Assert.Equal(4, actual.Count);
Assert.Equal(ItemType.Rom, actual.ItemType);
Assert.Equal("name.chd", actual.Name);
- Assert.Equal("XXXXXX", actual[Rom.MergeKey]);
- Assert.Equal("XXXXXX", actual[Rom.RegionKey]);
+ Assert.Equal("merge", actual[Rom.MergeKey]);
+ Assert.Equal("region", actual[Rom.RegionKey]);
Assert.Equal(ItemStatus.Good, actual.Status);
Assert.Equal(true, actual.Optional);
- Assert.Equal("XXXXXX", actual[Rom.MD5Key]);
- Assert.Equal("XXXXXX", actual[Rom.SHA1Key]);
+ Assert.Equal("md5", actual[Rom.MD5Key]);
+ Assert.Equal("sha1", actual[Rom.SHA1Key]);
}
[Fact]
@@ -84,10 +84,10 @@ namespace SabreTools.Data.Extensions.Test
DictionaryBase? self = new Media
{
Name = "name",
- MD5 = "XXXXXX",
- SHA1 = "XXXXXX",
- SHA256 = "XXXXXX",
- SpamSum = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
+ SHA256 = "sha256",
+ SpamSum = "spamsum",
};
Rom? actual = self.ConvertToRom();
@@ -96,10 +96,10 @@ namespace SabreTools.Data.Extensions.Test
Assert.Equal(4, actual.Count);
Assert.Equal(ItemType.Rom, actual.ItemType);
Assert.Equal("name.aaruf", actual.Name);
- Assert.Equal("XXXXXX", actual[Rom.MD5Key]);
- Assert.Equal("XXXXXX", actual[Rom.SHA1Key]);
- Assert.Equal("XXXXXX", actual[Rom.SHA256Key]);
- Assert.Equal("XXXXXX", actual[Rom.SpamSumKey]);
+ Assert.Equal("md5", actual[Rom.MD5Key]);
+ Assert.Equal("sha1", actual[Rom.SHA1Key]);
+ Assert.Equal("sha256", actual[Rom.SHA256Key]);
+ Assert.Equal("spamsum", actual[Rom.SpamSumKey]);
}
[Fact]
@@ -153,13 +153,13 @@ namespace SabreTools.Data.Extensions.Test
{
Disk self = new Disk
{
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = string.Empty,
+ MD5 = "md5",
+ SHA1 = string.Empty,
};
Disk other = new Disk
{
- [Disk.MD5Key] = string.Empty,
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = string.Empty,
+ SHA1 = "sha1",
};
bool actual = self.HashMatch(other);
@@ -171,13 +171,13 @@ namespace SabreTools.Data.Extensions.Test
{
Disk self = new Disk
{
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = string.Empty,
+ MD5 = "md5",
+ SHA1 = string.Empty,
};
Disk other = new Disk
{
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
};
bool actual = self.HashMatch(other);
@@ -189,13 +189,13 @@ namespace SabreTools.Data.Extensions.Test
{
Disk self = new Disk
{
- [Disk.MD5Key] = string.Empty,
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = string.Empty,
+ SHA1 = "sha1",
};
Disk other = new Disk
{
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
};
bool actual = self.HashMatch(other);
@@ -207,13 +207,13 @@ namespace SabreTools.Data.Extensions.Test
{
Disk self = new Disk
{
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
};
Disk other = new Disk
{
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
};
bool actual = self.HashMatch(other);
@@ -225,17 +225,17 @@ namespace SabreTools.Data.Extensions.Test
{
Media self = new Media
{
- MD5 = "XXXXXX",
+ MD5 = "md5",
SHA1 = string.Empty,
- SHA256 = "XXXXXX",
+ SHA256 = "sha256",
SpamSum = string.Empty,
};
Media other = new Media
{
MD5 = string.Empty,
- SHA1 = "XXXXXX",
+ SHA1 = "sha1",
SHA256 = string.Empty,
- SpamSum = "XXXXXX",
+ SpamSum = "spamsum",
};
bool actual = self.HashMatch(other);
@@ -969,8 +969,8 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Disk
{
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "XXXXXX",
+ SHA1 = "XXXXXX",
};
bool actual = self.HasZeroHash();
@@ -982,8 +982,8 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Disk
{
- [Disk.MD5Key] = HashType.MD5.ZeroString,
- [Disk.SHA1Key] = string.Empty,
+ MD5 = HashType.MD5.ZeroString,
+ SHA1 = string.Empty,
};
bool actual = self.HasZeroHash();
@@ -995,8 +995,8 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Disk
{
- [Disk.MD5Key] = string.Empty,
- [Disk.SHA1Key] = HashType.SHA1.ZeroString,
+ MD5 = string.Empty,
+ SHA1 = HashType.SHA1.ZeroString,
};
bool actual = self.HasZeroHash();
@@ -1008,8 +1008,8 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Disk
{
- [Disk.MD5Key] = HashType.MD5.ZeroString,
- [Disk.SHA1Key] = HashType.SHA1.ZeroString,
+ MD5 = HashType.MD5.ZeroString,
+ SHA1 = HashType.SHA1.ZeroString,
};
bool actual = self.HasZeroHash();
@@ -1510,8 +1510,8 @@ namespace SabreTools.Data.Extensions.Test
DictionaryBase self = new Disk();
DictionaryBase other = new Disk
{
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "XXXXXX",
+ SHA1 = "XXXXXX",
};
self.FillMissingHashes(other);
diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs
index 19a14578..4bde6ffd 100644
--- a/SabreTools.Data.Extensions/MetadataExtensions.cs
+++ b/SabreTools.Data.Extensions/MetadataExtensions.cs
@@ -173,6 +173,8 @@ namespace SabreTools.Data.Extensions
return dipSwitch.Clone() as DipSwitch;
else if (self is DipValue dipValue)
return dipValue.Clone() as DipValue;
+ else if (self is Disk disk)
+ return disk.Clone() as Disk;
else if (self is Display display)
return display.Clone() as Display;
else if (self is Driver driver)
@@ -224,12 +226,6 @@ namespace SabreTools.Data.Extensions
cloneDataArea.Size = selfDataArea.Size;
cloneDataArea.Width = selfDataArea.Width;
}
- else if (self is Disk selfDisk && clone is Disk cloneDisk)
- {
- cloneDisk.Optional = selfDisk.Optional;
- cloneDisk.Status = selfDisk.Status;
- cloneDisk.Writable = selfDisk.Writable;
- }
else if (self is Feature selfFeature && clone is Feature cloneFeature)
{
// TODO: Remove when PartFeature no longer needs nesting
@@ -434,12 +430,12 @@ namespace SabreTools.Data.Extensions
return new Rom
{
Name = name,
- [Rom.MergeKey] = disk.ReadString(Disk.MergeKey),
- [Rom.RegionKey] = disk.ReadString(Disk.RegionKey),
+ [Rom.MergeKey] = disk.Merge,
+ [Rom.RegionKey] = disk.Region,
Status = disk.Status,
Optional = disk.Optional,
- [Rom.MD5Key] = disk.ReadString(Disk.MD5Key),
- [Rom.SHA1Key] = disk.ReadString(Disk.SHA1Key),
+ [Rom.MD5Key] = disk.MD5,
+ [Rom.SHA1Key] = disk.SHA1,
};
}
@@ -519,13 +515,8 @@ namespace SabreTools.Data.Extensions
return false;
// Return if all hashes match according to merge rules
- string? selfMd5 = self.ReadString(Disk.MD5Key);
- string? otherMd5 = other.ReadString(Disk.MD5Key);
- bool conditionalMd5 = ConditionalHashEquals(selfMd5, otherMd5);
-
- string? selfSha1 = self.ReadString(Disk.SHA1Key);
- string? otherSha1 = other.ReadString(Disk.SHA1Key);
- bool conditionalSha1 = ConditionalHashEquals(selfSha1, otherSha1);
+ bool conditionalMd5 = ConditionalHashEquals(self.MD5, other.MD5);
+ bool conditionalSha1 = ConditionalHashEquals(self.SHA1, other.SHA1);
return conditionalMd5
&& conditionalSha1;
@@ -670,11 +661,11 @@ namespace SabreTools.Data.Extensions
///
private static bool HasCommonHash(this Disk self, Disk other)
{
- bool md5Null = string.IsNullOrEmpty(self.ReadString(Disk.MD5Key));
- md5Null ^= string.IsNullOrEmpty(other.ReadString(Disk.MD5Key));
+ bool md5Null = string.IsNullOrEmpty(self.MD5);
+ md5Null ^= string.IsNullOrEmpty(other.MD5);
- bool sha1Null = string.IsNullOrEmpty(self.ReadString(Disk.SHA1Key));
- sha1Null ^= string.IsNullOrEmpty(other.ReadString(Disk.SHA1Key));
+ bool sha1Null = string.IsNullOrEmpty(self.SHA1);
+ sha1Null ^= string.IsNullOrEmpty(other.SHA1);
return !md5Null
|| !sha1Null;
@@ -767,8 +758,8 @@ namespace SabreTools.Data.Extensions
///
private static bool HasHashes(this Disk disk)
{
- bool md5Null = string.IsNullOrEmpty(disk.ReadString(Disk.MD5Key));
- bool sha1Null = string.IsNullOrEmpty(disk.ReadString(Disk.SHA1Key));
+ bool md5Null = string.IsNullOrEmpty(disk.MD5);
+ bool sha1Null = string.IsNullOrEmpty(disk.SHA1);
return !md5Null
|| !sha1Null;
@@ -829,10 +820,10 @@ namespace SabreTools.Data.Extensions
///
private static bool HasZeroHash(this Disk disk)
{
- string? md5 = disk.ReadString(Disk.MD5Key);
+ string? md5 = disk.MD5;
bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase);
- string? sha1 = disk.ReadString(Disk.SHA1Key);
+ string? sha1 = disk.SHA1;
bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase);
return md5Null
@@ -967,15 +958,15 @@ namespace SabreTools.Data.Extensions
if (self is null || other is null)
return;
- string? selfMd5 = self.ReadString(Disk.MD5Key);
- string? otherMd5 = other.ReadString(Disk.MD5Key);
+ string? selfMd5 = self.MD5;
+ string? otherMd5 = other.MD5;
if (string.IsNullOrEmpty(selfMd5) && !string.IsNullOrEmpty(otherMd5))
- self[Disk.MD5Key] = otherMd5;
+ self.MD5 = otherMd5;
- string? selfSha1 = self.ReadString(Disk.SHA1Key);
- string? otherSha1 = other.ReadString(Disk.SHA1Key);
+ string? selfSha1 = self.SHA1;
+ string? otherSha1 = other.SHA1;
if (string.IsNullOrEmpty(selfSha1) && !string.IsNullOrEmpty(otherSha1))
- self[Disk.SHA1Key] = otherSha1;
+ self.SHA1 = otherSha1;
}
///
diff --git a/SabreTools.Data.Models/Listxml/Disk.cs b/SabreTools.Data.Models/Listxml/Disk.cs
index b5bf0d57..1ca07c83 100644
--- a/SabreTools.Data.Models/Listxml/Disk.cs
+++ b/SabreTools.Data.Models/Listxml/Disk.cs
@@ -24,9 +24,8 @@ namespace SabreTools.Data.Models.Listxml
[XmlAttribute("region")]
public string? Region { get; set; }
- /// Numeric?
[XmlAttribute("index")]
- public string? Index { get; set; }
+ public long? Index { get; set; }
/// (yes|no) "no"
[XmlAttribute("writable")]
diff --git a/SabreTools.Data.Models/Metadata/Disk.cs b/SabreTools.Data.Models/Metadata/Disk.cs
index b1c77800..c012e119 100644
--- a/SabreTools.Data.Models/Metadata/Disk.cs
+++ b/SabreTools.Data.Models/Metadata/Disk.cs
@@ -1,18 +1,32 @@
+using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
namespace SabreTools.Data.Models.Metadata
{
+ // TODO: IEquatable
[JsonObject("disk"), XmlRoot(elementName: "disk")]
- public class Disk : DatItem
+ public class Disk : DatItem, ICloneable
{
#region Properties
+ public string? Flags { get; set; }
+
+ public long? Index { get; set; }
+
+ public string? MD5 { get; set; }
+
+ public string? Merge { get; set; }
+
public string? Name { get; set; }
/// (yes|no) "no"
public bool? Optional { get; set; }
+ public string? Region { get; set; }
+
+ public string? SHA1 { get; set; }
+
/// (baddump|nodump|good|verified) "good"
public ItemStatus? Status { get; set; }
@@ -21,28 +35,25 @@ namespace SabreTools.Data.Models.Metadata
#endregion
- #region Keys
-
- /// string
- public const string FlagsKey = "flags";
-
- /// string, possibly long
- public const string IndexKey = "index";
-
- /// string
- public const string MD5Key = "md5";
-
- /// string
- public const string MergeKey = "merge";
-
- /// string
- public const string RegionKey = "region";
-
- /// string
- public const string SHA1Key = "sha1";
-
- #endregion
-
public Disk() => ItemType = ItemType.Disk;
+
+ ///
+ public object Clone()
+ {
+ var obj = new Disk();
+
+ obj.Flags = Flags;
+ obj.Index = Index;
+ obj.MD5 = MD5;
+ obj.Merge = Merge;
+ obj.Name = Name;
+ obj.Optional = Optional;
+ obj.Region = Region;
+ obj.SHA1 = SHA1;
+ obj.Status = Status;
+ obj.Writable = Writable;
+
+ return obj;
+ }
}
}
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
index fa348f4b..7dbb386b 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
@@ -133,10 +133,8 @@ namespace SabreTools.Metadata.DatFiles.Test
// All other fields are tested separately
Disk? partDisk = Array.Find(datItems, item => item is Disk disk && disk.DiskAreaSpecified && disk.PartSpecified) as Disk;
Assert.NotNull(partDisk);
- DiskArea? diskDiskArea = partDisk.Read(Disk.DiskAreaKey);
- ValidateDiskArea(diskDiskArea);
- Part? diskPart = partDisk.Read(Disk.PartKey);
- ValidatePart(diskPart);
+ ValidateDiskArea(partDisk.DiskArea);
+ ValidatePart(partDisk.Part);
PartFeature? partFeature = Array.Find(datItems, item => item is PartFeature) as PartFeature;
ValidatePartFeature(partFeature);
@@ -551,14 +549,14 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.Disk
{
- [Data.Models.Metadata.Disk.FlagsKey] = "flags",
- [Data.Models.Metadata.Disk.IndexKey] = "index",
- [Data.Models.Metadata.Disk.MD5Key] = HashType.MD5.ZeroString,
- [Data.Models.Metadata.Disk.MergeKey] = "merge",
+ Flags = "flags",
+ Index = 12345,
+ MD5 = HashType.MD5.ZeroString,
+ Merge = "merge",
Name = "name",
Optional = true,
- [Data.Models.Metadata.Disk.RegionKey] = "region",
- [Data.Models.Metadata.Disk.SHA1Key] = HashType.SHA1.ZeroString,
+ Region = "region",
+ SHA1 = HashType.SHA1.ZeroString,
Writable = true,
};
}
@@ -1307,14 +1305,14 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateDisk(Disk? disk)
{
Assert.NotNull(disk);
- Assert.Equal("flags", disk.ReadString(Data.Models.Metadata.Disk.FlagsKey));
- Assert.Equal("index", disk.ReadString(Data.Models.Metadata.Disk.IndexKey));
- Assert.Equal(HashType.MD5.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.MD5Key));
- Assert.Equal("merge", disk.ReadString(Data.Models.Metadata.Disk.MergeKey));
+ Assert.Equal("flags", disk.Flags);
+ Assert.Equal(12345, disk.Index);
+ Assert.Equal(HashType.MD5.ZeroString, disk.MD5);
+ Assert.Equal("merge", disk.Merge);
Assert.Equal("name", disk.Name);
Assert.True(disk.Optional);
- Assert.Equal("region", disk.ReadString(Data.Models.Metadata.Disk.RegionKey));
- Assert.Equal(HashType.SHA1.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.SHA1Key));
+ Assert.Equal("region", disk.Region);
+ Assert.Equal(HashType.SHA1.ZeroString, disk.SHA1);
Assert.True(disk.Writable);
}
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
index 9b8a24cd..32a7b59a 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
@@ -196,8 +196,8 @@ namespace SabreTools.Metadata.DatFiles.Test
{
Disk item = new Disk(CreateMetadataDisk());
item.CopyMachineInformation(machine);
- item.Write(Disk.DiskAreaKey, CreateDiskArea(machine));
- item.Write(Disk.PartKey, CreatePart(machine));
+ item.DiskArea = CreateDiskArea(machine);
+ item.Part = CreatePart(machine);
return item;
}
@@ -837,14 +837,14 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataDisk(Data.Models.Metadata.Disk? disk)
{
Assert.NotNull(disk);
- Assert.Equal("flags", disk.ReadString(Data.Models.Metadata.Disk.FlagsKey));
- Assert.Equal("index", disk.ReadString(Data.Models.Metadata.Disk.IndexKey));
- Assert.Equal(HashType.MD5.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.MD5Key));
- Assert.Equal("merge", disk.ReadString(Data.Models.Metadata.Disk.MergeKey));
+ Assert.Equal("flags", disk.Flags);
+ Assert.Equal(12345, disk.Index);
+ Assert.Equal(HashType.MD5.ZeroString, disk.MD5);
+ Assert.Equal("merge", disk.Merge);
Assert.Equal("name", disk.Name);
Assert.True(disk.Optional);
- Assert.Equal("region", disk.ReadString(Data.Models.Metadata.Disk.RegionKey));
- Assert.Equal(HashType.SHA1.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.SHA1Key));
+ Assert.Equal("region", disk.Region);
+ Assert.Equal(HashType.SHA1.ZeroString, disk.SHA1);
Assert.True(disk.Writable);
}
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs
index 662027c8..235002b2 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs
@@ -1404,9 +1404,12 @@ namespace SabreTools.Metadata.DatFiles.Test
};
machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category");
- DatItem item = new Disk { Name = "name" };
- item.Write(Data.Models.Metadata.Disk.MD5Key, "md5");
- item.Write(Data.Models.Metadata.Disk.SHA1Key, "sha1");
+ DatItem item = new Disk
+ {
+ Name = "name",
+ MD5 = "md5",
+ SHA1 = "sha1",
+ };
string actual = DatFile.FormatPrefixPostfix(item, machine, fix);
Assert.Equal(expected, actual);
@@ -1670,8 +1673,7 @@ namespace SabreTools.Metadata.DatFiles.Test
public void GetDuplicateSuffix_Disk_MD5()
{
string hash = "XXXXXX";
- DatItem datItem = new Disk();
- datItem.Write(Data.Models.Metadata.Disk.MD5Key, hash);
+ DatItem datItem = new Disk { MD5 = hash };
string actual = DatFile.GetDuplicateSuffix(datItem);
Assert.Equal($"_{hash}", actual);
@@ -1681,8 +1683,7 @@ namespace SabreTools.Metadata.DatFiles.Test
public void GetDuplicateSuffix_Disk_SHA1()
{
string hash = "XXXXXX";
- DatItem datItem = new Disk();
- datItem.Write(Data.Models.Metadata.Disk.SHA1Key, hash);
+ DatItem datItem = new Disk { SHA1 = hash };
string actual = DatFile.GetDuplicateSuffix(datItem);
Assert.Equal($"_{hash}", actual);
diff --git a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs
index c8bc7785..a03ed1cf 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs
@@ -251,9 +251,12 @@ namespace SabreTools.Metadata.DatFiles.Test
///
private static Disk CreateDisk()
{
- var disk = new Disk { Status = ItemStatus.Good };
- disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
- disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
+ var disk = new Disk
+ {
+ Status = ItemStatus.Good,
+ MD5 = HashType.MD5.ZeroString,
+ SHA1 = HashType.SHA1.ZeroString,
+ };
return disk;
}
diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
index d9e32108..5ea7c211 100644
--- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
@@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Disk.Name),
- Data.Models.Metadata.Disk.SHA1Key,
+ nameof(Data.Models.Metadata.Disk.SHA1),
]));
}
@@ -427,7 +427,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Disk.Name),
- Data.Models.Metadata.Disk.MD5Key,
+ nameof(Data.Models.Metadata.Disk.MD5),
]));
}
@@ -534,7 +534,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Disk.Name),
- Data.Models.Metadata.Disk.SHA1Key,
+ nameof(Data.Models.Metadata.Disk.SHA1),
]));
}
@@ -726,7 +726,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Disk.Name),
- Data.Models.Metadata.Disk.SHA1Key,
+ nameof(Data.Models.Metadata.Disk.SHA1),
]));
}
@@ -822,7 +822,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Disk.Name),
- Data.Models.Metadata.Disk.SHA1Key,
+ nameof(Data.Models.Metadata.Disk.SHA1),
]));
}
@@ -1139,7 +1139,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Disk.Name),
- Data.Models.Metadata.Disk.SHA1Key,
+ nameof(Data.Models.Metadata.Disk.SHA1),
]));
}
@@ -1391,7 +1391,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Disk.Name),
- Data.Models.Metadata.Disk.SHA1Key,
+ nameof(Data.Models.Metadata.Disk.SHA1),
]));
}
@@ -1449,7 +1449,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Disk.Name),
- Data.Models.Metadata.Disk.SHA1Key,
+ nameof(Data.Models.Metadata.Disk.SHA1),
]));
}
@@ -1507,7 +1507,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Disk.Name),
- Data.Models.Metadata.Disk.SHA1Key,
+ nameof(Data.Models.Metadata.Disk.SHA1),
]));
}
diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs
index e750c4ee..294b6b6f 100644
--- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs
@@ -16,8 +16,11 @@ namespace SabreTools.Metadata.DatFiles.Test
Source source = new Source(0, source: null);
Machine machine = new Machine();
- DatItem disk = new Disk { Name = "item" };
- disk.Write(Data.Models.Metadata.Disk.SHA1Key, "deadbeef");
+ DatItem disk = new Disk
+ {
+ Name = "item",
+ SHA1 = "deadbeef",
+ };
var dict = new ItemDictionaryDB();
long sourceIndex = dict.AddSource(source);
diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs
index 8cb49110..4a317cfc 100644
--- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs
@@ -16,10 +16,13 @@ namespace SabreTools.Metadata.DatFiles.Test
Source source = new Source(0, source: null);
Machine machine = new Machine();
- DatItem disk = new Disk { Name = "item" };
- disk.Write(Data.Models.Metadata.Disk.SHA1Key, "deadbeef");
- disk.Source = source;
- disk.Machine = machine;
+ DatItem disk = new Disk
+ {
+ Name = "item",
+ SHA1 = "deadbeef",
+ Source = source,
+ Machine = machine,
+ };
var dict = new ItemDictionary();
_ = dict.AddItem(disk, statsOnly: false);
diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs
index dae18fed..4b04c48d 100644
--- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs
+++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs
@@ -654,9 +654,11 @@ namespace SabreTools.Metadata.DatFiles
if (filterRunner is not null && !filterRunner.Run(disk))
continue;
- var diskItem = new Disk(disk, machine, source);
- diskItem.Write(Disk.DiskAreaKey, diskAreaitem);
- diskItem.Write(Disk.PartKey, partItem);
+ var diskItem = new Disk(disk, machine, source)
+ {
+ DiskArea = diskAreaitem,
+ Part = partItem,
+ };
AddItem(diskItem, statsOnly);
// AddItemDB(diskItem, machineIndex, sourceIndex, statsOnly);
diff --git a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs
index d7581fce..2bd079c9 100644
--- a/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs
+++ b/SabreTools.Metadata.DatFiles/DatFile.Splitting.cs
@@ -297,7 +297,7 @@ namespace SabreTools.Metadata.DatFiles
// Special disk handling
if (item is Disk disk)
{
- string? mergeTag = disk.ReadString(Data.Models.Metadata.Disk.MergeKey);
+ string? mergeTag = disk.Merge;
// If the merge tag exists and the parent already contains it, skip
if (mergeTag is not null && GetItemsForBucket(cloneOf)
@@ -433,7 +433,7 @@ namespace SabreTools.Metadata.DatFiles
// Special disk handling
if (item.Value is Disk disk)
{
- string? mergeTag = disk.ReadString(Data.Models.Metadata.Disk.MergeKey);
+ string? mergeTag = disk.Merge;
// If the merge tag exists and the parent already contains it, skip
if (mergeTag is not null && GetItemsForBucketDB(cloneOf).Values
@@ -722,8 +722,7 @@ namespace SabreTools.Metadata.DatFiles
continue;
deviceReferences.Add(deviceReference);
- var deviceRef = new DeviceRef();
- deviceRef.Name = deviceReference;
+ var deviceRef = new DeviceRef { Name = deviceReference };
deviceRef.CopyMachineInformation(copyFrom);
Items.AddItem(deviceRef, statsOnly: false);
}
@@ -772,8 +771,7 @@ namespace SabreTools.Metadata.DatFiles
continue;
slotOptions.Add(slotOption);
- var slotOptionItem = new SlotOption();
- slotOptionItem.DevName = slotOption;
+ var slotOptionItem = new SlotOption { DevName = slotOption };
slotOptionItem.CopyMachineInformation(copyFrom);
var slotItem = new Slot();
@@ -887,8 +885,7 @@ namespace SabreTools.Metadata.DatFiles
{
if (!deviceReferences.Contains(deviceReference))
{
- var deviceRef = new DeviceRef();
- deviceRef.Name = deviceReference;
+ var deviceRef = new DeviceRef { Name = deviceReference };
ItemsDB.AddItem(deviceRef, machine.Key, source.Key);
}
}
@@ -943,8 +940,7 @@ namespace SabreTools.Metadata.DatFiles
{
if (!slotOptions.Contains(slotOption))
{
- var slotOptionItem = new SlotOption();
- slotOptionItem.DevName = slotOption;
+ var slotOptionItem = new SlotOption { DevName = slotOption };
var slotItem = new Slot();
slotItem.Write(Data.Models.Metadata.Slot.SlotOptionKey, [slotOptionItem]);
diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs
index 54564538..2b9ee580 100644
--- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs
+++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs
@@ -164,17 +164,17 @@ namespace SabreTools.Metadata.DatFiles
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem);
// Add Part and DiskArea mappings
- bool diskContainsPart = diskItem.ContainsKey(DatItems.Formats.Disk.PartKey);
- bool diskContainsDiskArea = diskItem.ContainsKey(DatItems.Formats.Disk.DiskAreaKey);
+ bool diskContainsPart = disk.Part is not null;
+ bool diskContainsDiskArea = disk.DiskArea is not null;
if (diskContainsPart && diskContainsDiskArea)
{
- var partItem = diskItem.Read(DatItems.Formats.Disk.PartKey);
+ var partItem = disk.Part;
if (partItem is not null)
{
var partItemInternal = partItem.GetInternalClone();
partMappings[partItemInternal] = diskItem;
- var diskAreaItem = diskItem.Read(DatItems.Formats.Disk.DiskAreaKey);
+ var diskAreaItem = disk.DiskArea;
if (diskAreaItem is not null)
diskAreaMappings[partItemInternal] = (diskAreaItem.GetInternalClone(), diskItem);
}
@@ -585,17 +585,17 @@ namespace SabreTools.Metadata.DatFiles
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem);
// Add Part and DiskArea mappings
- bool diskContainsPart = diskItem.ContainsKey(DatItems.Formats.Disk.PartKey);
- bool diskContainsDiskArea = diskItem.ContainsKey(DatItems.Formats.Disk.DiskAreaKey);
+ bool diskContainsPart = disk.Part is not null;
+ bool diskContainsDiskArea = disk.DiskArea is not null;
if (diskContainsPart && diskContainsDiskArea)
{
- var partItem = diskItem.Read(DatItems.Formats.Disk.PartKey);
+ var partItem = disk.Part;
if (partItem is not null)
{
var partItemInternal = partItem.GetInternalClone();
partMappings[partItemInternal] = diskItem;
- var diskAreaItem = diskItem.Read(DatItems.Formats.Disk.DiskAreaKey);
+ var diskAreaItem = disk.DiskArea;
if (diskAreaItem is not null)
diskAreaMappings[partItemInternal] = (diskAreaItem.GetInternalClone(), diskItem);
}
diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs
index d63408b0..517d2bba 100644
--- a/SabreTools.Metadata.DatFiles/DatFile.cs
+++ b/SabreTools.Metadata.DatFiles/DatFile.cs
@@ -503,7 +503,7 @@ namespace SabreTools.Metadata.DatFiles
if (item is Disk disk)
{
// We can only write out if there's a SHA-1
- string? sha1 = disk.ReadString(Data.Models.Metadata.Disk.SHA1Key);
+ string? sha1 = disk.SHA1;
if (!string.IsNullOrEmpty(sha1))
{
name = Utilities.GetDepotPath(sha1, Modifiers.OutputDepot.Depth)?.Replace('\\', '/');
@@ -606,8 +606,8 @@ namespace SabreTools.Metadata.DatFiles
// Ensure we have the proper values for replacement
if (item is Disk disk)
{
- md5 = disk.ReadString(Data.Models.Metadata.Disk.MD5Key) ?? string.Empty;
- sha1 = disk.ReadString(Data.Models.Metadata.Disk.SHA1Key) ?? string.Empty;
+ md5 = disk.MD5 ?? string.Empty;
+ sha1 = disk.SHA1 ?? string.Empty;
}
else if (item is DatItems.Formats.File file)
{
@@ -1038,11 +1038,11 @@ namespace SabreTools.Metadata.DatFiles
///
private static string GetDuplicateSuffix(Disk datItem)
{
- string? md5 = datItem.ReadString(Data.Models.Metadata.Disk.MD5Key);
+ string? md5 = datItem.MD5;
if (!string.IsNullOrEmpty(md5))
return $"_{md5}";
- string? sha1 = datItem.ReadString(Data.Models.Metadata.Disk.SHA1Key);
+ string? sha1 = datItem.SHA1;
if (!string.IsNullOrEmpty(sha1))
return $"_{sha1}";
diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs
index 2cc3a271..7bb127eb 100644
--- a/SabreTools.Metadata.DatFiles/DatStatistics.cs
+++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs
@@ -330,8 +330,8 @@ namespace SabreTools.Metadata.DatFiles
ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
- AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
- AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
+ AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1);
+ AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1);
}
AddStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0);
@@ -459,8 +459,8 @@ namespace SabreTools.Metadata.DatFiles
ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
- RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
- RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
+ RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1);
+ RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1);
}
RemoveStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0);
diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs
index a2912b25..767cabe8 100644
--- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs
@@ -114,10 +114,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Disk disk:
if (string.IsNullOrEmpty(disk.Name))
missingFields.Add(nameof(Data.Models.Metadata.Disk.Name));
- if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
- && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
+ if (string.IsNullOrEmpty(disk.MD5)
+ && string.IsNullOrEmpty(disk.SHA1))
{
- missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
+ missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;
diff --git a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs
index 1c12704f..290caf11 100644
--- a/SabreTools.Metadata.DatFiles/Formats/Listrom.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/Listrom.cs
@@ -37,10 +37,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Disk disk:
- if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
- && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
+ if (string.IsNullOrEmpty(disk.MD5)
+ && string.IsNullOrEmpty(disk.SHA1))
{
- missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
+ missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;
diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
index 6188a981..65b7eb7c 100644
--- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
@@ -282,10 +282,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Disk disk:
if (string.IsNullOrEmpty(disk.Name))
missingFields.Add(nameof(Data.Models.Metadata.Disk.Name));
- if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
- && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
+ if (string.IsNullOrEmpty(disk.MD5)
+ && string.IsNullOrEmpty(disk.SHA1))
{
- missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
+ missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;
diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs
index e57375ed..7e5c0385 100644
--- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs
@@ -306,10 +306,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Disk disk:
if (string.IsNullOrEmpty(disk.Name))
missingFields.Add(nameof(Data.Models.Metadata.Disk.Name));
- if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
- && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
+ if (string.IsNullOrEmpty(disk.MD5)
+ && string.IsNullOrEmpty(disk.SHA1))
{
- missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
+ missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;
diff --git a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs
index 1814519f..bfa09d09 100644
--- a/SabreTools.Metadata.DatFiles/Formats/Md5File.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/Md5File.cs
@@ -40,8 +40,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Disk disk:
- if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)))
- missingFields.Add(Data.Models.Metadata.Disk.MD5Key);
+ if (string.IsNullOrEmpty(disk.MD5))
+ missingFields.Add(nameof(Data.Models.Metadata.Disk.MD5));
break;
case Media medium:
diff --git a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs
index f8309329..1c253b65 100644
--- a/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/SeparatedValue.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
@@ -73,10 +73,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Disk disk:
- if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
- && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
+ if (string.IsNullOrEmpty(disk.MD5)
+ && string.IsNullOrEmpty(disk.SHA1))
{
- missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
+ missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;
diff --git a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs
index d8a4296d..8cb8a639 100644
--- a/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/Sha1File.cs
@@ -40,8 +40,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Disk disk:
- if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
- missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
+ if (string.IsNullOrEmpty(disk.SHA1))
+ missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
break;
case Media medium:
diff --git a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs
index 6120b5e0..871dce80 100644
--- a/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/SoftwareList.cs
@@ -145,9 +145,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
}
else
{
- if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.Name))
+ if (string.IsNullOrEmpty(disk.Part!.Name))
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
- if (string.IsNullOrEmpty(disk.Read(Disk.PartKey)!.Interface))
+ if (string.IsNullOrEmpty(disk.Part.Interface))
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
}
@@ -157,7 +157,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
}
else
{
- if (string.IsNullOrEmpty(disk.Read(Disk.DiskAreaKey)!.Name))
+ if (string.IsNullOrEmpty(disk.DiskArea!.Name))
missingFields.Add(nameof(Data.Models.Metadata.DiskArea.Name));
}
diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs
index 7525cbcf..809205eb 100644
--- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs
+++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs
@@ -99,8 +99,8 @@ namespace SabreTools.Metadata.DatFiles
{
// If the file has aboslutely no hashes, skip and log
if (disk.Status != ItemStatus.Nodump
- && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
- && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
+ && string.IsNullOrEmpty(disk.MD5)
+ && string.IsNullOrEmpty(disk.SHA1))
{
_logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump");
disk.Status = ItemStatus.Nodump;
diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs
index 859bb236..87fbb4a3 100644
--- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs
+++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs
@@ -188,8 +188,8 @@ namespace SabreTools.Metadata.DatFiles
{
// If the file has aboslutely no hashes, skip and log
if (disk.Status != ItemStatus.Nodump
- && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
- && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
+ && string.IsNullOrEmpty(disk.MD5)
+ && string.IsNullOrEmpty(disk.SHA1))
{
_logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump");
disk.Status = ItemStatus.Nodump;
diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs
index a47ba12d..ecaddbed 100644
--- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs
+++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs
@@ -10,39 +10,36 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
[Fact]
public void ConvertToRomTest()
{
- DiskArea diskArea = new DiskArea
- {
- Name = "name"
- };
+ DiskArea diskArea = new DiskArea { Name = "name" };
Machine machine = new Machine { Name = "name" };
- Part part = new Part
+ Part part = new Part { Name = "name" };
+
+ Source source = new Source(0, "source");
+
+ Disk disk = new Disk
{
- Name = "name"
+ Name = "name",
+ DiskArea = diskArea,
+ Merge = "merge",
+ Region = "region",
+ Status = Data.Models.Metadata.ItemStatus.Good,
+ Optional = true,
+ MD5 = HashType.MD5.ZeroString,
+ SHA1 = HashType.SHA1.ZeroString,
+ DupeType = DupeType.All | DupeType.External,
+ Machine = machine,
+ Part = part,
+ RemoveFlag = false,
+ Source = source,
};
- Source source = new Source(0, "XXXXXX");
-
- Disk disk = new Disk { Name = "name" };
- disk.Write(Disk.DiskAreaKey, diskArea);
- disk.Write(Data.Models.Metadata.Disk.MergeKey, "XXXXXX");
- disk.Write(Data.Models.Metadata.Disk.RegionKey, "XXXXXX");
- disk.Status = Data.Models.Metadata.ItemStatus.Good;
- disk.Optional = true;
- disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
- disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
- disk.DupeType = DupeType.All | DupeType.External;
- disk.Machine = machine;
- disk.Write(Disk.PartKey, part);
- disk.RemoveFlag = false;
- disk.Source = source;
-
Rom actual = disk.ConvertToRom();
Assert.Equal("name.chd", actual.Name);
- Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.MergeKey));
- Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.RegionKey));
+ Assert.Equal("merge", actual.ReadString(Data.Models.Metadata.Rom.MergeKey));
+ Assert.Equal("region", actual.ReadString(Data.Models.Metadata.Rom.RegionKey));
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, actual.Status);
Assert.Equal(true, actual.Optional);
Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key));
@@ -66,7 +63,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
Source? actualSource = actual.Source;
Assert.NotNull(actualSource);
Assert.Equal(0, actualSource.Index);
- Assert.Equal("XXXXXX", actualSource.Name);
+ Assert.Equal("source", actualSource.Name);
}
#endregion
@@ -81,8 +78,8 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
self.FillMissingInformation(other);
- Assert.Null(self.ReadString(Data.Models.Metadata.Disk.MD5Key));
- Assert.Null(self.ReadString(Data.Models.Metadata.Disk.SHA1Key));
+ Assert.Null(self.MD5);
+ Assert.Null(self.SHA1);
}
[Fact]
@@ -90,14 +87,16 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
{
Disk self = new Disk();
- Disk other = new Disk();
- other.Write(Data.Models.Metadata.Disk.MD5Key, "XXXXXX");
- other.Write(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX");
+ Disk other = new Disk
+ {
+ MD5 = "md5",
+ SHA1 = "sha1",
+ };
self.FillMissingInformation(other);
- Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Disk.MD5Key));
- Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Disk.SHA1Key));
+ Assert.Equal("md5", self.MD5);
+ Assert.Equal("sha1", self.SHA1);
}
#endregion
@@ -115,9 +114,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
[Fact]
public void HasHashes_MD5_True()
{
- Disk self = new Disk();
- self.Write(Data.Models.Metadata.Disk.MD5Key, "XXXXXX");
- self.Write(Data.Models.Metadata.Disk.SHA1Key, string.Empty);
+ Disk self = new Disk
+ {
+ MD5 = "md5",
+ SHA1 = string.Empty,
+ };
bool actual = self.HasHashes();
Assert.True(actual);
@@ -126,9 +127,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
[Fact]
public void HasHashes_SHA1_True()
{
- Disk self = new Disk();
- self.Write(Data.Models.Metadata.Disk.MD5Key, string.Empty);
- self.Write(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX");
+ Disk self = new Disk
+ {
+ MD5 = string.Empty,
+ SHA1 = "sha1",
+ };
bool actual = self.HasHashes();
Assert.True(actual);
@@ -137,9 +140,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
[Fact]
public void HasHashes_All_True()
{
- Disk self = new Disk();
- self.Write(Data.Models.Metadata.Disk.MD5Key, "XXXXXX");
- self.Write(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX");
+ Disk self = new Disk
+ {
+ MD5 = "md5",
+ SHA1 = "sha1",
+ };
bool actual = self.HasHashes();
Assert.True(actual);
@@ -160,9 +165,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
[Fact]
public void HasZeroHash_NonZeroHash_False()
{
- Disk self = new Disk();
- self.Write(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF");
- self.Write(Data.Models.Metadata.Disk.SHA1Key, "DEADBEEF");
+ Disk self = new Disk
+ {
+ MD5 = "DEADBEEF",
+ SHA1 = "DEADBEEF",
+ };
bool actual = self.HasZeroHash();
Assert.False(actual);
@@ -171,9 +178,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
[Fact]
public void HasZeroHash_ZeroMD5_True()
{
- Disk self = new Disk();
- self.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
- self.Write(Data.Models.Metadata.Disk.SHA1Key, string.Empty);
+ Disk self = new Disk
+ {
+ MD5 = HashType.MD5.ZeroString,
+ SHA1 = string.Empty,
+ };
bool actual = self.HasZeroHash();
Assert.True(actual);
@@ -182,9 +191,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
[Fact]
public void HasZeroHash_ZeroSHA1_True()
{
- Disk self = new Disk();
- self.Write(Data.Models.Metadata.Disk.MD5Key, string.Empty);
- self.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
+ Disk self = new Disk
+ {
+ MD5 = string.Empty,
+ SHA1 = HashType.SHA1.ZeroString,
+ };
bool actual = self.HasZeroHash();
Assert.True(actual);
@@ -193,9 +204,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
[Fact]
public void HasZeroHash_ZeroAll_True()
{
- Disk self = new Disk();
- self.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
- self.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
+ Disk self = new Disk
+ {
+ MD5 = HashType.MD5.ZeroString,
+ SHA1 = HashType.SHA1.ZeroString,
+ };
bool actual = self.HasZeroHash();
Assert.True(actual);
@@ -257,9 +270,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
Machine machine = new Machine { Name = "Machine" };
- DatItem datItem = new Disk();
- datItem.Write(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF");
- datItem.Write(Data.Models.Metadata.Disk.SHA1Key, "DEADBEEF");
+ DatItem datItem = new Disk
+ {
+ MD5 = "DEADBEEF",
+ SHA1 = "DEADBEEF",
+ };
string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename);
Assert.Equal(expected, actual);
diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs
index 74bcc47d..fb7caf1d 100644
--- a/SabreTools.Metadata.DatItems/Formats/Disk.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs
@@ -12,35 +12,41 @@ namespace SabreTools.Metadata.DatItems.Formats
[JsonObject("disk"), XmlRoot("disk")]
public sealed class Disk : DatItem
{
- #region Constants
-
- ///
- /// Non-standard key for inverted logic
- ///
- public const string DiskAreaKey = "DISKAREA";
-
- ///
- /// Non-standard key for inverted logic
- ///
- public const string PartKey = "PART";
-
- #endregion
-
#region Fields
+ public DiskArea? DiskArea { get; set; }
+
[JsonIgnore]
public bool DiskAreaSpecified
+ => DiskArea is not null && !string.IsNullOrEmpty(DiskArea.Name);
+
+ public string? Flags
{
- get
- {
- var diskArea = Read(DiskAreaKey);
- return diskArea is not null && !string.IsNullOrEmpty(diskArea.Name);
- }
+ get => (_internal as Data.Models.Metadata.Disk)?.Flags;
+ set => (_internal as Data.Models.Metadata.Disk)?.Flags = value;
+ }
+
+ public long? Index
+ {
+ get => (_internal as Data.Models.Metadata.Disk)?.Index;
+ set => (_internal as Data.Models.Metadata.Disk)?.Index = value;
}
/// />
public override ItemType ItemType => ItemType.Disk;
+ public string? MD5
+ {
+ get => (_internal as Data.Models.Metadata.Disk)?.MD5;
+ set => (_internal as Data.Models.Metadata.Disk)?.MD5 = value;
+ }
+
+ public string? Merge
+ {
+ get => (_internal as Data.Models.Metadata.Disk)?.Merge;
+ set => (_internal as Data.Models.Metadata.Disk)?.Merge = value;
+ }
+
public string? Name
{
get => (_internal as Data.Models.Metadata.Disk)?.Name;
@@ -53,18 +59,31 @@ namespace SabreTools.Metadata.DatItems.Formats
set => (_internal as Data.Models.Metadata.Disk)?.Optional = value;
}
+ public Part? Part { get; set; }
+
[JsonIgnore]
public bool PartSpecified
{
get
{
- var part = Read(PartKey);
- return part is not null
- && (!string.IsNullOrEmpty(part.Name)
- || !string.IsNullOrEmpty(part.Interface));
+ return Part is not null
+ && (!string.IsNullOrEmpty(Part.Name)
+ || !string.IsNullOrEmpty(Part.Interface));
}
}
+ public string? Region
+ {
+ get => (_internal as Data.Models.Metadata.Disk)?.Region;
+ set => (_internal as Data.Models.Metadata.Disk)?.Region = value;
+ }
+
+ public string? SHA1
+ {
+ get => (_internal as Data.Models.Metadata.Disk)?.SHA1;
+ set => (_internal as Data.Models.Metadata.Disk)?.SHA1 = value;
+ }
+
public ItemStatus? Status
{
get => (_internal as Data.Models.Metadata.Disk)?.Status;
@@ -92,13 +111,11 @@ namespace SabreTools.Metadata.DatItems.Formats
DupeType = 0x00;
// Process hash values
- string? md5 = ReadString(Data.Models.Metadata.Disk.MD5Key);
- if (md5 is not null)
- Write(Data.Models.Metadata.Disk.MD5Key, TextHelper.NormalizeMD5(md5));
+ if (MD5 is not null)
+ MD5 = TextHelper.NormalizeMD5(MD5);
- string? sha1 = ReadString(Data.Models.Metadata.Disk.SHA1Key);
- if (sha1 is not null)
- Write(Data.Models.Metadata.Disk.SHA1Key, TextHelper.NormalizeSHA1(sha1));
+ if (SHA1 is not null)
+ SHA1 = TextHelper.NormalizeSHA1(SHA1);
}
public Disk(Data.Models.Metadata.Disk item, Machine machine, Source source) : this(item)
@@ -123,18 +140,15 @@ namespace SabreTools.Metadata.DatItems.Formats
var rom = new Rom(_internal.ConvertToRom()!);
// Create a DataArea if there was an existing DiskArea
- var diskArea = Read(DiskAreaKey);
- if (diskArea is not null)
+ if (DiskArea is not null)
{
- var dataArea = new DataArea();
- dataArea.Name = diskArea.Name;
-
+ var dataArea = new DataArea { Name = DiskArea.Name };
rom.Write(Rom.DataAreaKey, dataArea);
}
rom.DupeType = DupeType;
rom.Machine = Machine?.Clone() as Machine;
- rom.Write(Rom.PartKey, Read(PartKey)?.Clone() as Part);
+ rom.Write(Rom.PartKey, Part?.Clone() as Part);
rom.RemoveFlag = RemoveFlag;
rom.Source = Source?.Clone() as Source;
@@ -179,11 +193,11 @@ namespace SabreTools.Metadata.DatItems.Formats
switch (bucketedBy)
{
case ItemKey.MD5:
- key = ReadString(Data.Models.Metadata.Disk.MD5Key);
+ key = MD5;
break;
case ItemKey.SHA1:
- key = ReadString(Data.Models.Metadata.Disk.SHA1Key);
+ key = SHA1;
break;
// Let the base handle generic stuff
diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs
index c8f9b298..e1cdb2d7 100644
--- a/SabreTools.Metadata.Filter/FilterObject.cs
+++ b/SabreTools.Metadata.Filter/FilterObject.cs
@@ -504,9 +504,27 @@ namespace SabreTools.Metadata.Filter
checkValue = item.Value;
return true;
+ case Disk item when fieldName == "flags":
+ checkValue = item.Flags;
+ return true;
+ case Disk item when fieldName == "index":
+ checkValue = item.Index?.ToString();
+ return true;
+ case Disk item when fieldName == "md5":
+ checkValue = item.MD5;
+ return true;
+ case Disk item when fieldName == "merge":
+ checkValue = item.Merge;
+ return true;
case Disk item when fieldName == "optional":
checkValue = item.Optional.FromYesNo();
return true;
+ case Disk item when fieldName == "region":
+ checkValue = item.Region;
+ return true;
+ case Disk item when fieldName == "sha1":
+ checkValue = item.SHA1;
+ return true;
case Disk item when fieldName == "status":
checkValue = item.Status?.AsStringValue();
return true;
diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs
index 4eba1f60..e17b7629 100644
--- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs
+++ b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs
@@ -24,15 +24,15 @@ namespace SabreTools.Metadata.Test
{
Status = ItemStatus.Nodump,
Name = "name",
- [Disk.MD5Key] = string.Empty,
- [Disk.SHA1Key] = string.Empty,
+ MD5 = string.Empty,
+ SHA1 = string.Empty,
};
DictionaryBase other = new Disk
{
Status = ItemStatus.Nodump,
Name = "name",
- [Disk.MD5Key] = string.Empty,
- [Disk.SHA1Key] = string.Empty,
+ MD5 = string.Empty,
+ SHA1 = string.Empty,
};
bool actual = self.EqualTo(other);
@@ -45,14 +45,14 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Disk
{
Name = "name",
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = string.Empty,
+ MD5 = "XXXXXX",
+ SHA1 = string.Empty,
};
DictionaryBase other = new Disk
{
Name = "name",
- [Disk.MD5Key] = string.Empty,
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = string.Empty,
+ SHA1 = "XXXXXX",
};
bool actual = self.EqualTo(other);
@@ -65,14 +65,14 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Disk
{
Name = "XXXXXX1",
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = string.Empty,
+ MD5 = "XXXXXX",
+ SHA1 = string.Empty,
};
DictionaryBase other = new Disk
{
Name = "XXXXXX2",
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "XXXXXX",
+ SHA1 = "XXXXXX",
};
bool actual = self.EqualTo(other);
@@ -85,14 +85,14 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Disk
{
Name = "XXXXXX1",
- [Disk.MD5Key] = string.Empty,
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = string.Empty,
+ SHA1 = "XXXXXX",
};
DictionaryBase other = new Disk
{
Name = "XXXXXX2",
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "XXXXXX",
+ SHA1 = "XXXXXX",
};
bool actual = self.EqualTo(other);
@@ -105,14 +105,14 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Disk
{
Name = "XXXXXX1",
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "XXXXXX",
+ SHA1 = "XXXXXX",
};
DictionaryBase other = new Disk
{
Name = "XXXXXX2",
- [Disk.MD5Key] = "XXXXXX",
- [Disk.SHA1Key] = "XXXXXX",
+ MD5 = "XXXXXX",
+ SHA1 = "XXXXXX",
};
bool actual = self.EqualTo(other);
diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs
index e585e699..9dc537d1 100644
--- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs
@@ -128,11 +128,11 @@ namespace SabreTools.Serialization.CrossModel.Test
var disk = new Data.Models.ClrMamePro.Disk
{
Name = "name",
- MD5 = "XXXXXX",
- SHA1 = "XXXXXX",
- Merge = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
+ Merge = "merge",
Status = Data.Models.Metadata.ItemStatus.Good,
- Flags = "XXXXXX",
+ Flags = "flags",
};
var sample = new Data.Models.ClrMamePro.Sample
@@ -395,11 +395,11 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(disk);
Assert.Equal("name", disk.Name);
- Assert.Equal("XXXXXX", disk.MD5);
- Assert.Equal("XXXXXX", disk.SHA1);
- Assert.Equal("XXXXXX", disk.Merge);
+ Assert.Equal("md5", disk.MD5);
+ Assert.Equal("sha1", disk.SHA1);
+ Assert.Equal("merge", disk.Merge);
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
- Assert.Equal("XXXXXX", disk.Flags);
+ Assert.Equal("flags", disk.Flags);
}
///
diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs
index 525728fc..f5cfc37c 100644
--- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs
@@ -89,11 +89,11 @@ namespace SabreTools.Serialization.CrossModel.Test
var disk = new Data.Models.Listxml.Disk
{
Name = "name",
- MD5 = "XXXXXX",
- SHA1 = "XXXXXX",
- Merge = "XXXXXX",
- Region = "XXXXXX",
- Index = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
+ Merge = "merge",
+ Region = "region",
+ Index = 12345,
Writable = true,
Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
@@ -505,11 +505,11 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(disk);
Assert.Equal("name", disk.Name);
- Assert.Equal("XXXXXX", disk.MD5);
- Assert.Equal("XXXXXX", disk.SHA1);
- Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Region);
- Assert.Equal("XXXXXX", disk.Index);
+ Assert.Equal("md5", disk.MD5);
+ Assert.Equal("sha1", disk.SHA1);
+ Assert.Equal("merge", disk.Merge);
+ Assert.Equal("region", disk.Region);
+ Assert.Equal(12345, disk.Index);
Assert.Equal(true, disk.Writable);
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs
index 73453a6b..4f8d42ad 100644
--- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs
@@ -85,11 +85,11 @@ namespace SabreTools.Serialization.CrossModel.Test
var disk = new Data.Models.Listxml.Disk
{
Name = "name",
- MD5 = "XXXXXX",
- SHA1 = "XXXXXX",
- Merge = "XXXXXX",
- Region = "XXXXXX",
- Index = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
+ Merge = "merge",
+ Region = "region",
+ Index = 12345,
Writable = true,
Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
@@ -499,11 +499,11 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(disk);
Assert.Equal("name", disk.Name);
- Assert.Equal("XXXXXX", disk.MD5);
- Assert.Equal("XXXXXX", disk.SHA1);
- Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Region);
- Assert.Equal("XXXXXX", disk.Index);
+ Assert.Equal("md5", disk.MD5);
+ Assert.Equal("sha1", disk.SHA1);
+ Assert.Equal("merge", disk.Merge);
+ Assert.Equal("region", disk.Region);
+ Assert.Equal(12345, disk.Index);
Assert.Equal(true, disk.Writable);
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs
index cefd38d2..d42345ff 100644
--- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs
@@ -85,11 +85,11 @@ namespace SabreTools.Serialization.CrossModel.Test
var disk = new Data.Models.Listxml.Disk
{
Name = "name",
- MD5 = "XXXXXX",
- SHA1 = "XXXXXX",
- Merge = "XXXXXX",
- Region = "XXXXXX",
- Index = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
+ Merge = "merge",
+ Region = "region",
+ Index = 12345,
Writable = true,
Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
@@ -499,11 +499,11 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(disk);
Assert.Equal("name", disk.Name);
- Assert.Equal("XXXXXX", disk.MD5);
- Assert.Equal("XXXXXX", disk.SHA1);
- Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Region);
- Assert.Equal("XXXXXX", disk.Index);
+ Assert.Equal("md5", disk.MD5);
+ Assert.Equal("sha1", disk.SHA1);
+ Assert.Equal("merge", disk.Merge);
+ Assert.Equal("region", disk.Region);
+ Assert.Equal(12345, disk.Index);
Assert.Equal(true, disk.Writable);
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs
index 512753d8..ed56c002 100644
--- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs
@@ -197,11 +197,11 @@ namespace SabreTools.Serialization.CrossModel
var disk = new Disk
{
Name = item.Name,
- MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
- SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
- Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey),
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
+ Merge = item.Merge,
Status = item.Status,
- Flags = item.ReadString(Data.Models.Metadata.Disk.FlagsKey),
+ Flags = item.Flags,
};
return disk;
}
diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs
index cf3e28ea..1381c51d 100644
--- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs
@@ -210,11 +210,11 @@ namespace SabreTools.Serialization.CrossModel
var disk = new Data.Models.Metadata.Disk
{
Name = item.Name,
- [Data.Models.Metadata.Disk.MD5Key] = item.MD5,
- [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
- [Data.Models.Metadata.Disk.MergeKey] = item.Merge,
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
+ Merge = item.Merge,
Status = item.Status,
- [Data.Models.Metadata.Disk.FlagsKey] = item.Flags,
+ Flags = item.Flags,
};
return disk;
}
diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs
index e37f8aa3..db875814 100644
--- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs
@@ -56,8 +56,8 @@ namespace SabreTools.Serialization.CrossModel
var row = new Row
{
Name = item.Name,
- MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
- SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
};
if (item.Status == Data.Models.Metadata.ItemStatus.Nodump)
diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs
index 94c44e35..6419e27f 100644
--- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs
@@ -84,8 +84,8 @@ namespace SabreTools.Serialization.CrossModel
var disk = new Data.Models.Metadata.Disk
{
Name = item.Name,
- [Data.Models.Metadata.Disk.MD5Key] = item.MD5,
- [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
};
if (item.NoGoodDumpKnown)
diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
index 095d4997..3ac33a38 100644
--- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
@@ -404,11 +404,11 @@ namespace SabreTools.Serialization.CrossModel
var disk = new Disk
{
Name = item.Name,
- MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
- SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
- Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey),
- Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey),
- Index = item.ReadString(Data.Models.Metadata.Disk.IndexKey),
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
+ Merge = item.Merge,
+ Region = item.Region,
+ Index = item.Index,
Writable = item.Writable,
Status = item.Status,
Optional = item.Optional,
diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
index b810bfd2..6a5a8a82 100644
--- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
@@ -427,11 +427,11 @@ namespace SabreTools.Serialization.CrossModel
var disk = new Data.Models.Metadata.Disk
{
Name = item.Name,
- [Data.Models.Metadata.Disk.MD5Key] = item.MD5,
- [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
- [Data.Models.Metadata.Disk.MergeKey] = item.Merge,
- [Data.Models.Metadata.Disk.RegionKey] = item.Region,
- [Data.Models.Metadata.Disk.IndexKey] = item.Index,
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
+ Merge = item.Merge,
+ Region = item.Region,
+ Index = item.Index,
Writable = item.Writable,
Status = item.Status,
Optional = item.Optional,
diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs
index 126d84b0..06f44fd3 100644
--- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs
@@ -233,11 +233,11 @@ namespace SabreTools.Serialization.CrossModel
var disk = new Disk
{
Name = item.Name,
- MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
- SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
- Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey),
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
+ Merge = item.Merge,
Status = item.Status,
- Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey),
+ Region = item.Region,
};
return disk;
}
diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs
index 9d4fc753..6887a903 100644
--- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs
@@ -227,11 +227,11 @@ namespace SabreTools.Serialization.CrossModel
var disk = new Data.Models.Metadata.Disk
{
Name = item.Name,
- [Data.Models.Metadata.Disk.MD5Key] = item.MD5,
- [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
- [Data.Models.Metadata.Disk.MergeKey] = item.Merge,
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
+ Merge = item.Merge,
Status = item.Status,
- [Data.Models.Metadata.Disk.RegionKey] = item.Region,
+ Region = item.Region,
};
return disk;
}
diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs
index acc2cfdc..664c4757 100644
--- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs
@@ -86,8 +86,8 @@ namespace SabreTools.Serialization.CrossModel
DiskName = item.Name,
Size = null,
CRC = null,
- MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
- SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
SHA256 = null,
SHA384 = null,
SHA512 = null,
diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs
index 89ce378a..bd9257e6 100644
--- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs
@@ -90,8 +90,8 @@ namespace SabreTools.Serialization.CrossModel
"disk" => new Data.Models.Metadata.Disk
{
Name = item.DiskName,
- [Data.Models.Metadata.Disk.MD5Key] = item.MD5,
- [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
Status = item.Status,
},
"media" => new Data.Models.Metadata.Media
diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs
index 6493fb8d..864ea791 100644
--- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs
@@ -127,8 +127,8 @@ namespace SabreTools.Serialization.CrossModel
var disk = new Disk
{
Name = item.Name,
- MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
- SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
Status = item.Status,
Writeable = item.Writable,
};
diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs
index 0dc4888c..ab8d821a 100644
--- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs
@@ -126,8 +126,8 @@ namespace SabreTools.Serialization.CrossModel
var disk = new Data.Models.Metadata.Disk
{
Name = item.Name,
- [Data.Models.Metadata.Disk.MD5Key] = item.MD5,
- [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
+ MD5 = item.MD5,
+ SHA1 = item.SHA1,
Status = item.Status,
Writable = item.Writeable,
};
diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs
index a4997294..aef932cc 100644
--- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs
+++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs
@@ -156,11 +156,11 @@ namespace SabreTools.Serialization.Readers.Test
var disk = new Data.Models.Listxml.Disk
{
Name = "name",
- MD5 = "XXXXXX",
- SHA1 = "XXXXXX",
- Merge = "XXXXXX",
- Region = "XXXXXX",
- Index = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
+ Merge = "merge",
+ Region = "region",
+ Index = 12345,
Writable = true,
Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
@@ -572,11 +572,11 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(disk);
Assert.Equal("name", disk.Name);
- Assert.Equal("XXXXXX", disk.MD5);
- Assert.Equal("XXXXXX", disk.SHA1);
- Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Region);
- Assert.Equal("XXXXXX", disk.Index);
+ Assert.Equal("md5", disk.MD5);
+ Assert.Equal("sha1", disk.SHA1);
+ Assert.Equal("merge", disk.Merge);
+ Assert.Equal("region", disk.Region);
+ Assert.Equal(12345, disk.Index);
Assert.Equal(true, disk.Writable);
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs
index 3f581a31..8c5ed64e 100644
--- a/SabreTools.Serialization.Readers.Test/M1Tests.cs
+++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs
@@ -152,11 +152,11 @@ namespace SabreTools.Serialization.Readers.Test
var disk = new Data.Models.Listxml.Disk
{
Name = "name",
- MD5 = "XXXXXX",
- SHA1 = "XXXXXX",
- Merge = "XXXXXX",
- Region = "XXXXXX",
- Index = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
+ Merge = "merge",
+ Region = "region",
+ Index = 12345,
Writable = true,
Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
@@ -566,11 +566,11 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(disk);
Assert.Equal("name", disk.Name);
- Assert.Equal("XXXXXX", disk.MD5);
- Assert.Equal("XXXXXX", disk.SHA1);
- Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Region);
- Assert.Equal("XXXXXX", disk.Index);
+ Assert.Equal("md5", disk.MD5);
+ Assert.Equal("sha1", disk.SHA1);
+ Assert.Equal("merge", disk.Merge);
+ Assert.Equal("region", disk.Region);
+ Assert.Equal(12345, disk.Index);
Assert.Equal(true, disk.Writable);
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs
index 4d18462d..f9b1ae56 100644
--- a/SabreTools.Serialization.Readers.Test/MessTests.cs
+++ b/SabreTools.Serialization.Readers.Test/MessTests.cs
@@ -152,11 +152,11 @@ namespace SabreTools.Serialization.Readers.Test
var disk = new Data.Models.Listxml.Disk
{
Name = "name",
- MD5 = "XXXXXX",
- SHA1 = "XXXXXX",
- Merge = "XXXXXX",
- Region = "XXXXXX",
- Index = "XXXXXX",
+ MD5 = "md5",
+ SHA1 = "sha1",
+ Merge = "merge",
+ Region = "region",
+ Index = 12345,
Writable = true,
Status = Data.Models.Metadata.ItemStatus.Good,
Optional = true,
@@ -566,11 +566,11 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(disk);
Assert.Equal("name", disk.Name);
- Assert.Equal("XXXXXX", disk.MD5);
- Assert.Equal("XXXXXX", disk.SHA1);
- Assert.Equal("XXXXXX", disk.Merge);
- Assert.Equal("XXXXXX", disk.Region);
- Assert.Equal("XXXXXX", disk.Index);
+ Assert.Equal("md5", disk.MD5);
+ Assert.Equal("sha1", disk.SHA1);
+ Assert.Equal("merge", disk.Merge);
+ Assert.Equal("region", disk.Region);
+ Assert.Equal(12345, disk.Index);
Assert.Equal(true, disk.Writable);
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
Assert.Equal(true, disk.Optional);
diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs
index 594d34d8..4b283090 100644
--- a/SabreTools.Serialization.Readers/Listxml.cs
+++ b/SabreTools.Serialization.Readers/Listxml.cs
@@ -557,7 +557,7 @@ namespace SabreTools.Serialization.Readers
obj.SHA1 = reader.GetAttribute("sha1");
obj.Merge = reader.GetAttribute("merge");
obj.Region = reader.GetAttribute("region");
- obj.Index = reader.GetAttribute("index");
+ obj.Index = NumberHelper.ConvertToInt64(reader.GetAttribute("index"));
obj.Writable = reader.GetAttribute("writable").AsYesNo();
obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Optional = reader.GetAttribute("optional").AsYesNo();
diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs
index 83b3202a..2ccd1f22 100644
--- a/SabreTools.Serialization.Readers/M1.cs
+++ b/SabreTools.Serialization.Readers/M1.cs
@@ -555,7 +555,7 @@ namespace SabreTools.Serialization.Readers
obj.SHA1 = reader.GetAttribute("sha1");
obj.Merge = reader.GetAttribute("merge");
obj.Region = reader.GetAttribute("region");
- obj.Index = reader.GetAttribute("index");
+ obj.Index = NumberHelper.ConvertToInt64(reader.GetAttribute("index"));
obj.Writable = reader.GetAttribute("writable").AsYesNo();
obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Optional = reader.GetAttribute("optional").AsYesNo();
diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs
index 97a581da..74637da8 100644
--- a/SabreTools.Serialization.Readers/Mess.cs
+++ b/SabreTools.Serialization.Readers/Mess.cs
@@ -555,7 +555,7 @@ namespace SabreTools.Serialization.Readers
obj.SHA1 = reader.GetAttribute("sha1");
obj.Merge = reader.GetAttribute("merge");
obj.Region = reader.GetAttribute("region");
- obj.Index = reader.GetAttribute("index");
+ obj.Index = NumberHelper.ConvertToInt64(reader.GetAttribute("index"));
obj.Writable = reader.GetAttribute("writable").AsYesNo();
obj.Status = reader.GetAttribute("status").AsItemStatus();
obj.Optional = reader.GetAttribute("optional").AsYesNo();
diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs
index 78c12a3f..89b638e1 100644
--- a/SabreTools.Serialization.Writers/Listxml.cs
+++ b/SabreTools.Serialization.Writers/Listxml.cs
@@ -372,7 +372,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("sha1", obj.SHA1);
writer.WriteOptionalAttributeString("merge", obj.Merge);
writer.WriteOptionalAttributeString("region", obj.Region);
- writer.WriteOptionalAttributeString("index", obj.Index);
+ writer.WriteOptionalAttributeString("index", obj.Index?.ToString());
writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo());
writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs
index 7fcbbcf3..af84c695 100644
--- a/SabreTools.Serialization.Writers/M1.cs
+++ b/SabreTools.Serialization.Writers/M1.cs
@@ -370,7 +370,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("sha1", obj.SHA1);
writer.WriteOptionalAttributeString("merge", obj.Merge);
writer.WriteOptionalAttributeString("region", obj.Region);
- writer.WriteOptionalAttributeString("index", obj.Index);
+ writer.WriteOptionalAttributeString("index", obj.Index?.ToString());
writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo());
writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs
index f616b2b1..ada680f8 100644
--- a/SabreTools.Serialization.Writers/Mess.cs
+++ b/SabreTools.Serialization.Writers/Mess.cs
@@ -370,7 +370,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("sha1", obj.SHA1);
writer.WriteOptionalAttributeString("merge", obj.Merge);
writer.WriteOptionalAttributeString("region", obj.Region);
- writer.WriteOptionalAttributeString("index", obj.Index);
+ writer.WriteOptionalAttributeString("index", obj.Index?.ToString());
writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo());
writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());