From d3f5dccf5b9800dd5768520f5ff503d7833c88cf Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 17:06:01 -0400 Subject: [PATCH] Make Source inherent to DatItem instead of passing through --- .../DatFileTests.Filtering.cs | 12 +- .../DatFileTests.Splitting.cs | 88 +++--- .../DatFileTests.cs | 28 +- .../ItemDictionaryTests.cs | 56 ++-- .../DatFile.FromMetadata.cs | 4 +- SabreTools.Metadata.DatFiles/DatFile.cs | 4 +- .../Formats/SabreJSON.cs | 2 +- .../Formats/SabreXML.cs | 2 +- .../ItemDictionary.cs | 18 +- .../Formats/DiskTests.cs | 4 +- .../Formats/FileTests.cs | 6 +- .../Formats/MediaTests.cs | 4 +- SabreTools.Metadata.DatItems/DatItem.cs | 28 +- .../Formats/Adjuster.cs | 2 +- .../Formats/Analog.cs | 2 +- .../Formats/Archive.cs | 2 +- .../Formats/BiosSet.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Blank.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Chip.cs | 2 +- .../Formats/Condition.cs | 2 +- .../Formats/ConfLocation.cs | 2 +- .../Formats/ConfSetting.cs | 2 +- .../Formats/Configuration.cs | 2 +- .../Formats/Control.cs | 2 +- .../Formats/DataArea.cs | 2 +- .../Formats/Device.cs | 2 +- .../Formats/DeviceRef.cs | 2 +- .../Formats/DipLocation.cs | 2 +- .../Formats/DipSwitch.cs | 2 +- .../Formats/DipValue.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Disk.cs | 4 +- .../Formats/DiskArea.cs | 2 +- .../Formats/Display.cs | 4 +- .../Formats/Driver.cs | 2 +- .../Formats/Extension.cs | 2 +- .../Formats/Feature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/File.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Info.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Input.cs | 2 +- .../Formats/Instance.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Media.cs | 4 +- SabreTools.Metadata.DatItems/Formats/Part.cs | 2 +- .../Formats/PartFeature.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Port.cs | 2 +- .../Formats/RamOption.cs | 2 +- .../Formats/Release.cs | 2 +- .../Formats/ReleaseDetails.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Rom.cs | 4 +- .../Formats/Sample.cs | 2 +- .../Formats/Serials.cs | 2 +- .../Formats/SharedFeat.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Slot.cs | 2 +- .../Formats/SlotOption.cs | 2 +- .../Formats/SoftwareList.cs | 2 +- SabreTools.Metadata.DatItems/Formats/Sound.cs | 2 +- .../Formats/SourceDetails.cs | 2 +- SabreTools.Metadata.DatItems/Machine.cs | 26 ++ .../DictionaryBaseExtensions.cs | 274 ++++++++++++++++++ 58 files changed, 468 insertions(+), 184 deletions(-) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs index 448ad49c..f82d53f8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Filtering.cs @@ -26,7 +26,7 @@ namespace SabreTools.Metadata.DatFiles.Test datItem.SetName("rom.bin"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); @@ -54,7 +54,7 @@ namespace SabreTools.Metadata.DatFiles.Test datItem.SetName("rom.bin"); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long sourceIndex = datFile.AddSourceDB(source); @@ -84,7 +84,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom(); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); @@ -131,12 +131,12 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("rom.bin"); rom.Machine = machine; - rom.Write(DatItem.SourceKey, source); + rom.Source = source; DatItem disk = new Disk(); disk.SetName("disk"); disk.Machine = machine; - disk.Write(DatItem.SourceKey, source); + disk.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(rom, statsOnly: false); @@ -270,7 +270,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom(); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs index 3ea66952..62c11937 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.Splitting.cs @@ -27,21 +27,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -72,21 +72,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -117,21 +117,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -165,21 +165,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -217,21 +217,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -262,21 +262,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -318,29 +318,29 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem deviceItem = new Sample(); deviceItem.SetName("device_item"); deviceItem.Machine = deviceMachine; - deviceItem.Write(DatItem.SourceKey, source); + deviceItem.Source = source; DatItem slotOptionItem = new Sample(); slotOptionItem.SetName("slot_option_item"); slotOptionItem.Machine = slotOptionMachine; - slotOptionItem.Write(DatItem.SourceKey, source); + slotOptionItem.Source = source; DatItem datItem = new Rom(); datItem.SetName("rom"); datItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); datItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); datItem.Machine = itemMachine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatItem deviceRef = new DeviceRef(); deviceRef.SetName("device"); deviceRef.Machine = itemMachine; - deviceRef.Write(DatItem.SourceKey, source); + deviceRef.Source = source; DatItem slotOption = new SlotOption(); slotOption.SetName("slotoption"); slotOption.Machine = itemMachine; - slotOption.Write(DatItem.SourceKey, source); + slotOption.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(deviceItem, statsOnly: false); @@ -430,21 +430,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -475,21 +475,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -524,11 +524,11 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem biosItem = new Rom(); biosItem.Machine = biosMachine; - biosItem.Write(DatItem.SourceKey, source); + biosItem.Source = source; DatItem deviceItem = new Rom(); deviceItem.Machine = deviceMachine; - deviceItem.Write(DatItem.SourceKey, source); + deviceItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(biosItem, statsOnly: false); @@ -592,21 +592,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -642,21 +642,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -699,21 +699,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(parentItem, statsOnly: false); @@ -748,21 +748,21 @@ namespace SabreTools.Metadata.DatFiles.Test parentItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); parentItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); parentItem.Machine = parentMachine; - parentItem.Write(DatItem.SourceKey, source); + parentItem.Source = source; DatItem matchChildItem = new Rom(); matchChildItem.SetName("match_child_rom"); matchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); matchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); matchChildItem.Machine = childMachine; - matchChildItem.Write(DatItem.SourceKey, source); + matchChildItem.Source = source; DatItem noMatchChildItem = new Rom(); noMatchChildItem.SetName("no_match_child_rom"); noMatchChildItem.Write(Data.Models.Metadata.Rom.SizeKey, 12345); noMatchChildItem.Write(Data.Models.Metadata.Rom.CRCKey, "beefdead"); noMatchChildItem.Machine = childMachine; - noMatchChildItem.Write(DatItem.SourceKey, source); + noMatchChildItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); long biosMachineIndex = datFile.AddMachineDB(parentMachine); @@ -799,7 +799,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem datItem = new Rom(); datItem.Machine = machine; - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.AddItem(datItem, statsOnly: false); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 9b4f54b8..8f2b0805 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -36,7 +36,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("rom"); rom.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; DatFile? datFile = new Logiqx(datFile: null, useGame: false); @@ -76,7 +76,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "game-1"; DatItem datItem = new Rom(); - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; datItem.Machine = machine; DatFile datFile = new Logiqx(datFile: null, useGame: false); @@ -1961,7 +1961,7 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); List datItems = [romA]; @@ -1989,14 +1989,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("romB"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List datItems = [romA, romB]; @@ -2031,14 +2031,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("rom"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List datItems = [romA, romB]; @@ -2066,14 +2066,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("rom"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List datItems = [romA, romB]; @@ -2123,7 +2123,7 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); List> mappings = [ @@ -2153,14 +2153,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("romB"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List> mappings = [ @@ -2237,14 +2237,14 @@ namespace SabreTools.Metadata.DatFiles.Test romA.Write(Data.Models.Metadata.Rom.SizeKey, 12345); romA.Write(Data.Models.Metadata.Rom.CRCKey, "crc"); romA.Machine = (Machine)machine.Clone(); - romA.Write(DatItem.SourceKey, (Source)source.Clone()); + romA.Source = (Source)source.Clone(); Rom romB = new Rom(); romB.SetName("rom"); romB.Write(Data.Models.Metadata.Rom.SizeKey, 23456); romB.Write(Data.Models.Metadata.Rom.CRCKey, "crc2"); romB.Machine = (Machine)machine.Clone(); - romB.Write(DatItem.SourceKey, (Source)source.Clone()); + romB.Source = (Source)source.Clone(); List> mappings = [ diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 95c8d893..3530f4ce 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -19,7 +19,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem disk = new Disk(); disk.SetName("item"); disk.Write(Data.Models.Metadata.Disk.SHA1Key, "deadbeef"); - disk.Write(DatItem.SourceKey, source); + disk.Source = source; disk.Machine = machine; var dict = new ItemDictionary(); @@ -39,7 +39,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem disk = new Disk(); disk.SetName("item"); - disk.Write(DatItem.SourceKey, source); + disk.Source = source; disk.Machine = machine; var dict = new ItemDictionary(); @@ -60,7 +60,7 @@ namespace SabreTools.Metadata.DatFiles.Test var file = new File(); file.SetName("item"); file.SHA1 = "deadbeef"; - file.Write(DatItem.SourceKey, source); + file.Source = source; file.Machine = machine; var dict = new ItemDictionary(); @@ -79,7 +79,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem file = new File(); file.SetName("item"); - file.Write(DatItem.SourceKey, source); + file.Source = source; file.Machine = machine; var dict = new ItemDictionary(); @@ -99,7 +99,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem media = new Media(); media.SetName("item"); media.Write(Data.Models.Metadata.Media.SHA1Key, "deadbeef"); - media.Write(DatItem.SourceKey, source); + media.Source = source; media.Machine = machine; var dict = new ItemDictionary(); @@ -118,7 +118,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem media = new Media(); media.SetName("item"); - media.Write(DatItem.SourceKey, source); + media.Source = source; media.Machine = machine; var dict = new ItemDictionary(); @@ -139,7 +139,7 @@ namespace SabreTools.Metadata.DatFiles.Test rom.SetName("item"); rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; var dict = new ItemDictionary(); @@ -162,7 +162,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("item"); rom.Write(Data.Models.Metadata.Rom.SizeKey, 12345); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; var dict = new ItemDictionary(); @@ -185,7 +185,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("item"); rom.Write(Data.Models.Metadata.Rom.SHA1Key, "deadbeef"); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; var dict = new ItemDictionary(); @@ -207,7 +207,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem rom = new Rom(); rom.SetName("item"); - rom.Write(DatItem.SourceKey, source); + rom.Source = source; rom.Machine = machine; var dict = new ItemDictionary(); @@ -229,7 +229,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.SetName("item"); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -246,7 +246,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.SetName("item"); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -305,7 +305,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -325,7 +325,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -346,7 +346,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -367,7 +367,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem item = new Rom(); item.Write(DatItem.RemoveKey, true); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -387,7 +387,7 @@ namespace SabreTools.Metadata.DatFiles.Test machine.Name = "machine"; DatItem item = new Rom(); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); @@ -577,13 +577,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "BEEFDEAD"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(1)); + romB.Source = new Source(1); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -604,13 +604,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(1)); + romB.Source = new Source(1); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -631,13 +631,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(1)); + romB.Source = new Source(1); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -658,13 +658,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(0)); + romB.Source = new Source(0); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -685,13 +685,13 @@ namespace SabreTools.Metadata.DatFiles.Test var romA = new Rom(); romA.Name = "same-name"; romA.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romA.Write(DatItem.SourceKey, new Source(0)); + romA.Source = new Source(0); romA.CopyMachineInformation(machineA); var romB = new Rom(); romB.Name = "same-name"; romB.Write(Data.Models.Metadata.Rom.CRCKey, "DEADBEEF"); - romB.Write(DatItem.SourceKey, new Source(0)); + romB.Source = new Source(0); romB.CopyMachineInformation(machineB); var actual = dict.GetDuplicateStatus(romA, romB); @@ -796,7 +796,7 @@ namespace SabreTools.Metadata.DatFiles.Test item.SetName("rom"); item.Write(Data.Models.Metadata.Rom.SizeKey, 12345); item.Write(Data.Models.Metadata.Rom.CRCKey, "deadbeef"); - item.Write(DatItem.SourceKey, source); + item.Source = source; item.Machine = machine; var dict = new ItemDictionary(); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index d5f69517..ba404243 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -480,7 +480,7 @@ namespace SabreTools.Metadata.DatFiles Array.ForEach(filtered, item => { var datItem = new Rom(item, machine, source); - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; datItem.CopyMachineInformation(machine); AddItem(datItem, statsOnly); @@ -692,7 +692,7 @@ namespace SabreTools.Metadata.DatFiles var partFeatureItem = new PartFeature(partFeature); partFeatureItem.Write(DipSwitch.PartKey, partItem); - partFeatureItem.Write(DatItem.SourceKey, source); + partFeatureItem.Source = source; partFeatureItem.CopyMachineInformation(machine); AddItem(partFeatureItem, statsOnly); diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index 4d887946..1641df98 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -1169,8 +1169,8 @@ namespace SabreTools.Metadata.DatFiles // Compare on source if renaming if (!norename) { - int xSourceIndex = x.Read(DatItem.SourceKey)?.Index ?? 0; - int ySourceIndex = y.Read(DatItem.SourceKey)?.Index ?? 0; + int xSourceIndex = x.Source?.Index ?? 0; + int ySourceIndex = y.Source?.Index ?? 0; if (xSourceIndex != ySourceIndex) return xSourceIndex - ySourceIndex; } diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs index e39f9fa2..46f57435 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs @@ -406,7 +406,7 @@ namespace SabreTools.Metadata.DatFiles.Formats return; datItem.CopyMachineInformation(machine); - datItem.Write(DatItem.SourceKey, source); + datItem.Source = source; AddItem(datItem, statsOnly); AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); } diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs index d4215183..19375b9f 100644 --- a/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs +++ b/SabreTools.Metadata.DatFiles/Formats/SabreXML.cs @@ -223,7 +223,7 @@ namespace SabreTools.Metadata.DatFiles.Formats } item.CopyMachineInformation(machine); - item.Write(DatItem.SourceKey, source); + item.Source = source; AddItem(item, statsOnly); // AddItemDB(item, machineIndex, sourceIndex, statsOnly); } diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 17756f62..9a22b2e0 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -433,8 +433,8 @@ namespace SabreTools.Metadata.DatFiles return output; // Get the sources for comparison - var selfSource = self.Read(DatItem.SourceKey); - var lastSource = last.Read(DatItem.SourceKey); + var selfSource = self.Source; + var lastSource = last.Source; // Get the machines for comparison var selfMachine = self.Machine; @@ -542,8 +542,8 @@ namespace SabreTools.Metadata.DatFiles savedItem.Write(DatItem.DupeTypeKey, dupetype); // Get the sources associated with the items - var savedSource = savedItem.Read(DatItem.SourceKey); - var itemSource = datItem.Read(DatItem.SourceKey); + var savedSource = savedItem.Source; + var itemSource = datItem.Source; // Get the machines associated with the items var savedMachine = savedItem.Machine; @@ -552,7 +552,7 @@ namespace SabreTools.Metadata.DatFiles // If the current source has a lower ID than the saved, use the saved source if (itemSource?.Index < savedSource?.Index) { - datItem.Write(DatItem.SourceKey, savedSource.Clone() as Source); + datItem.Source = savedSource.Clone() as Source; savedItem.CopyMachineInformation(datItem); savedItem.SetName(datItem.GetName()); } @@ -733,7 +733,7 @@ namespace SabreTools.Metadata.DatFiles // Get the machine and source var machine = datItem.Machine; - var source = datItem.Read(DatItem.SourceKey); + var source = datItem.Source; // Get the bucket key return datItem.GetKey(bucketBy, machine, source, lower, norename); @@ -772,7 +772,7 @@ namespace SabreTools.Metadata.DatFiles // Get the machine and source var machine = item.Machine; - var source = item.Read(DatItem.SourceKey); + var source = item.Source; // We want to get the key most appropriate for the given sorting type string newkey = item.GetKey(bucketBy, machine, source, lower, norename); @@ -845,8 +845,8 @@ namespace SabreTools.Metadata.DatFiles // Compare on source if renaming if (!norename) { - int xSourceIndex = x.Read(DatItem.SourceKey)?.Index ?? 0; - int ySourceIndex = y.Read(DatItem.SourceKey)?.Index ?? 0; + int xSourceIndex = x.Source?.Index ?? 0; + int ySourceIndex = y.Source?.Index ?? 0; if (xSourceIndex != ySourceIndex) return xSourceIndex - ySourceIndex; } diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index 4f5c1f4c..7f7f282b 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test disk.Machine = machine; disk.Write(Disk.PartKey, part); disk.Write(DatItem.RemoveKey, (bool?)false); - disk.Write(DatItem.SourceKey, source); + disk.Source = source; Rom actual = disk.ConvertToRom(); @@ -61,7 +61,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.NotNull(actualPart); Assert.Equal("name", actualPart.Name); - Source? actualSource = actual.Read(DatItem.SourceKey); + Source? actualSource = actual.Source; Assert.NotNull(actualSource); Assert.Equal(0, actualSource.Index); Assert.Equal("XXXXXX", actualSource.Name); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index 8d2d4d41..ea8e7f85 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -29,9 +29,9 @@ namespace SabreTools.Metadata.DatItems.Formats.Test file.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); file.Machine = machine; file.Write(DatItem.RemoveKey, (bool?)false); - file.Write(DatItem.SourceKey, source); + file.Source = source; file.Machine = machine; - file.Write(DatItem.SourceKey, source); + file.Source = source; Rom actual = file.ConvertToRom(); @@ -49,7 +49,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); - Source? actualSource = actual.Read(DatItem.SourceKey); + Source? actualSource = actual.Source; Assert.NotNull(actualSource); Assert.Equal(0, actualSource.Index); Assert.Equal("XXXXXX", actualSource.Name); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index 5d7f127c..9584c5ed 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -24,7 +24,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test media.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); media.Machine = machine; media.Write(DatItem.RemoveKey, (bool?)false); - media.Write(DatItem.SourceKey, source); + media.Source = source; Rom actual = media.ConvertToRom(); @@ -41,7 +41,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(false, actual.ReadBool(DatItem.RemoveKey)); - Source? actualSource = actual.Read(DatItem.SourceKey); + Source? actualSource = actual.Source; Assert.NotNull(actualSource); Assert.Equal(0, actualSource.Index); Assert.Equal("XXXXXX", actualSource.Name); diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index bb1b43b2..0cd46be7 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -68,11 +68,6 @@ namespace SabreTools.Metadata.DatItems /// public const string RemoveKey = "REMOVE"; - /// - /// Source information - /// - public const string SourceKey = "SOURCE"; - #endregion #region Fields @@ -87,6 +82,11 @@ namespace SabreTools.Metadata.DatItems /// public Machine? Machine { get; set; } + /// + /// Source information + /// + public Source? Source { get; set; } + #endregion #region Logging @@ -199,12 +199,6 @@ namespace SabreTools.Metadata.DatItems if (other is not DatItem otherItem) return false; - // Compare machines - if ((Machine is null) ^ (otherItem.Machine is null)) - return false; - if (Machine is not null && !Machine.Equals(otherItem.Machine)) - return false; - // Compare internal models return _internal.Equals(otherItem); } @@ -220,18 +214,8 @@ namespace SabreTools.Metadata.DatItems if (other is null) return false; - // Get the types for comparison - Data.Models.Metadata.ItemType selfType = ItemType; - Data.Models.Metadata.ItemType otherType = other.ItemType; - // If we don't have a matched type, return false - if (selfType != otherType) - return false; - - // Compare machines - if ((Machine is null) ^ (other.Machine is null)) - return false; - if (Machine is not null && !Machine.Equals(other.Machine)) + if (ItemType != other.ItemType) return false; // Compare the internal models diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs index d6b81041..52cf9b9c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs +++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs @@ -50,7 +50,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Adjuster(Data.Models.Metadata.Adjuster item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs index 7707b5a0..22fa8417 100644 --- a/SabreTools.Metadata.DatItems/Formats/Analog.cs +++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Analog(Data.Models.Metadata.Analog item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs index ed358eb9..fefa762a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Archive.cs +++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Archive(Data.Models.Metadata.Archive item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs index 12403a17..dea4e0a7 100644 --- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs +++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs @@ -40,7 +40,7 @@ namespace SabreTools.Metadata.DatItems.Formats public BiosSet(Data.Models.Metadata.BiosSet item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Blank.cs b/SabreTools.Metadata.DatItems/Formats/Blank.cs index a386f590..c9f0dd8c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Blank.cs +++ b/SabreTools.Metadata.DatItems/Formats/Blank.cs @@ -18,7 +18,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Blank(Data.Models.Metadata.Blank item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 7b3a26cf..122ddb41 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -46,7 +46,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Chip(Data.Models.Metadata.Chip item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index f730e526..e5eacb91 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -46,7 +46,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Condition(Data.Models.Metadata.Condition item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs index 4a75faff..5f1687bc 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public ConfLocation(Data.Models.Metadata.ConfLocation item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs index cb15271b..550f7484 100644 --- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs +++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs @@ -56,7 +56,7 @@ namespace SabreTools.Metadata.DatItems.Formats public ConfSetting(Data.Models.Metadata.ConfSetting item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs index 66d28ed9..845b6b91 100644 --- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs +++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs @@ -91,7 +91,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Configuration(Data.Models.Metadata.Configuration item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 2e8128c2..29b349d0 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -64,7 +64,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Control(Data.Models.Metadata.Control item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index bca04814..f1305250 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -45,7 +45,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DataArea(Data.Models.Metadata.DataArea item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 726b54b1..c4f2d9c7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -86,7 +86,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Device(Data.Models.Metadata.Device item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs index eef43874..c8f286cd 100644 --- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs +++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DeviceRef(Data.Models.Metadata.DeviceRef item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs index f56cff1b..4ab2c47f 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DipLocation(Data.Models.Metadata.DipLocation item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs index 1cc7b99e..36f02b7f 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs @@ -119,7 +119,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DipSwitch(Data.Models.Metadata.DipSwitch item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs index b22e7cad..7f22f873 100644 --- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs +++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs @@ -56,7 +56,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DipValue(Data.Models.Metadata.DipValue item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 5599c355..6b1d9da9 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -100,7 +100,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Disk(Data.Models.Metadata.Disk item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } @@ -133,7 +133,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Machine = Machine?.Clone() as Machine; rom.Write(Rom.PartKey, Read(PartKey)?.Clone() as Part); rom.Write(RemoveKey, ReadBool(RemoveKey)); - rom.Write(SourceKey, Read(SourceKey)?.Clone() as Source); + rom.Source = Source?.Clone() as Source; return rom; } diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs index e804e0f7..c20895d9 100644 --- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs @@ -29,7 +29,7 @@ namespace SabreTools.Metadata.DatItems.Formats public DiskArea(Data.Models.Metadata.DiskArea item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index de1e3f89..f85e4b1f 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -87,7 +87,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Display(Data.Models.Metadata.Display item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } @@ -138,7 +138,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Display(Data.Models.Metadata.Video item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 9c862f65..18005767 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -94,7 +94,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Driver(Data.Models.Metadata.Driver item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs index a66c0b4b..29e8511b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Extension.cs +++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Extension(Data.Models.Metadata.Extension item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index a7e43bfd..cf3ed219 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -52,7 +52,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Feature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 9ea0049e..0d2b3f77 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -123,7 +123,7 @@ namespace SabreTools.Metadata.DatItems.Formats file.Write(DupeTypeKey, Read(DupeTypeKey)); file.Machine = Machine!.Clone() as Machine ?? new Machine(); file.Write(RemoveKey, ReadBool(RemoveKey)); - file.Write(SourceKey, Read(SourceKey)); + file.Source = Source?.Clone() as Source; return file; } @@ -146,7 +146,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(DupeTypeKey, Read(DupeTypeKey)); rom.Machine = Machine?.Clone() as Machine; rom.Write(RemoveKey, ReadBool(RemoveKey)); - rom.Write(SourceKey, Read(SourceKey)); + rom.Source = Source?.Clone() as Source; return rom; } diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs index 64546651..1029e8d7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Info.cs +++ b/SabreTools.Metadata.DatItems/Formats/Info.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Info(Data.Models.Metadata.Info item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs index 662d90f8..15ad3e0d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Input.cs +++ b/SabreTools.Metadata.DatItems/Formats/Input.cs @@ -67,7 +67,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Input(Data.Models.Metadata.Input item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs index 33798be1..b6d48d6b 100644 --- a/SabreTools.Metadata.DatItems/Formats/Instance.cs +++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Instance(Data.Models.Metadata.Instance item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index c10c4852..d2cc9ac3 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Media(Data.Models.Metadata.Media item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } @@ -70,7 +70,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(DupeTypeKey, Read(DupeTypeKey)); rom.Machine = Machine?.Clone() as Machine; rom.Write(RemoveKey, ReadBool(RemoveKey)); - rom.Write(SourceKey, Read(SourceKey)); + rom.Source = Source?.Clone() as Source; return rom; } diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs index 8474612d..ac9fedc7 100644 --- a/SabreTools.Metadata.DatItems/Formats/Part.cs +++ b/SabreTools.Metadata.DatItems/Formats/Part.cs @@ -45,7 +45,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Part(Data.Models.Metadata.Part item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index 8af708d3..edf85427 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -65,7 +65,7 @@ namespace SabreTools.Metadata.DatItems.Formats public PartFeature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs index fcbe2fde..fbc8da0a 100644 --- a/SabreTools.Metadata.DatItems/Formats/Port.cs +++ b/SabreTools.Metadata.DatItems/Formats/Port.cs @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Port(Data.Models.Metadata.Port item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs index a0e8c761..a7334869 100644 --- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs @@ -40,7 +40,7 @@ namespace SabreTools.Metadata.DatItems.Formats public RamOption(Data.Models.Metadata.RamOption item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs index 40ed9d3f..243badab 100644 --- a/SabreTools.Metadata.DatItems/Formats/Release.cs +++ b/SabreTools.Metadata.DatItems/Formats/Release.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Release(Data.Models.Metadata.Release item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs index fb8da182..5b639242 100644 --- a/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/ReleaseDetails.cs @@ -18,7 +18,7 @@ namespace SabreTools.Metadata.DatItems.Formats public ReleaseDetails(Data.Models.Metadata.ReleaseDetails item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } #endregion diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 3c15015f..278f679c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -175,7 +175,7 @@ namespace SabreTools.Metadata.DatItems.Formats Write(Data.Models.Metadata.Rom.RemarkKey, rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)); Write(Data.Models.Metadata.Rom.SHA1Key, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Write(Data.Models.Metadata.Rom.StartKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); - Write(SourceKey, source); + Source = source; var original = item.Read(Dump.OriginalKey); if (original is not null) @@ -307,7 +307,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Rom(Data.Models.Metadata.Rom item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs index 70bf04fd..6ceb2d03 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sample.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs @@ -28,7 +28,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Sample(Data.Models.Metadata.Sample item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Serials.cs b/SabreTools.Metadata.DatItems/Formats/Serials.cs index ddc47806..a9e376d6 100644 --- a/SabreTools.Metadata.DatItems/Formats/Serials.cs +++ b/SabreTools.Metadata.DatItems/Formats/Serials.cs @@ -18,7 +18,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Serials(Data.Models.Metadata.Serials item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs index 33bc294e..0a587947 100644 --- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs +++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs @@ -34,7 +34,7 @@ namespace SabreTools.Metadata.DatItems.Formats public SharedFeat(Data.Models.Metadata.SharedFeat item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs index 43223404..5fe28517 100644 --- a/SabreTools.Metadata.DatItems/Formats/Slot.cs +++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs @@ -48,7 +48,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Slot(Data.Models.Metadata.Slot item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs index 280084ad..aa012659 100644 --- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs +++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs @@ -40,7 +40,7 @@ namespace SabreTools.Metadata.DatItems.Formats public SlotOption(Data.Models.Metadata.SlotOption item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index ed4694d4..4e6b6293 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -50,7 +50,7 @@ namespace SabreTools.Metadata.DatItems.Formats public SoftwareList(Data.Models.Metadata.SoftwareList item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs index b0c6b9fa..aa40ea59 100644 --- a/SabreTools.Metadata.DatItems/Formats/Sound.cs +++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs @@ -24,7 +24,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Sound(Data.Models.Metadata.Sound item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs index 4f45ed10..d176b7b5 100644 --- a/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.Metadata.DatItems/Formats/SourceDetails.cs @@ -18,7 +18,7 @@ namespace SabreTools.Metadata.DatItems.Formats public SourceDetails(Data.Models.Metadata.SourceDetails item, Machine machine, Source source) : this(item) { - Write(SourceKey, source); + Source = source; CopyMachineInformation(machine); } diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index d0c1599a..b92f67b3 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -193,6 +193,32 @@ namespace SabreTools.Metadata.DatItems if (other is null) return false; + // Properties + if ((Description is null) ^ (other.Description is null)) + return false; + if (Description is not null && !Description.Equals(other.Description, StringComparison.OrdinalIgnoreCase)) + return false; + + if (IsBios != other.IsBios) + return false; + + if (IsDevice != other.IsDevice) + return false; + + if (IsMechanical != other.IsMechanical) + return false; + + if ((Name is null) ^ (other.Name is null)) + return false; + if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase)) + return false; + + if (Runnable != other.Runnable) + return false; + + if (Supported != other.Supported) + return false; + // Compare internal models return _internal.EqualTo(other._internal); } diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index f8b0a28e..5af2c364 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -13,6 +13,7 @@ namespace SabreTools.Metadata /// /// Check equality of two DictionaryBase objects /// + /// TODO: Fix equality checking with case sensitivity of string properties public static bool EqualTo(this DictionaryBase self, DictionaryBase other) { // Check types first @@ -59,6 +60,279 @@ namespace SabreTools.Metadata if (self.GetName() != other.GetName()) return false; + // Handle individual type properties + if (self is Adjuster selfAdjuster && other is Adjuster cloneAdjuster) + { + if (selfAdjuster.Default != cloneAdjuster.Default) + return false; + } + else if (self is Analog selfAnalog && other is Analog cloneAnalog) + { + if (selfAnalog.Mask != cloneAnalog.Mask) + return false; + } + else if (self is Archive selfArchive && other is Archive cloneArchive) + { + if (selfArchive.Description != cloneArchive.Description) + return false; + } + else if (self is BiosSet selfBiosSet && other is BiosSet cloneBiosSet) + { + if (selfBiosSet.Default != cloneBiosSet.Default) + return false; + if (selfBiosSet.Description != cloneBiosSet.Description) + return false; + } + else if (self is Chip selfChip && other is Chip cloneChip) + { + if (selfChip.ChipType != cloneChip.ChipType) + return false; + if (selfChip.SoundOnly != cloneChip.SoundOnly) + return false; + if (selfChip.Tag != cloneChip.Tag) + return false; + } + else if (self is Condition selfCondition && other is Condition cloneCondition) + { + if (selfCondition.Mask != cloneCondition.Mask) + return false; + if (selfCondition.Relation != cloneCondition.Relation) + return false; + if (selfCondition.Tag != cloneCondition.Tag) + return false; + if (selfCondition.Value != cloneCondition.Value) + return false; + } + else if (self is Configuration selfConfiguration && other is Configuration cloneConfiguration) + { + if (selfConfiguration.Mask != cloneConfiguration.Mask) + return false; + if (selfConfiguration.Tag != cloneConfiguration.Tag) + return false; + } + else if (self is ConfLocation selfConfLocation && other is ConfLocation cloneConfLocation) + { + if (selfConfLocation.Inverted != cloneConfLocation.Inverted) + return false; + } + else if (self is ConfSetting selfConfSetting && other is ConfSetting cloneConfSetting) + { + if (selfConfSetting.Default != cloneConfSetting.Default) + return false; + if (selfConfSetting.Value != cloneConfSetting.Value) + return false; + } + else if (self is Control selfControl && other is Control cloneControl) + { + if (selfControl.ControlType != cloneControl.ControlType) + return false; + if (selfControl.Reverse != cloneControl.Reverse) + return false; + } + else if (self is DataArea selfDataArea && other is DataArea cloneDataArea) + { + if (selfDataArea.Endianness != cloneDataArea.Endianness) + return false; + } + else if (self is Device selfDevice && other is Device cloneDevice) + { + if (selfDevice.DeviceType != cloneDevice.DeviceType) + return false; + if (selfDevice.FixedImage != cloneDevice.FixedImage) + return false; + if (selfDevice.Interface != cloneDevice.Interface) + return false; + if (selfDevice.Mandatory != cloneDevice.Mandatory) + return false; + if (selfDevice.Tag != cloneDevice.Tag) + return false; + } + else if (self is DipLocation selfDipLocation && other is DipLocation cloneDipLocation) + { + if (selfDipLocation.Inverted != cloneDipLocation.Inverted) + return false; + } + else if (self is DipSwitch selfDipSwitch && other is DipSwitch cloneDipSwitch) + { + if (selfDipSwitch.Default != cloneDipSwitch.Default) + return false; + if (selfDipSwitch.Mask != cloneDipSwitch.Mask) + return false; + if (selfDipSwitch.Tag != cloneDipSwitch.Tag) + return false; + } + else if (self is DipValue selfDipValue && other is DipValue cloneDipValue) + { + if (selfDipValue.Default != cloneDipValue.Default) + return false; + if (selfDipValue.Value != cloneDipValue.Value) + return false; + } + else if (self is Display selfDisplay && other is Display cloneDisplay) + { + if (selfDisplay.DisplayType != cloneDisplay.DisplayType) + return false; + if (selfDisplay.FlipX != cloneDisplay.FlipX) + return false; + if (selfDisplay.Tag != cloneDisplay.Tag) + return false; + } + else if (self is Driver selfDriver && other is Driver cloneDriver) + { + if (selfDriver.Blit != cloneDriver.Blit) + return false; + if (selfDriver.Cocktail != cloneDriver.Cocktail) + return false; + if (selfDriver.Color != cloneDriver.Color) + return false; + if (selfDriver.Emulation != cloneDriver.Emulation) + return false; + if (selfDriver.Incomplete != cloneDriver.Incomplete) + return false; + if (selfDriver.NoSoundHardware != cloneDriver.NoSoundHardware) + return false; + if (selfDriver.RequiresArtwork != cloneDriver.RequiresArtwork) + return false; + if (selfDriver.SaveState != cloneDriver.SaveState) + return false; + if (selfDriver.Sound != cloneDriver.Sound) + return false; + if (selfDriver.Status != cloneDriver.Status) + return false; + if (selfDriver.Unofficial != cloneDriver.Unofficial) + return false; + } + else if (self is Feature selfFeature && other is Feature cloneFeature) + { + if (selfFeature.FeatureType != cloneFeature.FeatureType) + return false; + if (selfFeature.Overall != cloneFeature.Overall) + return false; + if (selfFeature.Status != cloneFeature.Status) + return false; + if (selfFeature.Value != cloneFeature.Value) + return false; + } + else if (self is Header selfHeader && other is Header cloneHeader) + { + if (selfHeader.BiosMode != cloneHeader.BiosMode) + return false; + if (selfHeader.Debug != cloneHeader.Debug) + return false; + if (selfHeader.Description != cloneHeader.Description) + return false; + if (selfHeader.ForceMerging != cloneHeader.ForceMerging) + return false; + if (selfHeader.ForceNodump != cloneHeader.ForceNodump) + return false; + if (selfHeader.ForcePacking != cloneHeader.ForcePacking) + return false; + if (selfHeader.ForceZipping != cloneHeader.ForceZipping) + return false; + if (selfHeader.LockBiosMode != cloneHeader.LockBiosMode) + return false; + if (selfHeader.LockRomMode != cloneHeader.LockRomMode) + return false; + if (selfHeader.LockSampleMode != cloneHeader.LockSampleMode) + return false; + if (selfHeader.RomMode != cloneHeader.RomMode) + return false; + if (selfHeader.SampleMode != cloneHeader.SampleMode) + return false; + } + else if (self is Info selfInfo && other is Info cloneInfo) + { + if (selfInfo.Value != cloneInfo.Value) + return false; + } + else if (self is Input selfInput && other is Input cloneInput) + { + if (selfInput.Service != cloneInput.Service) + return false; + if (selfInput.Tilt != cloneInput.Tilt) + return false; + } + else if (self is Instance selfInstance && other is Instance cloneInstance) + { + if (selfInstance.BriefName != cloneInstance.BriefName) + return false; + } + else if (self is Machine selfMachine && other is Machine cloneMachine) + { + if (selfMachine.Description != cloneMachine.Description) + return false; + if (selfMachine.IsBios != cloneMachine.IsBios) + return false; + if (selfMachine.IsDevice != cloneMachine.IsDevice) + return false; + if (selfMachine.IsMechanical != cloneMachine.IsMechanical) + return false; + if (selfMachine.Runnable != cloneMachine.Runnable) + return false; + if (selfMachine.Supported != cloneMachine.Supported) + return false; + } + else if (self is Original selfOriginal && other is Original cloneOriginal) + { + if (selfOriginal.Content != cloneOriginal.Content) + return false; + } + else if (self is Part selfPart && other is Part clonePart) + { + if (selfPart.Interface != clonePart.Interface) + return false; + } + else if (self is Port selfPort && other is Port clonePort) + { + if (selfPort.Tag != clonePort.Tag) + return false; + } + else if (self is RamOption selfRamOption && other is RamOption cloneRamOption) + { + if (selfRamOption.Content != cloneRamOption.Content) + return false; + if (selfRamOption.Default != cloneRamOption.Default) + return false; + } + else if (self is Release selfRelease && other is Release cloneRelease) + { + if (selfRelease.Default != cloneRelease.Default) + return false; + } + else if (self is SharedFeat selfSharedFeat && other is SharedFeat cloneSharedFeat) + { + if (selfSharedFeat.Value != cloneSharedFeat.Value) + return false; + } + else if (self is SlotOption selfSlotOption && other is SlotOption cloneSlotOption) + { + if (selfSlotOption.Default != cloneSlotOption.Default) + return false; + if (selfSlotOption.DevName != cloneSlotOption.DevName) + return false; + } + else if (self is Software selfSoftware && other is Software cloneSoftware) + { + if (selfSoftware.Description != cloneSoftware.Description) + return false; + if (selfSoftware.Supported != cloneSoftware.Supported) + return false; + } + else if (self is SoftwareList selfSoftwareList && other is SoftwareList cloneSoftwareList) + { + if (selfSoftwareList.Description != cloneSoftwareList.Description) + return false; + if (selfSoftwareList.Status != cloneSoftwareList.Status) + return false; + if (selfSoftwareList.Tag != cloneSoftwareList.Tag) + return false; + } + else if (self is Video selfVideo && other is Video cloneVideo) + { + if (selfVideo.Screen != cloneVideo.Screen) + return false; + } + // Check all pairs to see if they're equal foreach (var kvp in self) {