Change ItemType into concerete property

This commit is contained in:
Matt Nadareski
2026-04-01 11:24:33 -04:00
parent 4035d9db86
commit 3e2bba866d
135 changed files with 629 additions and 781 deletions

View File

@@ -1,6 +1,4 @@
using SabreTools.Metadata.DatItems;
namespace SabreTools.Metadata.DatFiles.Formats
namespace SabreTools.Metadata.DatFiles.Formats
{
/// <summary>
/// Represents a Archive.org file list
@@ -8,9 +6,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class ArchiveDotOrg : SerializableDatFile<Data.Models.ArchiveDotOrg.Files, Serialization.Readers.ArchiveDotOrg, Serialization.Writers.ArchiveDotOrg, Serialization.CrossModel.ArchiveDotOrg>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -9,9 +9,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class AttractMode : SerializableDatFile<Data.Models.AttractMode.MetadataFile, Serialization.Readers.AttractMode, Serialization.Writers.AttractMode, Serialization.CrossModel.AttractMode>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -15,21 +15,21 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Archive,
ItemType.BiosSet,
ItemType.Chip,
ItemType.DipSwitch,
ItemType.Disk,
ItemType.Display,
ItemType.Driver,
ItemType.Input,
ItemType.Media,
ItemType.Release,
ItemType.Rom,
ItemType.Sample,
ItemType.Sound,
Data.Models.Metadata.ItemType.Archive,
Data.Models.Metadata.ItemType.BiosSet,
Data.Models.Metadata.ItemType.Chip,
Data.Models.Metadata.ItemType.DipSwitch,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Display,
Data.Models.Metadata.ItemType.Driver,
Data.Models.Metadata.ItemType.Input,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Release,
Data.Models.Metadata.ItemType.Rom,
Data.Models.Metadata.ItemType.Sample,
Data.Models.Metadata.ItemType.Sound,
];
#endregion

View File

@@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class DosCenter : SerializableDatFile<Data.Models.DosCenter.MetadataFile, Serialization.Readers.DosCenter, Serialization.Writers.DosCenter, Serialization.CrossModel.DosCenter>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class EverdriveSMDB : SerializableDatFile<Data.Models.EverdriveSMDB.MetadataFile, Serialization.Readers.EverdriveSMDB, Serialization.Writers.EverdriveSMDB, Serialization.CrossModel.EverdriveSMDB>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -10,10 +10,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Listrom : SerializableDatFile<Data.Models.Listrom.MetadataFile, Serialization.Readers.Listrom, Serialization.Writers.Listrom, Serialization.CrossModel.Listrom>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Rom,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -185,28 +185,28 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Adjuster,
ItemType.BiosSet,
ItemType.Chip,
ItemType.Condition,
ItemType.Configuration,
ItemType.Device,
ItemType.DeviceRef,
ItemType.DipSwitch,
ItemType.Disk,
ItemType.Display,
ItemType.Driver,
ItemType.Feature,
ItemType.Input,
ItemType.Port,
ItemType.RamOption,
ItemType.Rom,
ItemType.Sample,
ItemType.Slot,
ItemType.SoftwareList,
ItemType.Sound,
Data.Models.Metadata.ItemType.Adjuster,
Data.Models.Metadata.ItemType.BiosSet,
Data.Models.Metadata.ItemType.Chip,
Data.Models.Metadata.ItemType.Condition,
Data.Models.Metadata.ItemType.Configuration,
Data.Models.Metadata.ItemType.Device,
Data.Models.Metadata.ItemType.DeviceRef,
Data.Models.Metadata.ItemType.DipSwitch,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Display,
Data.Models.Metadata.ItemType.Driver,
Data.Models.Metadata.ItemType.Feature,
Data.Models.Metadata.ItemType.Input,
Data.Models.Metadata.ItemType.Port,
Data.Models.Metadata.ItemType.RamOption,
Data.Models.Metadata.ItemType.Rom,
Data.Models.Metadata.ItemType.Sample,
Data.Models.Metadata.ItemType.Slot,
Data.Models.Metadata.ItemType.SoftwareList,
Data.Models.Metadata.ItemType.Sound,
];
#endregion

View File

@@ -224,18 +224,18 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Archive,
ItemType.BiosSet,
ItemType.DeviceRef,
ItemType.Disk,
ItemType.Driver,
ItemType.Media,
ItemType.Release,
ItemType.Rom,
ItemType.Sample,
ItemType.SoftwareList,
Data.Models.Metadata.ItemType.Archive,
Data.Models.Metadata.ItemType.BiosSet,
Data.Models.Metadata.ItemType.DeviceRef,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Driver,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Release,
Data.Models.Metadata.ItemType.Rom,
Data.Models.Metadata.ItemType.Sample,
Data.Models.Metadata.ItemType.SoftwareList,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Md2File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Md4File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,11 +11,11 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Md5File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -13,8 +13,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Missfile : DatFile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> Enum.GetValues(typeof(ItemType)) as ItemType[] ?? [];
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> Enum.GetValues(typeof(Data.Models.Metadata.ItemType)) as Data.Models.Metadata.ItemType[] ?? [];
/// <summary>
/// Constructor designed for casting a base DatFile

