From 9828119bddde98ad754ed64cb708c93e3be3a5d2 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 12:31:47 -0400 Subject: [PATCH] Further reduce use of GetName and SetName --- .../MetadataExtensions.cs | 8 +- SabreTools.Metadata.Filter/FilterObject.cs | 103 ++++++++++++++++-- .../DictionaryBaseExtensions.cs | 4 +- 3 files changed, 103 insertions(+), 12 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 64f17a16..be23605c 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -15,6 +15,7 @@ namespace SabreTools.Data.Extensions /// /// Gets the name to use for a DictionaryBase or null /// + /// TODO: Determine if this can be removed public static string? GetName(this DictionaryBase self) { if (self is null) @@ -75,6 +76,7 @@ namespace SabreTools.Data.Extensions /// /// Gets the name to use for a DictionaryBase or null /// + /// TODO: Determine if this can be removed public static void SetName(this DictionaryBase self, string? name) { if (self is null || string.IsNullOrEmpty(name)) @@ -211,6 +213,8 @@ namespace SabreTools.Data.Extensions return releaseDetails.Clone() as ReleaseDetails; else if (self is Rom rom) return rom.Clone() as Rom; + else if (self is Sample sample) + return sample.Clone() as Sample; else if (self is Serials serials) return serials.Clone() as Serials; else if (self is SharedFeat sharedFeat) @@ -300,6 +304,7 @@ namespace SabreTools.Data.Extensions cloneMachine.Language = selfMachine.Language; cloneMachine.Location = selfMachine.Location; cloneMachine.Manufacturer = selfMachine.Manufacturer; + cloneMachine.Name = selfMachine.Name; cloneMachine.Notes = selfMachine.Notes; cloneMachine.PlayedCount = selfMachine.PlayedCount; cloneMachine.PlayedTime = selfMachine.PlayedTime; @@ -322,9 +327,6 @@ namespace SabreTools.Data.Extensions cloneMachine.Year = selfMachine.Year; } - // Handle known properties - clone.SetName(self.GetName()); - // Loop through and clone per type foreach (string key in self.Keys) { diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 77945415..45426cad 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -338,19 +338,15 @@ namespace SabreTools.Metadata.Filter /// private static bool GetCheckValue(DictionaryBase dictionaryBase, string fieldName, out string? checkValue) { - // Handle the common name field - if (fieldName == "name") - { - checkValue = dictionaryBase.GetName(); - return true; - } - // Handle type-specific properties switch (dictionaryBase) { case Adjuster item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case Adjuster item when fieldName == "name": + checkValue = item.Name; + return true; case Analog item when fieldName == "mask": checkValue = item.Mask; @@ -413,6 +409,9 @@ namespace SabreTools.Metadata.Filter case Archive item when fieldName == "mergename": checkValue = item.MergeName; return true; + case Archive item when fieldName == "name": + checkValue = item.Name; + return true; case Archive item when fieldName == "namealt": checkValue = item.NameAlt; return true; @@ -459,6 +458,9 @@ namespace SabreTools.Metadata.Filter case BiosSet item when fieldName == "description": checkValue = item.Description; return true; + case BiosSet item when fieldName == "name": + checkValue = item.Name; + return true; case Chip item when fieldName == "type": checkValue = item.ChipType?.AsStringValue(); @@ -469,6 +471,9 @@ namespace SabreTools.Metadata.Filter case Chip item when fieldName == "flags": checkValue = item.Flags; return true; + case Chip item when fieldName == "name": + checkValue = item.Name; + return true; case Chip item when fieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; @@ -492,6 +497,9 @@ namespace SabreTools.Metadata.Filter case Configuration item when fieldName == "mask": checkValue = item.Mask; return true; + case Configuration item when fieldName == "name": + checkValue = item.Name; + return true; case Configuration item when fieldName == "tag": checkValue = item.Tag; return true; @@ -499,6 +507,9 @@ namespace SabreTools.Metadata.Filter case ConfLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; + case ConfLocation item when fieldName == "name": + checkValue = item.Name; + return true; case ConfLocation item when fieldName == "number": checkValue = item.Number?.ToString(); return true; @@ -506,6 +517,9 @@ namespace SabreTools.Metadata.Filter case ConfSetting item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case ConfSetting item when fieldName == "name": + checkValue = item.Name; + return true; case ConfSetting item when fieldName == "value": checkValue = item.Value; return true; @@ -550,6 +564,9 @@ namespace SabreTools.Metadata.Filter case DataArea item when fieldName == "endianness": checkValue = item.Endianness?.AsStringValue(); return true; + case DataArea item when fieldName == "name": + checkValue = item.Name; + return true; case DataArea item when fieldName == "size": checkValue = item.Size?.ToString(); return true; @@ -573,9 +590,16 @@ namespace SabreTools.Metadata.Filter checkValue = item.Tag; return true; + case DeviceRef item when fieldName == "name": + checkValue = item.Name; + return true; + case DipLocation item when fieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; + case DipLocation item when fieldName == "name": + checkValue = item.Name; + return true; case DipLocation item when fieldName == "number": checkValue = item.Number?.ToString(); return true; @@ -586,6 +610,9 @@ namespace SabreTools.Metadata.Filter case DipSwitch item when fieldName == "mask": checkValue = item.Mask; return true; + case DipSwitch item when fieldName == "name": + checkValue = item.Name; + return true; case DipSwitch item when fieldName == "tag": checkValue = item.Tag; return true; @@ -593,6 +620,9 @@ namespace SabreTools.Metadata.Filter case DipValue item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case DipValue item when fieldName == "name": + checkValue = item.Name; + return true; case DipValue item when fieldName == "value": checkValue = item.Value; return true; @@ -609,6 +639,9 @@ namespace SabreTools.Metadata.Filter case Disk item when fieldName == "merge": checkValue = item.Merge; return true; + case Disk item when fieldName == "name": + checkValue = item.Name; + return true; case Disk item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; @@ -625,6 +658,10 @@ namespace SabreTools.Metadata.Filter checkValue = item.Writable.FromYesNo(); return true; + case DiskArea item when fieldName == "name": + checkValue = item.Name; + return true; + case Display item when fieldName == "aspectx": checkValue = item.AspectX?.ToString(); return true; @@ -711,6 +748,13 @@ namespace SabreTools.Metadata.Filter checkValue = item.Unofficial.FromYesNo(); return true; + case Extension item when fieldName == "name": + checkValue = item.Name; + return true; + + case Feature item when fieldName == "name": + checkValue = item.Name; + return true; case Feature item when fieldName == "overall": checkValue = item.Overall?.AsStringValue(); return true; @@ -787,6 +831,9 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "mameconfig": checkValue = item.MameConfig; return true; + case Header item when fieldName == "name": + checkValue = item.Name; + return true; case Header item when fieldName == "notes": checkValue = item.Notes; return true; @@ -824,6 +871,9 @@ namespace SabreTools.Metadata.Filter checkValue = item.Version; return true; + case Info item when fieldName == "name": + checkValue = item.Name; + return true; case Info item when fieldName == "value": checkValue = item.Value; return true; @@ -847,6 +897,10 @@ namespace SabreTools.Metadata.Filter checkValue = item.Tilt.FromYesNo(); return true; + case Instance item when fieldName == "name": + checkValue = item.Name; + return true; + case Machine item when fieldName == "board": checkValue = item.Board; return true; @@ -931,6 +985,9 @@ namespace SabreTools.Metadata.Filter case Machine item when fieldName == "manufacturer": checkValue = item.Manufacturer; return true; + case Machine item when fieldName == "name": + checkValue = item.Name; + return true; case Machine item when fieldName == "notes": checkValue = item.Notes; return true; @@ -995,6 +1052,9 @@ namespace SabreTools.Metadata.Filter case Media item when fieldName == "md5": checkValue = item.MD5; return true; + case Media item when fieldName == "name": + checkValue = item.Name; + return true; case Media item when fieldName == "sha1": checkValue = item.SHA1; return true; @@ -1015,6 +1075,9 @@ namespace SabreTools.Metadata.Filter case Part item when fieldName == "interface": checkValue = item.Interface; return true; + case Part item when fieldName == "name": + checkValue = item.Name; + return true; case Port item when fieldName == "tag": checkValue = item.Tag; @@ -1026,6 +1089,9 @@ namespace SabreTools.Metadata.Filter case RamOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case RamOption item when fieldName == "name": + checkValue = item.Name; + return true; case Release item when fieldName == "date": checkValue = item.Date; @@ -1036,6 +1102,9 @@ namespace SabreTools.Metadata.Filter case Release item when fieldName == "language": checkValue = item.Language; return true; + case Release item when fieldName == "name": + checkValue = item.Name; + return true; case Release item when fieldName == "region": checkValue = item.Region; return true; @@ -1110,6 +1179,9 @@ namespace SabreTools.Metadata.Filter case Rom item when fieldName == "mia": checkValue = item.MIA.FromYesNo(); return true; + case Rom item when fieldName == "name": + checkValue = item.Name; + return true; case Rom item when fieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; @@ -1126,6 +1198,10 @@ namespace SabreTools.Metadata.Filter checkValue = item.Value; return true; + case Sample item when fieldName == "name": + checkValue = item.Name; + return true; + case Serials item when fieldName == "boxbarcode": checkValue = item.BoxBarcode; return true; @@ -1169,20 +1245,33 @@ namespace SabreTools.Metadata.Filter checkValue = item.SaveChipSerial; return true; + case SharedFeat item when fieldName == "name": + checkValue = item.Name; + return true; case SharedFeat item when fieldName == "value": checkValue = item.Value; return true; + case Slot item when fieldName == "name": + checkValue = item.Name; + return true; + case SlotOption item when fieldName == "default": checkValue = item.Default.FromYesNo(); return true; case SlotOption item when fieldName == "devname": checkValue = item.DevName; return true; + case SlotOption item when fieldName == "name": + checkValue = item.Name; + return true; case SoftwareList item when fieldName == "filter": checkValue = item.Filter; return true; + case SoftwareList item when fieldName == "name": + checkValue = item.Name; + return true; case SoftwareList item when fieldName == "status": checkValue = item.Status?.AsStringValue(); return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 47900bdd..7c9fded8 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -58,8 +58,8 @@ namespace SabreTools.Metadata return false; // Check names - if (self.GetName() != other.GetName()) - return false; + // if (self.GetName() != other.GetName()) + // return false; // Handle individual type properties if (self is Adjuster selfAdjuster && other is Adjuster otherAdjuster)