mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-22 14:55:11 +00:00
Convert most keys to properties for Machine
This commit is contained in:
@@ -237,9 +237,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// long machineIndex = AddMachineDB(machine);
|
||||
|
||||
// Convert items in the machine
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.AdjusterKey))
|
||||
if (item.Adjuster is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Adjuster>(Data.Models.Metadata.Machine.AdjusterKey) ?? [];
|
||||
var items = item.Adjuster ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -249,9 +249,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.ArchiveKey))
|
||||
if (item.Archive is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Archive>(Data.Models.Metadata.Machine.ArchiveKey) ?? [];
|
||||
var items = item.Archive ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -261,9 +261,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.BiosSetKey))
|
||||
if (item.BiosSet is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.BiosSet>(Data.Models.Metadata.Machine.BiosSetKey) ?? [];
|
||||
var items = item.BiosSet ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -273,9 +273,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.ChipKey))
|
||||
if (item.Chip is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Chip>(Data.Models.Metadata.Machine.ChipKey) ?? [];
|
||||
var items = item.Chip ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -285,9 +285,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.ConfigurationKey))
|
||||
if (item.Configuration is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Configuration>(Data.Models.Metadata.Machine.ConfigurationKey) ?? [];
|
||||
var items = item.Configuration ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -297,9 +297,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.DeviceKey))
|
||||
if (item.Device is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Device>(Data.Models.Metadata.Machine.DeviceKey) ?? [];
|
||||
var items = item.Device ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -309,9 +309,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.DeviceRefKey))
|
||||
if (item.DeviceRef is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.DeviceRef>(Data.Models.Metadata.Machine.DeviceRefKey) ?? [];
|
||||
var items = item.DeviceRef ?? [];
|
||||
// Do not filter these due to later use
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
@@ -321,9 +321,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.DipSwitchKey))
|
||||
if (item.DipSwitch is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.DipSwitch>(Data.Models.Metadata.Machine.DipSwitchKey) ?? [];
|
||||
var items = item.DipSwitch ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -333,9 +333,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.DiskKey))
|
||||
if (item.Disk is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Disk>(Data.Models.Metadata.Machine.DiskKey) ?? [];
|
||||
var items = item.Disk ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -345,9 +345,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.DisplayKey))
|
||||
if (item.Display is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Display>(Data.Models.Metadata.Machine.DisplayKey) ?? [];
|
||||
var items = item.Display ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -357,21 +357,16 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.DriverKey))
|
||||
if (item.Driver is not null && filterRunner?.Run(item.Driver) != false)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Driver>(Data.Models.Metadata.Machine.DriverKey) ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
var datItem = new Driver(item, machine, source);
|
||||
AddItem(datItem, statsOnly);
|
||||
// AddItemDB(datItem, machineIndex, sourceIndex, statsOnly);
|
||||
});
|
||||
var datItem = new Driver(item.Driver, machine, source);
|
||||
AddItem(datItem, statsOnly);
|
||||
// AddItemDB(datItem, machineIndex, sourceIndex, statsOnly);
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.DumpKey))
|
||||
if (item.Dump is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Dump>(Data.Models.Metadata.Machine.DumpKey) ?? [];
|
||||
var items = item.Dump ?? [];
|
||||
for (int i = 0; i < items.Length; i++)
|
||||
{
|
||||
var datItem = new Rom(items[i], machine, source, i);
|
||||
@@ -383,9 +378,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
}
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.FeatureKey))
|
||||
if (item.Feature is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Feature>(Data.Models.Metadata.Machine.FeatureKey) ?? [];
|
||||
var items = item.Feature ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -395,9 +390,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.InfoKey))
|
||||
if (item.Info is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Info>(Data.Models.Metadata.Machine.InfoKey) ?? [];
|
||||
var items = item.Info ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -407,21 +402,16 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.InputKey))
|
||||
if (item.Input is not null && filterRunner?.Run(item.Input) != false)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Input>(Data.Models.Metadata.Machine.InputKey) ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
var datItem = new Input(item, machine, source);
|
||||
AddItem(datItem, statsOnly);
|
||||
// AddItemDB(datItem, machineIndex, sourceIndex, statsOnly);
|
||||
});
|
||||
var datItem = new Input(item.Input, machine, source);
|
||||
AddItem(datItem, statsOnly);
|
||||
// AddItemDB(datItem, machineIndex, sourceIndex, statsOnly);
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.MediaKey))
|
||||
if (item.Media is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Media>(Data.Models.Metadata.Machine.MediaKey) ?? [];
|
||||
var items = item.Media ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -431,15 +421,15 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.PartKey))
|
||||
if (item.Part is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Part>(Data.Models.Metadata.Machine.PartKey) ?? [];
|
||||
var items = item.Part ?? [];
|
||||
ProcessItems(items, machine, machineIndex: 0, source, sourceIndex, statsOnly, filterRunner);
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.PortKey))
|
||||
if (item.Port is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Port>(Data.Models.Metadata.Machine.PortKey) ?? [];
|
||||
var items = item.Port ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -449,9 +439,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.RamOptionKey))
|
||||
if (item.RamOption is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.RamOption>(Data.Models.Metadata.Machine.RamOptionKey) ?? [];
|
||||
var items = item.RamOption ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -461,9 +451,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.ReleaseKey))
|
||||
if (item.Release is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Release>(Data.Models.Metadata.Machine.ReleaseKey) ?? [];
|
||||
var items = item.Release ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -473,9 +463,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.RomKey))
|
||||
if (item.Rom is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Rom>(Data.Models.Metadata.Machine.RomKey) ?? [];
|
||||
var items = item.Rom ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -488,9 +478,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.SampleKey))
|
||||
if (item.Sample is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Sample>(Data.Models.Metadata.Machine.SampleKey) ?? [];
|
||||
var items = item.Sample ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -500,9 +490,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.SharedFeatKey))
|
||||
if (item.SharedFeat is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.SharedFeat>(Data.Models.Metadata.Machine.SharedFeatKey) ?? [];
|
||||
var items = item.SharedFeat ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -512,9 +502,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.SlotKey))
|
||||
if (item.Slot is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Slot>(Data.Models.Metadata.Machine.SlotKey) ?? [];
|
||||
var items = item.Slot ?? [];
|
||||
// Do not filter these due to later use
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
@@ -524,9 +514,9 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.SoftwareListKey))
|
||||
if (item.SoftwareList is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.SoftwareList>(Data.Models.Metadata.Machine.SoftwareListKey) ?? [];
|
||||
var items = item.SoftwareList ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
@@ -536,21 +526,16 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.SoundKey))
|
||||
if (item.Sound is not null && filterRunner?.Run(item.Sound) != false)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Sound>(Data.Models.Metadata.Machine.SoundKey) ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
var datItem = new Sound(item, machine, source);
|
||||
AddItem(datItem, statsOnly);
|
||||
// AddItemDB(datItem, machineIndex, sourceIndex, statsOnly);
|
||||
});
|
||||
var datItem = new Sound(item.Sound, machine, source);
|
||||
AddItem(datItem, statsOnly);
|
||||
// AddItemDB(datItem, machineIndex, sourceIndex, statsOnly);
|
||||
}
|
||||
|
||||
if (item.ContainsKey(Data.Models.Metadata.Machine.VideoKey))
|
||||
if (item.Video is not null)
|
||||
{
|
||||
var items = item.ReadArray<Data.Models.Metadata.Video>(Data.Models.Metadata.Machine.VideoKey) ?? [];
|
||||
var items = item.Video ?? [];
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
{
|
||||
|
||||
@@ -115,43 +115,43 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
case DatItems.Formats.Adjuster adjuster:
|
||||
var adjusterItem = adjuster.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Adjuster?>(machine, Data.Models.Metadata.Machine.AdjusterKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey, adjusterItem);
|
||||
machine.Adjuster ??= [];
|
||||
machine.Adjuster = [.. machine.Adjuster, adjusterItem];
|
||||
break;
|
||||
case DatItems.Formats.Archive archive:
|
||||
var archiveItem = archive.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Archive?>(machine, Data.Models.Metadata.Machine.ArchiveKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey, archiveItem);
|
||||
machine.Archive ??= [];
|
||||
machine.Archive = [.. machine.Archive, archiveItem];
|
||||
break;
|
||||
case DatItems.Formats.BiosSet biosSet:
|
||||
var biosSetItem = biosSet.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.BiosSet?>(machine, Data.Models.Metadata.Machine.BiosSetKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey, biosSetItem);
|
||||
machine.BiosSet ??= [];
|
||||
machine.BiosSet = [.. machine.BiosSet, biosSetItem];
|
||||
break;
|
||||
case DatItems.Formats.Chip chip:
|
||||
var chipItem = chip.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Chip?>(machine, Data.Models.Metadata.Machine.ChipKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.ChipKey, chipItem);
|
||||
machine.Chip ??= [];
|
||||
machine.Chip = [.. machine.Chip, chipItem];
|
||||
break;
|
||||
case DatItems.Formats.Configuration configuration:
|
||||
var configurationItem = configuration.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Configuration?>(machine, Data.Models.Metadata.Machine.ConfigurationKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey, configurationItem);
|
||||
machine.Configuration ??= [];
|
||||
machine.Configuration = [.. machine.Configuration, configurationItem];
|
||||
break;
|
||||
case DatItems.Formats.Device device:
|
||||
var deviceItem = device.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Device?>(machine, Data.Models.Metadata.Machine.DeviceKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey, deviceItem);
|
||||
machine.Device ??= [];
|
||||
machine.Device = [.. machine.Device, deviceItem];
|
||||
break;
|
||||
case DatItems.Formats.DeviceRef deviceRef:
|
||||
var deviceRefItem = deviceRef.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.DeviceRef?>(machine, Data.Models.Metadata.Machine.DeviceRefKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey, deviceRefItem);
|
||||
machine.DeviceRef ??= [];
|
||||
machine.DeviceRef = [.. machine.DeviceRef, deviceRefItem];
|
||||
break;
|
||||
case DatItems.Formats.DipSwitch dipSwitch:
|
||||
var dipSwitchItem = dipSwitch.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.DipSwitch?>(machine, Data.Models.Metadata.Machine.DipSwitchKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey, dipSwitchItem);
|
||||
machine.DipSwitch ??= [];
|
||||
machine.DipSwitch = [.. machine.DipSwitch, dipSwitchItem];
|
||||
|
||||
// Add Part mapping
|
||||
if (dipSwitch.Part is not null)
|
||||
@@ -160,8 +160,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
break;
|
||||
case DatItems.Formats.Disk disk:
|
||||
var diskItem = disk.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Disk?>(machine, Data.Models.Metadata.Machine.DiskKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem);
|
||||
machine.Disk ??= [];
|
||||
machine.Disk = [.. machine.Disk, diskItem];
|
||||
|
||||
// Add Part and DiskArea mappings
|
||||
if (disk.Part is not null && disk.DiskArea is not null)
|
||||
@@ -174,38 +174,34 @@ namespace SabreTools.Metadata.DatFiles
|
||||
break;
|
||||
case DatItems.Formats.Display display:
|
||||
var displayItem = ProcessItem(display, machine);
|
||||
EnsureMachineKey<Data.Models.Metadata.Display?>(machine, Data.Models.Metadata.Machine.DisplayKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey, displayItem);
|
||||
machine.Display ??= [];
|
||||
machine.Display = [.. machine.Display, displayItem];
|
||||
break;
|
||||
case DatItems.Formats.Driver driver:
|
||||
var driverItem = driver.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Driver?>(machine, Data.Models.Metadata.Machine.DriverKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DriverKey, driverItem);
|
||||
machine.Driver = driver.GetInternalClone();
|
||||
break;
|
||||
case DatItems.Formats.Feature feature:
|
||||
var featureItem = feature.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Feature?>(machine, Data.Models.Metadata.Machine.FeatureKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, featureItem);
|
||||
machine.Feature ??= [];
|
||||
machine.Feature = [.. machine.Feature, featureItem];
|
||||
break;
|
||||
case DatItems.Formats.Info info:
|
||||
var infoItem = info.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Info?>(machine, Data.Models.Metadata.Machine.InfoKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.InfoKey, infoItem);
|
||||
machine.Info ??= [];
|
||||
machine.Info = [.. machine.Info, infoItem];
|
||||
break;
|
||||
case DatItems.Formats.Input input:
|
||||
var inputItem = input.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Input?>(machine, Data.Models.Metadata.Machine.InputKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.InputKey, inputItem);
|
||||
machine.Input = input.GetInternalClone();
|
||||
break;
|
||||
case DatItems.Formats.Media media:
|
||||
var mediaItem = media.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Media?>(machine, Data.Models.Metadata.Machine.MediaKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.MediaKey, mediaItem);
|
||||
machine.Media ??= [];
|
||||
machine.Media = [.. machine.Media, mediaItem];
|
||||
break;
|
||||
case DatItems.Formats.PartFeature partFeature:
|
||||
var partFeatureItem = partFeature.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Feature?>(machine, Data.Models.Metadata.Machine.FeatureKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, partFeatureItem);
|
||||
machine.Feature ??= [];
|
||||
machine.Feature = [.. machine.Feature, partFeatureItem];
|
||||
|
||||
// Add Part mapping
|
||||
if (partFeature.Part is not null)
|
||||
@@ -214,23 +210,23 @@ namespace SabreTools.Metadata.DatFiles
|
||||
break;
|
||||
case DatItems.Formats.Port port:
|
||||
var portItem = port.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Port?>(machine, Data.Models.Metadata.Machine.PortKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.PortKey, portItem);
|
||||
machine.Port ??= [];
|
||||
machine.Port = [.. machine.Port, portItem];
|
||||
break;
|
||||
case DatItems.Formats.RamOption ramOption:
|
||||
var ramOptionItem = ramOption.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.RamOption?>(machine, Data.Models.Metadata.Machine.RamOptionKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey, ramOptionItem);
|
||||
machine.RamOption ??= [];
|
||||
machine.RamOption = [.. machine.RamOption, ramOptionItem];
|
||||
break;
|
||||
case DatItems.Formats.Release release:
|
||||
var releaseItem = release.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Release?>(machine, Data.Models.Metadata.Machine.ReleaseKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey, releaseItem);
|
||||
machine.Release ??= [];
|
||||
machine.Release = [.. machine.Release, releaseItem];
|
||||
break;
|
||||
case DatItems.Formats.Rom rom:
|
||||
var romItem = ProcessItem(rom, machine);
|
||||
EnsureMachineKey<Data.Models.Metadata.Rom?>(machine, Data.Models.Metadata.Machine.RomKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.RomKey, romItem);
|
||||
machine.Rom ??= [];
|
||||
machine.Rom = [.. machine.Rom, romItem];
|
||||
|
||||
// Add Part and DataArea mappings
|
||||
if (rom.Part is not null && rom.DataArea is not null)
|
||||
@@ -243,28 +239,26 @@ namespace SabreTools.Metadata.DatFiles
|
||||
break;
|
||||
case DatItems.Formats.Sample sample:
|
||||
var sampleItem = sample.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Sample?>(machine, Data.Models.Metadata.Machine.SampleKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SampleKey, sampleItem);
|
||||
machine.Sample ??= [];
|
||||
machine.Sample = [.. machine.Sample, sampleItem];
|
||||
break;
|
||||
case DatItems.Formats.SharedFeat sharedFeat:
|
||||
var sharedFeatItem = sharedFeat.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.SharedFeat?>(machine, Data.Models.Metadata.Machine.SharedFeatKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey, sharedFeatItem);
|
||||
machine.SharedFeat ??= [];
|
||||
machine.SharedFeat = [.. machine.SharedFeat, sharedFeatItem];
|
||||
break;
|
||||
case DatItems.Formats.Slot slot:
|
||||
var slotItem = slot.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Slot?>(machine, Data.Models.Metadata.Machine.SlotKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SlotKey, slotItem);
|
||||
machine.Slot ??= [];
|
||||
machine.Slot = [.. machine.Slot, slotItem];
|
||||
break;
|
||||
case DatItems.Formats.SoftwareList softwareList:
|
||||
var softwareListItem = softwareList.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.SoftwareList?>(machine, Data.Models.Metadata.Machine.SoftwareListKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey, softwareListItem);
|
||||
machine.SoftwareList ??= [];
|
||||
machine.SoftwareList = [.. machine.SoftwareList, softwareListItem];
|
||||
break;
|
||||
case DatItems.Formats.Sound sound:
|
||||
var soundItem = sound.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Sound?>(machine, Data.Models.Metadata.Machine.SoundKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoundKey, soundItem);
|
||||
machine.Sound = sound.GetInternalClone();
|
||||
break;
|
||||
default:
|
||||
// This should never happen
|
||||
@@ -449,7 +443,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
}
|
||||
|
||||
// Assign the part array to the machine
|
||||
machine[Data.Models.Metadata.Machine.PartKey] = (Data.Models.Metadata.Part[])[.. partItems.Values];
|
||||
machine.Part = [.. partItems.Values];
|
||||
}
|
||||
|
||||
// Add the machine to the list
|
||||
@@ -513,43 +507,43 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
case DatItems.Formats.Adjuster adjuster:
|
||||
var adjusterItem = adjuster.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Adjuster?>(machine, Data.Models.Metadata.Machine.AdjusterKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey, adjusterItem);
|
||||
machine.Adjuster ??= [];
|
||||
machine.Adjuster = [.. machine.Adjuster, adjusterItem];
|
||||
break;
|
||||
case DatItems.Formats.Archive archive:
|
||||
var archiveItem = archive.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Archive?>(machine, Data.Models.Metadata.Machine.ArchiveKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey, archiveItem);
|
||||
machine.Archive ??= [];
|
||||
machine.Archive = [.. machine.Archive, archiveItem];
|
||||
break;
|
||||
case DatItems.Formats.BiosSet biosSet:
|
||||
var biosSetItem = biosSet.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.BiosSet?>(machine, Data.Models.Metadata.Machine.BiosSetKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey, biosSetItem);
|
||||
machine.BiosSet ??= [];
|
||||
machine.BiosSet = [.. machine.BiosSet, biosSetItem];
|
||||
break;
|
||||
case DatItems.Formats.Chip chip:
|
||||
var chipItem = chip.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Chip?>(machine, Data.Models.Metadata.Machine.ChipKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.ChipKey, chipItem);
|
||||
machine.Chip ??= [];
|
||||
machine.Chip = [.. machine.Chip, chipItem];
|
||||
break;
|
||||
case DatItems.Formats.Configuration configuration:
|
||||
var configurationItem = configuration.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Configuration?>(machine, Data.Models.Metadata.Machine.ConfigurationKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey, configurationItem);
|
||||
machine.Configuration ??= [];
|
||||
machine.Configuration = [.. machine.Configuration, configurationItem];
|
||||
break;
|
||||
case DatItems.Formats.Device device:
|
||||
var deviceItem = device.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Device?>(machine, Data.Models.Metadata.Machine.DeviceKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey, deviceItem);
|
||||
machine.Device ??= [];
|
||||
machine.Device = [.. machine.Device, deviceItem];
|
||||
break;
|
||||
case DatItems.Formats.DeviceRef deviceRef:
|
||||
var deviceRefItem = deviceRef.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.DeviceRef?>(machine, Data.Models.Metadata.Machine.DeviceRefKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey, deviceRefItem);
|
||||
machine.DeviceRef ??= [];
|
||||
machine.DeviceRef = [.. machine.DeviceRef, deviceRefItem];
|
||||
break;
|
||||
case DatItems.Formats.DipSwitch dipSwitch:
|
||||
var dipSwitchItem = dipSwitch.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.DipSwitch?>(machine, Data.Models.Metadata.Machine.DipSwitchKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey, dipSwitchItem);
|
||||
machine.DipSwitch ??= [];
|
||||
machine.DipSwitch = [.. machine.DipSwitch, dipSwitchItem];
|
||||
|
||||
// Add Part mapping
|
||||
if (dipSwitch.Part is not null)
|
||||
@@ -558,8 +552,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
break;
|
||||
case DatItems.Formats.Disk disk:
|
||||
var diskItem = disk.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Disk?>(machine, Data.Models.Metadata.Machine.DiskKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem);
|
||||
machine.Disk ??= [];
|
||||
machine.Disk = [.. machine.Disk, diskItem];
|
||||
|
||||
// Add Part and DiskArea mappings
|
||||
if (disk.Part is not null && disk.DiskArea is not null)
|
||||
@@ -572,38 +566,34 @@ namespace SabreTools.Metadata.DatFiles
|
||||
break;
|
||||
case DatItems.Formats.Display display:
|
||||
var displayItem = ProcessItem(display, machine);
|
||||
EnsureMachineKey<Data.Models.Metadata.Display?>(machine, Data.Models.Metadata.Machine.DisplayKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey, displayItem);
|
||||
machine.Display ??= [];
|
||||
machine.Display = [.. machine.Display, displayItem];
|
||||
break;
|
||||
case DatItems.Formats.Driver driver:
|
||||
var driverItem = driver.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Driver?>(machine, Data.Models.Metadata.Machine.DriverKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DriverKey, driverItem);
|
||||
machine.Driver = driver.GetInternalClone();
|
||||
break;
|
||||
case DatItems.Formats.Feature feature:
|
||||
var featureItem = feature.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Feature?>(machine, Data.Models.Metadata.Machine.FeatureKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, featureItem);
|
||||
machine.Feature ??= [];
|
||||
machine.Feature = [.. machine.Feature, featureItem];
|
||||
break;
|
||||
case DatItems.Formats.Info info:
|
||||
var infoItem = info.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Info?>(machine, Data.Models.Metadata.Machine.InfoKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.InfoKey, infoItem);
|
||||
machine.Info ??= [];
|
||||
machine.Info = [.. machine.Info, infoItem];
|
||||
break;
|
||||
case DatItems.Formats.Input input:
|
||||
var inputItem = input.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Input?>(machine, Data.Models.Metadata.Machine.InputKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.InputKey, inputItem);
|
||||
machine.Input = input.GetInternalClone();
|
||||
break;
|
||||
case DatItems.Formats.Media media:
|
||||
var mediaItem = media.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Media?>(machine, Data.Models.Metadata.Machine.MediaKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.MediaKey, mediaItem);
|
||||
machine.Media ??= [];
|
||||
machine.Media = [.. machine.Media, mediaItem];
|
||||
break;
|
||||
case DatItems.Formats.PartFeature partFeature:
|
||||
var partFeatureItem = partFeature.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Feature?>(machine, Data.Models.Metadata.Machine.FeatureKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, partFeatureItem);
|
||||
machine.Feature ??= [];
|
||||
machine.Feature = [.. machine.Feature, partFeatureItem];
|
||||
|
||||
// Add Part mapping
|
||||
if (partFeature.Part is not null)
|
||||
@@ -612,23 +602,23 @@ namespace SabreTools.Metadata.DatFiles
|
||||
break;
|
||||
case DatItems.Formats.Port port:
|
||||
var portItem = port.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Port?>(machine, Data.Models.Metadata.Machine.PortKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.PortKey, portItem);
|
||||
machine.Port ??= [];
|
||||
machine.Port = [.. machine.Port, portItem];
|
||||
break;
|
||||
case DatItems.Formats.RamOption ramOption:
|
||||
var ramOptionItem = ramOption.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.RamOption?>(machine, Data.Models.Metadata.Machine.RamOptionKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey, ramOptionItem);
|
||||
machine.RamOption ??= [];
|
||||
machine.RamOption = [.. machine.RamOption, ramOptionItem];
|
||||
break;
|
||||
case DatItems.Formats.Release release:
|
||||
var releaseItem = release.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Release?>(machine, Data.Models.Metadata.Machine.ReleaseKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey, releaseItem);
|
||||
machine.Release ??= [];
|
||||
machine.Release = [.. machine.Release, releaseItem];
|
||||
break;
|
||||
case DatItems.Formats.Rom rom:
|
||||
var romItem = ProcessItem(rom, machine);
|
||||
EnsureMachineKey<Data.Models.Metadata.Rom?>(machine, Data.Models.Metadata.Machine.RomKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.RomKey, romItem);
|
||||
machine.Rom ??= [];
|
||||
machine.Rom = [.. machine.Rom, romItem];
|
||||
|
||||
// Add Part and DataArea mappings
|
||||
if (rom.Part is not null && rom.DataArea is not null)
|
||||
@@ -641,28 +631,26 @@ namespace SabreTools.Metadata.DatFiles
|
||||
break;
|
||||
case DatItems.Formats.Sample sample:
|
||||
var sampleItem = sample.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Sample?>(machine, Data.Models.Metadata.Machine.SampleKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SampleKey, sampleItem);
|
||||
machine.Sample ??= [];
|
||||
machine.Sample = [.. machine.Sample, sampleItem];
|
||||
break;
|
||||
case DatItems.Formats.SharedFeat sharedFeat:
|
||||
var sharedFeatItem = sharedFeat.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.SharedFeat?>(machine, Data.Models.Metadata.Machine.SharedFeatKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey, sharedFeatItem);
|
||||
machine.SharedFeat ??= [];
|
||||
machine.SharedFeat = [.. machine.SharedFeat, sharedFeatItem];
|
||||
break;
|
||||
case DatItems.Formats.Slot slot:
|
||||
var slotItem = slot.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Slot?>(machine, Data.Models.Metadata.Machine.SlotKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SlotKey, slotItem);
|
||||
machine.Slot ??= [];
|
||||
machine.Slot = [.. machine.Slot, slotItem];
|
||||
break;
|
||||
case DatItems.Formats.SoftwareList softwareList:
|
||||
var softwareListItem = softwareList.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.SoftwareList?>(machine, Data.Models.Metadata.Machine.SoftwareListKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey, softwareListItem);
|
||||
machine.SoftwareList ??= [];
|
||||
machine.SoftwareList = [.. machine.SoftwareList, softwareListItem];
|
||||
break;
|
||||
case DatItems.Formats.Sound sound:
|
||||
var soundItem = sound.GetInternalClone();
|
||||
EnsureMachineKey<Data.Models.Metadata.Sound?>(machine, Data.Models.Metadata.Machine.SoundKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoundKey, soundItem);
|
||||
machine.Sound = sound.GetInternalClone();
|
||||
break;
|
||||
default:
|
||||
// This should never happen
|
||||
@@ -847,7 +835,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
}
|
||||
|
||||
// Assign the part array to the machine
|
||||
machine[Data.Models.Metadata.Machine.PartKey] = (Data.Models.Metadata.Part[])[.. partItems.Values];
|
||||
machine.Part = [.. partItems.Values];
|
||||
}
|
||||
|
||||
// Add the machine to the list
|
||||
@@ -885,8 +873,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
Width = displayItem.Width,
|
||||
};
|
||||
|
||||
EnsureMachineKey<Data.Models.Metadata.Video?>(machine, Data.Models.Metadata.Machine.VideoKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.VideoKey, videoItem);
|
||||
machine.Video ??= [];
|
||||
machine.Video = [.. machine.Video, videoItem];
|
||||
}
|
||||
|
||||
return displayItem;
|
||||
@@ -932,8 +920,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
dumpRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal;
|
||||
}
|
||||
|
||||
EnsureMachineKey<Data.Models.Metadata.Dump?>(machine, Data.Models.Metadata.Machine.DumpKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpRom);
|
||||
machine.Dump ??= [];
|
||||
machine.Dump = [.. machine.Dump, dumpRom];
|
||||
break;
|
||||
|
||||
case OpenMSXSubType.MegaRom:
|
||||
@@ -960,8 +948,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
dumpMegaRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal;
|
||||
}
|
||||
|
||||
EnsureMachineKey<Data.Models.Metadata.Dump?>(machine, Data.Models.Metadata.Machine.DumpKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpMegaRom);
|
||||
machine.Dump ??= [];
|
||||
machine.Dump = [.. machine.Dump, dumpMegaRom];
|
||||
break;
|
||||
|
||||
case OpenMSXSubType.SCCPlusCart:
|
||||
@@ -988,8 +976,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
dumpSccPlusCart[Data.Models.Metadata.Dump.OriginalKey] = newOriginal;
|
||||
}
|
||||
|
||||
EnsureMachineKey<Data.Models.Metadata.Dump?>(machine, Data.Models.Metadata.Machine.DumpKey);
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpSccPlusCart);
|
||||
machine.Dump ??= [];
|
||||
machine.Dump = [.. machine.Dump, dumpSccPlusCart];
|
||||
break;
|
||||
default:
|
||||
// This should never happen
|
||||
@@ -999,38 +987,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
return romItem;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ensure a key in a machine
|
||||
/// </summary>
|
||||
private static void EnsureMachineKey<T>(Data.Models.Metadata.Machine machine, string key)
|
||||
{
|
||||
if (machine.Read<T[]?>(key) is null)
|
||||
#if NET20 || NET35 || NET40 || NET452
|
||||
machine[key] = new T[0];
|
||||
#else
|
||||
machine[key] = System.Array.Empty<T>();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Append to a machine key as if its an array
|
||||
/// </summary>
|
||||
private static void AppendToMachineKey<T>(Data.Models.Metadata.Machine machine, string key, T value) where T : Data.Models.Metadata.DatItem
|
||||
{
|
||||
// Get the existing array
|
||||
var arr = machine.Read<T[]>(key);
|
||||
if (arr is null)
|
||||
return;
|
||||
|
||||
// Trim all null fields
|
||||
ClearEmptyKeys(value);
|
||||
|
||||
// Add to the array
|
||||
List<T> list = [.. arr];
|
||||
list.Add(value);
|
||||
machine[key] = list.ToArray();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clear empty keys from a DictionaryBase object
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user