mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-22 14:55:11 +00:00
DictionaryBase is no more, bon voyage
This commit is contained in:
@@ -239,7 +239,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Convert items in the machine
|
||||
if (item.Adjuster is not null)
|
||||
{
|
||||
var items = item.Adjuster ?? [];
|
||||
var items = item.Adjuster;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -251,7 +251,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Archive is not null)
|
||||
{
|
||||
var items = item.Archive ?? [];
|
||||
var items = item.Archive;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -263,7 +263,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.BiosSet is not null)
|
||||
{
|
||||
var items = item.BiosSet ?? [];
|
||||
var items = item.BiosSet;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -275,7 +275,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Chip is not null)
|
||||
{
|
||||
var items = item.Chip ?? [];
|
||||
var items = item.Chip;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -287,7 +287,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Configuration is not null)
|
||||
{
|
||||
var items = item.Configuration ?? [];
|
||||
var items = item.Configuration;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -299,7 +299,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Device is not null)
|
||||
{
|
||||
var items = item.Device ?? [];
|
||||
var items = item.Device;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -311,7 +311,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.DeviceRef is not null)
|
||||
{
|
||||
var items = item.DeviceRef ?? [];
|
||||
var items = item.DeviceRef;
|
||||
// Do not filter these due to later use
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
@@ -323,7 +323,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.DipSwitch is not null)
|
||||
{
|
||||
var items = item.DipSwitch ?? [];
|
||||
var items = item.DipSwitch;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -335,7 +335,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Disk is not null)
|
||||
{
|
||||
var items = item.Disk ?? [];
|
||||
var items = item.Disk;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -347,7 +347,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Display is not null)
|
||||
{
|
||||
var items = item.Display ?? [];
|
||||
var items = item.Display;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -366,7 +366,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Dump is not null)
|
||||
{
|
||||
var items = item.Dump ?? [];
|
||||
var items = item.Dump;
|
||||
for (int i = 0; i < items.Length; i++)
|
||||
{
|
||||
var datItem = new Rom(items[i], machine, source, i);
|
||||
@@ -391,7 +391,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Feature is not null)
|
||||
{
|
||||
var items = item.Feature ?? [];
|
||||
var items = item.Feature;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -403,7 +403,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Info is not null)
|
||||
{
|
||||
var items = item.Info ?? [];
|
||||
var items = item.Info;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -422,7 +422,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Media is not null)
|
||||
{
|
||||
var items = item.Media ?? [];
|
||||
var items = item.Media;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -434,13 +434,13 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Part is not null)
|
||||
{
|
||||
var items = item.Part ?? [];
|
||||
var items = item.Part;
|
||||
ProcessItems(items, machine, machineIndex: 0, source, sourceIndex, statsOnly, filterRunner);
|
||||
}
|
||||
|
||||
if (item.Port is not null)
|
||||
{
|
||||
var items = item.Port ?? [];
|
||||
var items = item.Port;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -452,7 +452,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.RamOption is not null)
|
||||
{
|
||||
var items = item.RamOption ?? [];
|
||||
var items = item.RamOption;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -464,7 +464,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Release is not null)
|
||||
{
|
||||
var items = item.Release ?? [];
|
||||
var items = item.Release;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -476,7 +476,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Rom is not null)
|
||||
{
|
||||
var items = item.Rom ?? [];
|
||||
var items = item.Rom;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -491,7 +491,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Sample is not null)
|
||||
{
|
||||
var items = item.Sample ?? [];
|
||||
var items = item.Sample;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -503,7 +503,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.SharedFeat is not null)
|
||||
{
|
||||
var items = item.SharedFeat ?? [];
|
||||
var items = item.SharedFeat;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -515,7 +515,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Slot is not null)
|
||||
{
|
||||
var items = item.Slot ?? [];
|
||||
var items = item.Slot;
|
||||
// Do not filter these due to later use
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
@@ -527,7 +527,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.SoftwareList is not null)
|
||||
{
|
||||
var items = item.SoftwareList ?? [];
|
||||
var items = item.SoftwareList;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -546,7 +546,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
if (item.Video is not null)
|
||||
{
|
||||
var items = item.Video ?? [];
|
||||
var items = item.Video;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
|
||||
@@ -270,25 +270,19 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
// Create the part in the dictionary, if needed
|
||||
if (!partItems.ContainsKey(partName))
|
||||
partItems[partName] = [];
|
||||
partItems[partName] = new();
|
||||
|
||||
// Copy over string values
|
||||
partItems[partName].Name = partName;
|
||||
if (partItems[partName].Interface == null)
|
||||
partItems[partName].Interface = partItem.Interface;
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(partItems[partName]);
|
||||
|
||||
// If the item has a DataArea mapping
|
||||
if (dataAreaMappings.TryGetValue(partItem, out (Data.Models.Metadata.DataArea, Data.Models.Metadata.Rom) dataAreaMap))
|
||||
{
|
||||
// Get the mapped items
|
||||
var (dataArea, romItem) = dataAreaMap;
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(romItem);
|
||||
|
||||
// Get the data area name and skip if there's none
|
||||
string? dataAreaName = dataArea.Name;
|
||||
if (dataAreaName is not null)
|
||||
@@ -306,16 +300,15 @@ namespace SabreTools.Metadata.DatFiles
|
||||
}
|
||||
else
|
||||
{
|
||||
aggregateDataArea = [];
|
||||
aggregateDataArea.Endianness = dataArea.Endianness;
|
||||
aggregateDataArea.Name = dataArea.Name;
|
||||
aggregateDataArea.Size = dataArea.Size;
|
||||
aggregateDataArea.Width = dataArea.Width;
|
||||
aggregateDataArea = new()
|
||||
{
|
||||
Endianness = dataArea.Endianness,
|
||||
Name = dataArea.Name,
|
||||
Size = dataArea.Size,
|
||||
Width = dataArea.Width,
|
||||
};
|
||||
}
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(aggregateDataArea);
|
||||
|
||||
// Get existing roms as a list
|
||||
var romsArr = aggregateDataArea.Rom ?? [];
|
||||
List<Data.Models.Metadata.Rom> roms = [.. romsArr];
|
||||
@@ -343,9 +336,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Get the mapped items
|
||||
var (diskArea, diskItem) = diskAreaMap;
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(diskItem);
|
||||
|
||||
// Get the disk area name and skip if there's none
|
||||
string? diskAreaName = diskArea.Name;
|
||||
if (diskAreaName is not null)
|
||||
@@ -363,13 +353,10 @@ namespace SabreTools.Metadata.DatFiles
|
||||
}
|
||||
else
|
||||
{
|
||||
aggregateDiskArea = [];
|
||||
aggregateDiskArea = new();
|
||||
aggregateDiskArea.Name = diskArea.Name;
|
||||
}
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(aggregateDiskArea);
|
||||
|
||||
// Get existing disks as a list
|
||||
var disksArr = aggregateDiskArea.Disk ?? [];
|
||||
List<Data.Models.Metadata.Disk> disks = [.. disksArr];
|
||||
@@ -398,9 +385,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
var dipSwitchesArr = partItems[partName].DipSwitch ?? [];
|
||||
List<Data.Models.Metadata.DipSwitch> dipSwitches = [.. dipSwitchesArr];
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(dipSwitchItem);
|
||||
|
||||
// Add the dipswitch
|
||||
dipSwitches.Add(dipSwitchItem);
|
||||
|
||||
@@ -415,9 +399,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
var featuresArr = partItems[partName].Feature ?? [];
|
||||
List<Data.Models.Metadata.Feature> features = [.. featuresArr];
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(featureItem);
|
||||
|
||||
// Add the feature
|
||||
features.Add(featureItem);
|
||||
|
||||
@@ -646,25 +627,19 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
// Create the part in the dictionary, if needed
|
||||
if (!partItems.ContainsKey(partName))
|
||||
partItems[partName] = [];
|
||||
partItems[partName] = new();
|
||||
|
||||
// Copy over string values
|
||||
partItems[partName].Name = partName;
|
||||
if (partItems[partName].Interface == null)
|
||||
partItems[partName].Interface = partItem.Interface;
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(partItems[partName]);
|
||||
|
||||
// If the item has a DataArea mapping
|
||||
if (dataAreaMappings.TryGetValue(partItem, out (Data.Models.Metadata.DataArea, Data.Models.Metadata.Rom) dataAreaMap))
|
||||
{
|
||||
// Get the mapped items
|
||||
var (dataArea, romItem) = dataAreaMap;
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(romItem);
|
||||
|
||||
// Get the data area name and skip if there's none
|
||||
string? dataAreaName = dataArea.Name;
|
||||
if (dataAreaName is not null)
|
||||
@@ -682,16 +657,13 @@ namespace SabreTools.Metadata.DatFiles
|
||||
}
|
||||
else
|
||||
{
|
||||
aggregateDataArea = [];
|
||||
aggregateDataArea = new();
|
||||
aggregateDataArea.Endianness = dataArea.Endianness;
|
||||
aggregateDataArea.Name = dataArea.Name;
|
||||
aggregateDataArea.Size = dataArea.Size;
|
||||
aggregateDataArea.Width = dataArea.Width;
|
||||
}
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(aggregateDataArea);
|
||||
|
||||
// Get existing roms as a list
|
||||
var romsArr = aggregateDataArea.Rom ?? [];
|
||||
List<Data.Models.Metadata.Rom> roms = [.. romsArr];
|
||||
@@ -719,9 +691,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Get the mapped items
|
||||
var (diskArea, diskItem) = diskAreaMap;
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(diskItem);
|
||||
|
||||
// Get the disk area name and skip if there's none
|
||||
string? diskAreaName = diskArea.Name;
|
||||
if (diskAreaName is not null)
|
||||
@@ -739,13 +708,10 @@ namespace SabreTools.Metadata.DatFiles
|
||||
}
|
||||
else
|
||||
{
|
||||
aggregateDiskArea = [];
|
||||
aggregateDiskArea = new();
|
||||
aggregateDiskArea.Name = diskArea.Name;
|
||||
}
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(aggregateDiskArea);
|
||||
|
||||
// Get existing disks as a list
|
||||
var disksArr = aggregateDiskArea.Disk ?? [];
|
||||
List<Data.Models.Metadata.Disk> disks = [.. disksArr];
|
||||
@@ -774,9 +740,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
var dipSwitchesArr = partItems[partName].DipSwitch ?? [];
|
||||
List<Data.Models.Metadata.DipSwitch> dipSwitches = [.. dipSwitchesArr];
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(dipSwitchItem);
|
||||
|
||||
// Add the dipswitch
|
||||
dipSwitches.Add(dipSwitchItem);
|
||||
|
||||
@@ -791,9 +754,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
var featuresArr = partItems[partName].Feature ?? [];
|
||||
List<Data.Models.Metadata.Feature> features = [.. featuresArr];
|
||||
|
||||
// Clear any empty fields
|
||||
ClearEmptyKeys(featureItem);
|
||||
|
||||
// Add the feature
|
||||
features.Add(featureItem);
|
||||
|
||||
@@ -953,19 +913,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
return romItem;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clear empty keys from a DictionaryBase object
|
||||
/// </summary>
|
||||
private static void ClearEmptyKeys(Data.Models.Metadata.DictionaryBase obj)
|
||||
{
|
||||
string[] fieldNames = [.. obj.Keys];
|
||||
foreach (string fieldName in fieldNames)
|
||||
{
|
||||
if (obj[fieldName] is null)
|
||||
obj.Remove(fieldName);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,10 +96,11 @@ namespace SabreTools.Metadata.DatFiles
|
||||
set => _internal.EmulatorVersion = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// External name of the DAT
|
||||
/// </summary>
|
||||
public string? FileName { get; set; }
|
||||
public string? FileName
|
||||
{
|
||||
get => _internal.FileName;
|
||||
set => _internal.FileName = value;
|
||||
}
|
||||
|
||||
public MergingFlag ForceMerging
|
||||
{
|
||||
@@ -332,7 +333,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
public object Clone() => new DatHeader(GetInternalClone())
|
||||
{
|
||||
DatFormat = DatFormat,
|
||||
FileName = FileName,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user