View File

@@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class OfflineList : SerializableDatFile<Data.Models.OfflineList.Dat, Serialization.Readers.OfflineList, Serialization.Writers.OfflineList, Serialization.CrossModel.OfflineList>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -47,9 +47,9 @@ The softwaredb.xml file contains information about rom mapper types
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
#endregion

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class RipeMD128File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class RipeMD160File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -10,9 +10,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class RomCenter : SerializableDatFile<Data.Models.RomCenter.MetadataFile, Serialization.Readers.RomCenter, Serialization.Writers.RomCenter, Serialization.CrossModel.RomCenter>
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -19,8 +19,12 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class SabreJSON : DatFile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> Enum.GetValues(typeof(ItemType)) as ItemType[] ?? [];
public override Data.Models.Metadata.ItemType[] SupportedTypes
#if NET5_0_OR_GREATER
=> Enum.GetValues<Data.Models.Metadata.ItemType>();
#else
=> Enum.GetValues(typeof(Data.Models.Metadata.ItemType)) as Data.Models.Metadata.ItemType[] ?? [];
#endif
/// <summary>
/// Constructor designed for casting a base DatFile
@@ -250,140 +254,144 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItemObj.Value<string>("type").AsItemType())
{
case ItemType.Adjuster:
case Data.Models.Metadata.ItemType.Adjuster:
datItem = datItemObj.ToObject<Adjuster>();
break;
case ItemType.Analog:
case Data.Models.Metadata.ItemType.Analog:
datItem = datItemObj.ToObject<Analog>();
break;
case ItemType.Archive:
case Data.Models.Metadata.ItemType.Archive:
datItem = datItemObj.ToObject<Archive>();
break;
case ItemType.BiosSet:
case Data.Models.Metadata.ItemType.BiosSet:
datItem = datItemObj.ToObject<BiosSet>();
break;
case ItemType.Blank:
case Data.Models.Metadata.ItemType.Blank:
datItem = datItemObj.ToObject<Blank>();
break;
case ItemType.Chip:
case Data.Models.Metadata.ItemType.Chip:
datItem = datItemObj.ToObject<Chip>();
break;
case ItemType.Condition:
case Data.Models.Metadata.ItemType.Condition:
datItem = datItemObj.ToObject<Condition>();
break;
case ItemType.Configuration:
case Data.Models.Metadata.ItemType.Configuration:
datItem = datItemObj.ToObject<Configuration>();
break;
case ItemType.ConfLocation:
case Data.Models.Metadata.ItemType.ConfLocation:
datItem = datItemObj.ToObject<ConfLocation>();
break;
case ItemType.ConfSetting:
case Data.Models.Metadata.ItemType.ConfSetting:
datItem = datItemObj.ToObject<ConfSetting>();
break;
case ItemType.Control:
case Data.Models.Metadata.ItemType.Control:
datItem = datItemObj.ToObject<Control>();
break;
case ItemType.DataArea:
case Data.Models.Metadata.ItemType.DataArea:
datItem = datItemObj.ToObject<DataArea>();
break;
case ItemType.Device:
case Data.Models.Metadata.ItemType.Device:
datItem = datItemObj.ToObject<Device>();
break;
case ItemType.DeviceRef:
case Data.Models.Metadata.ItemType.DeviceRef:
datItem = datItemObj.ToObject<DeviceRef>();
break;
case ItemType.DipLocation:
case Data.Models.Metadata.ItemType.DipLocation:
datItem = datItemObj.ToObject<DipLocation>();
break;
case ItemType.DipValue:
case Data.Models.Metadata.ItemType.DipValue:
datItem = datItemObj.ToObject<DipValue>();
break;
case ItemType.DipSwitch:
case Data.Models.Metadata.ItemType.DipSwitch:
datItem = datItemObj.ToObject<DipSwitch>();
break;
case ItemType.Disk:
case Data.Models.Metadata.ItemType.Disk:
datItem = datItemObj.ToObject<Disk>();
break;
case ItemType.DiskArea:
case Data.Models.Metadata.ItemType.DiskArea:
datItem = datItemObj.ToObject<DiskArea>();
break;
case ItemType.Display:
case Data.Models.Metadata.ItemType.Display:
datItem = datItemObj.ToObject<Display>();
break;
case ItemType.Driver:
case Data.Models.Metadata.ItemType.Driver:
datItem = datItemObj.ToObject<Driver>();
break;
case ItemType.Extension:
case Data.Models.Metadata.ItemType.Extension:
datItem = datItemObj.ToObject<Extension>();
break;
case ItemType.Feature:
case Data.Models.Metadata.ItemType.Feature:
datItem = datItemObj.ToObject<Feature>();
break;
case ItemType.File:
case Data.Models.Metadata.ItemType.File:
datItem = datItemObj.ToObject<DatItems.Formats.File>();
break;
case ItemType.Info:
case Data.Models.Metadata.ItemType.Info:
datItem = datItemObj.ToObject<Info>();
break;
case ItemType.Input:
case Data.Models.Metadata.ItemType.Input:
datItem = datItemObj.ToObject<Input>();
break;
case ItemType.Instance:
case Data.Models.Metadata.ItemType.Instance:
datItem = datItemObj.ToObject<Instance>();
break;
case ItemType.Media:
case Data.Models.Metadata.ItemType.Media:
datItem = datItemObj.ToObject<Media>();
break;
case ItemType.Original:
case Data.Models.Metadata.ItemType.Original:
// Cannot be converted to a DatItem
break;
case ItemType.Part:
case Data.Models.Metadata.ItemType.Part:
datItem = datItemObj.ToObject<Part>();
break;
case ItemType.PartFeature:
case Data.Models.Metadata.ItemType.PartFeature:
datItem = datItemObj.ToObject<PartFeature>();
break;
case ItemType.Port:
case Data.Models.Metadata.ItemType.Port:
datItem = datItemObj.ToObject<Port>();
break;
case ItemType.RamOption:
case Data.Models.Metadata.ItemType.RamOption:
datItem = datItemObj.ToObject<RamOption>();
break;
case ItemType.Release:
case Data.Models.Metadata.ItemType.Release:
datItem = datItemObj.ToObject<Release>();
break;
case ItemType.ReleaseDetails:
case Data.Models.Metadata.ItemType.ReleaseDetails:
datItem = datItemObj.ToObject<ReleaseDetails>();
break;
case ItemType.Rom:
case Data.Models.Metadata.ItemType.Rom:
datItem = datItemObj.ToObject<Rom>();
break;
case ItemType.Sample:
case Data.Models.Metadata.ItemType.Sample:
datItem = datItemObj.ToObject<Sample>();
break;
case ItemType.Serials:
case Data.Models.Metadata.ItemType.Serials:
datItem = datItemObj.ToObject<Serials>();
break;
case ItemType.SharedFeat:
case Data.Models.Metadata.ItemType.SharedFeat:
datItem = datItemObj.ToObject<SharedFeat>();
break;
case ItemType.Slot:
case Data.Models.Metadata.ItemType.Slot:
datItem = datItemObj.ToObject<Slot>();
break;
case ItemType.SlotOption:
case Data.Models.Metadata.ItemType.SlotOption:
datItem = datItemObj.ToObject<SlotOption>();
break;
case ItemType.SoftwareList:
case Data.Models.Metadata.ItemType.SoftwareList:
datItem = datItemObj.ToObject<DatItems.Formats.SoftwareList>();
break;
case ItemType.Sound:
case Data.Models.Metadata.ItemType.Sound:
datItem = datItemObj.ToObject<Sound>();
break;
case ItemType.SourceDetails:
case Data.Models.Metadata.ItemType.SourceDetails:
datItem = datItemObj.ToObject<SourceDetails>();
break;
case ItemType.NULL:
// TODO: Implement these?
case Data.Models.Metadata.ItemType.Dump:
case Data.Models.Metadata.ItemType.Software:
case Data.Models.Metadata.ItemType.Video:
case Data.Models.Metadata.ItemType.NULL:
default:
// This should never happen
break;

View File

@@ -18,11 +18,11 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class SabreXML : DatFile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
#if NET5_0_OR_GREATER
=> Enum.GetValues<ItemType>();
=> Enum.GetValues<Data.Models.Metadata.ItemType>();
#else
=> Enum.GetValues(typeof(ItemType)) as ItemType[] ?? [];
=> Enum.GetValues(typeof(Data.Models.Metadata.ItemType)) as Data.Models.Metadata.ItemType[] ?? [];
#endif
/// <summary>

View File

@@ -15,11 +15,11 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class SfvFile : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,11 +11,11 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Sha1File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,10 +11,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Sha256File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Sha384File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -11,9 +11,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class Sha512File : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Rom,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>

View File

@@ -78,14 +78,14 @@ namespace SabreTools.Metadata.DatFiles.Formats
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.DipSwitch,
ItemType.Disk,
ItemType.Info,
ItemType.PartFeature,
ItemType.Rom,
ItemType.SharedFeat,
Data.Models.Metadata.ItemType.DipSwitch,
Data.Models.Metadata.ItemType.Disk,
Data.Models.Metadata.ItemType.Info,
Data.Models.Metadata.ItemType.PartFeature,
Data.Models.Metadata.ItemType.Rom,
Data.Models.Metadata.ItemType.SharedFeat,
];
#endregion

View File

@@ -11,10 +11,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
public sealed class SpamSumFile : Hashfile
{
/// <inheritdoc/>
public override ItemType[] SupportedTypes
public override Data.Models.Metadata.ItemType[] SupportedTypes
=> [
ItemType.Media,
ItemType.Rom,
Data.Models.Metadata.ItemType.Media,
Data.Models.Metadata.ItemType.Rom,
];
/// <summary>