Make GetSupportedTypes a property

This commit is contained in:
Matt Nadareski
2025-01-09 06:14:01 -05:00
parent f2c9139e41
commit 51bf5f9d9b
19 changed files with 199 additions and 190 deletions

View File

@@ -2,6 +2,12 @@ namespace SabreTools.DatFiles.Test
{ {
public class DatFileTests public class DatFileTests
{ {
#region SupportedTypes
// TODO: Write SupportedTypes tests
#endregion
#region Constructor #region Constructor
// TODO: Write Constructor tests // TODO: Write Constructor tests
@@ -98,12 +104,6 @@ namespace SabreTools.DatFiles.Test
#endregion #endregion
#region GetSupportedTypes
// TODO: Write GetSupportedTypes tests
#endregion
#region GetMissingRequiredFields #region GetMissingRequiredFields
// TODO: Write GetMissingRequiredFields tests // TODO: Write GetMissingRequiredFields tests

View File

@@ -38,6 +38,11 @@ namespace SabreTools.DatFiles
[JsonProperty("items"), XmlElement("items")] [JsonProperty("items"), XmlElement("items")]
public ItemDictionaryDB ItemsDB { get; private set; } = new ItemDictionaryDB(); public ItemDictionaryDB ItemsDB { get; private set; } = new ItemDictionaryDB();
/// <summary>
/// List of supported types for writing
/// </summary>
public abstract ItemType[] SupportedTypes { get; }
#endregion #endregion
#region Logging #region Logging
@@ -696,16 +701,6 @@ namespace SabreTools.DatFiles
return new KeyValuePair<long, DatItem>(item.Key, rom); return new KeyValuePair<long, DatItem>(item.Key, rom);
} }
/// <summary>
/// Get supported types for write
/// </summary>
/// <returns>List of supported types for writing</returns>
/// TODO: Make this into a property instead of a method
protected virtual ItemType[] GetSupportedTypes()
{
return Enum.GetValues(typeof(ItemType)) as ItemType[] ?? [];
}
/// <summary> /// <summary>
/// Return list of required fields missing from a DatItem /// Return list of required fields missing from a DatItem
/// </summary> /// </summary>
@@ -727,7 +722,7 @@ namespace SabreTools.DatFiles
foreach (DatItem datItem in datItems) foreach (DatItem datItem in datItems)
{ {
ItemType itemType = datItem.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>(); ItemType itemType = datItem.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>();
if (Array.Exists(GetSupportedTypes(), t => t == itemType)) if (Array.Exists(SupportedTypes, t => t == itemType))
return true; return true;
} }
@@ -749,7 +744,7 @@ namespace SabreTools.DatFiles
foreach (var datItem in datItems) foreach (var datItem in datItems)
{ {
ItemType itemType = datItem.Value.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>(); ItemType itemType = datItem.Value.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>();
if (Array.Exists(GetSupportedTypes(), t => t == itemType)) if (Array.Exists(SupportedTypes, t => t == itemType))
return true; return true;
} }
@@ -990,7 +985,7 @@ namespace SabreTools.DatFiles
// If we have an item type not in the list of supported values // If we have an item type not in the list of supported values
string datFormat = Header?.GetFieldValue<DatFormat>(DatHeader.DatFormatKey).ToString() ?? "Unknown Format"; string datFormat = Header?.GetFieldValue<DatFormat>(DatHeader.DatFormatKey).ToString() ?? "Unknown Format";
ItemType itemType = datItem.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>(); ItemType itemType = datItem.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>();
if (!Array.Exists(GetSupportedTypes(), t => t == itemType)) if (!Array.Exists(SupportedTypes, t => t == itemType))
{ {
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
_logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {datFormat}"); _logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {datFormat}");

View File

@@ -7,6 +7,12 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class ArchiveDotOrg : SerializableDatFile<Models.ArchiveDotOrg.Files, Serialization.Deserializers.ArchiveDotOrg, Serialization.Serializers.ArchiveDotOrg, Serialization.CrossModel.ArchiveDotOrg> internal sealed class ArchiveDotOrg : SerializableDatFile<Models.ArchiveDotOrg.Files, Serialization.Deserializers.ArchiveDotOrg, Serialization.Serializers.ArchiveDotOrg, Serialization.CrossModel.ArchiveDotOrg>
{ {
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Rom,
];
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -14,14 +20,5 @@ namespace SabreTools.DatFiles.Formats
public ArchiveDotOrg(DatFile? datFile) : base(datFile) public ArchiveDotOrg(DatFile? datFile) : base(datFile)
{ {
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Rom,
];
}
} }
} }

View File

@@ -8,6 +8,12 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class AttractMode : SerializableDatFile<Models.AttractMode.MetadataFile, Serialization.Deserializers.AttractMode, Serialization.Serializers.AttractMode, Serialization.CrossModel.AttractMode> internal sealed class AttractMode : SerializableDatFile<Models.AttractMode.MetadataFile, Serialization.Deserializers.AttractMode, Serialization.Serializers.AttractMode, Serialization.CrossModel.AttractMode>
{ {
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Rom,
];
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -16,15 +22,6 @@ namespace SabreTools.DatFiles.Formats
{ {
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Rom
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -13,6 +13,24 @@ namespace SabreTools.DatFiles.Formats
{ {
#region Fields #region Fields
/// <inheritdoc/>
public override 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,
];
/// <summary> /// <summary>
/// Get whether to assume quote usage on read and write or not /// Get whether to assume quote usage on read and write or not
/// </summary> /// </summary>
@@ -49,27 +67,6 @@ namespace SabreTools.DatFiles.Formats
} }
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
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,
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -9,6 +9,12 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class DosCenter : SerializableDatFile<Models.DosCenter.MetadataFile, Serialization.Deserializers.DosCenter, Serialization.Serializers.DosCenter, Serialization.CrossModel.DosCenter> internal sealed class DosCenter : SerializableDatFile<Models.DosCenter.MetadataFile, Serialization.Deserializers.DosCenter, Serialization.Serializers.DosCenter, Serialization.CrossModel.DosCenter>
{ {
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Rom,
];
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -17,15 +23,6 @@ namespace SabreTools.DatFiles.Formats
{ {
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Rom
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -9,6 +9,12 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class EverdriveSMDB : SerializableDatFile<Models.EverdriveSMDB.MetadataFile, Serialization.Deserializers.EverdriveSMDB, Serialization.Serializers.EverdriveSMDB, Serialization.CrossModel.EverdriveSMDB> internal sealed class EverdriveSMDB : SerializableDatFile<Models.EverdriveSMDB.MetadataFile, Serialization.Deserializers.EverdriveSMDB, Serialization.Serializers.EverdriveSMDB, Serialization.CrossModel.EverdriveSMDB>
{ {
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Rom,
];
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -17,15 +23,6 @@ namespace SabreTools.DatFiles.Formats
{ {
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Rom
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -11,9 +11,21 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal abstract class Hashfile : SerializableDatFile<Models.Hashfile.Hashfile, Serialization.Deserializers.Hashfile, Serialization.Serializers.Hashfile, Serialization.CrossModel.Hashfile> internal abstract class Hashfile : SerializableDatFile<Models.Hashfile.Hashfile, Serialization.Deserializers.Hashfile, Serialization.Serializers.Hashfile, Serialization.CrossModel.Hashfile>
{ {
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Media,
ItemType.Rom,
];
// Private instance variables specific to Hashfile DATs // Private instance variables specific to Hashfile DATs
protected HashType _hash; protected HashType _hash;
#endregion
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -41,17 +53,6 @@ namespace SabreTools.DatFiles.Formats
} }
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Disk,
ItemType.Media,
ItemType.Rom
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -9,6 +9,13 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class Listrom : SerializableDatFile<Models.Listrom.MetadataFile, Serialization.Deserializers.Listrom, Serialization.Serializers.Listrom, Serialization.CrossModel.Listrom> internal sealed class Listrom : SerializableDatFile<Models.Listrom.MetadataFile, Serialization.Deserializers.Listrom, Serialization.Serializers.Listrom, Serialization.CrossModel.Listrom>
{ {
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Rom,
];
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -17,16 +24,6 @@ namespace SabreTools.DatFiles.Formats
{ {
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Disk,
ItemType.Rom
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -11,6 +11,8 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class Listxml : SerializableDatFile<Models.Listxml.Mame, Serialization.Deserializers.Listxml, Serialization.Serializers.Listxml, Serialization.CrossModel.Listxml> internal sealed class Listxml : SerializableDatFile<Models.Listxml.Mame, Serialization.Deserializers.Listxml, Serialization.Serializers.Listxml, Serialization.CrossModel.Listxml>
{ {
#region Constants
/// <summary> /// <summary>
/// DTD for original MAME XML DATs /// DTD for original MAME XML DATs
/// </summary> /// </summary>
@@ -177,6 +179,37 @@ namespace SabreTools.DatFiles.Formats
]> ]>
"; ";
#endregion
#region Fields
/// <inheritdoc/>
public override 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,
];
#endregion
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -213,34 +246,6 @@ namespace SabreTools.DatFiles.Formats
} }
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
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,
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -11,8 +11,7 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class Logiqx : SerializableDatFile<Models.Logiqx.Datafile, Serialization.Deserializers.Logiqx, Serialization.Serializers.Logiqx, Serialization.CrossModel.Logiqx> internal sealed class Logiqx : SerializableDatFile<Models.Logiqx.Datafile, Serialization.Deserializers.Logiqx, Serialization.Serializers.Logiqx, Serialization.CrossModel.Logiqx>
{ {
// Private instance variables specific to Logiqx DATs #region Constants
private readonly bool _deprecated;
/// <summary> /// <summary>
/// DTD for original Logiqx DATs /// DTD for original Logiqx DATs
@@ -220,21 +219,13 @@ namespace SabreTools.DatFiles.Formats
</xs:schema> </xs:schema>
"; ";
/// <summary> #endregion
/// Constructor designed for casting a base DatFile
/// </summary> #region Fields
/// <param name="datFile">Parent DatFile to copy from</param>
/// <param name="deprecated">True if the output uses "game", false if the output uses "machine"</param>
public Logiqx(DatFile? datFile, bool deprecated) : base(datFile)
{
_deprecated = deprecated;
}
/// <inheritdoc/> /// <inheritdoc/>
protected override ItemType[] GetSupportedTypes() public override ItemType[] SupportedTypes
{ => [
return
[
ItemType.Archive, ItemType.Archive,
ItemType.BiosSet, ItemType.BiosSet,
ItemType.Disk, ItemType.Disk,
@@ -243,6 +234,22 @@ namespace SabreTools.DatFiles.Formats
ItemType.Rom, ItemType.Rom,
ItemType.Sample, ItemType.Sample,
]; ];
/// <summary>
/// Indicates if game should be used instead of machine
/// </summary>
private readonly bool _deprecated;
#endregion
/// <summary>
/// Constructor designed for casting a base DatFile
/// </summary>
/// <param name="datFile">Parent DatFile to copy from</param>
/// <param name="deprecated">True if the output uses "game", false if the output uses "machine"</param>
public Logiqx(DatFile? datFile, bool deprecated) : base(datFile)
{
_deprecated = deprecated;
} }
/// <inheritdoc/> /// <inheritdoc/>

View File

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

View File

@@ -9,6 +9,12 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class OfflineList : SerializableDatFile<Models.OfflineList.Dat, Serialization.Deserializers.OfflineList, Serialization.Serializers.OfflineList, Serialization.CrossModel.OfflineList> internal sealed class OfflineList : SerializableDatFile<Models.OfflineList.Dat, Serialization.Deserializers.OfflineList, Serialization.Serializers.OfflineList, Serialization.CrossModel.OfflineList>
{ {
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Rom,
];
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -17,15 +23,6 @@ namespace SabreTools.DatFiles.Formats
{ {
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Rom
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -9,6 +9,8 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class OpenMSX : SerializableDatFile<Models.OpenMSX.SoftwareDb, Serialization.Deserializers.OpenMSX, Serialization.Serializers.OpenMSX, Serialization.CrossModel.OpenMSX> internal sealed class OpenMSX : SerializableDatFile<Models.OpenMSX.SoftwareDb, Serialization.Deserializers.OpenMSX, Serialization.Serializers.OpenMSX, Serialization.CrossModel.OpenMSX>
{ {
#region Constants
/// <summary> /// <summary>
/// DTD for original openMSX DATs /// DTD for original openMSX DATs
/// </summary> /// </summary>
@@ -40,6 +42,18 @@ The softwaredb.xml file contains information about rom mapper types
]]>"; ]]>";
#endregion
#region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Rom,
];
#endregion
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -48,15 +62,6 @@ The softwaredb.xml file contains information about rom mapper types
{ {
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Rom
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -9,6 +9,12 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class RomCenter : SerializableDatFile<Models.RomCenter.MetadataFile, Serialization.Deserializers.RomCenter, Serialization.Serializers.RomCenter, Serialization.CrossModel.RomCenter> internal sealed class RomCenter : SerializableDatFile<Models.RomCenter.MetadataFile, Serialization.Deserializers.RomCenter, Serialization.Serializers.RomCenter, Serialization.CrossModel.RomCenter>
{ {
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Rom,
];
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -17,15 +23,6 @@ namespace SabreTools.DatFiles.Formats
{ {
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Rom
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -17,6 +17,10 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal class SabreJSON : DatFile internal class SabreJSON : DatFile
{ {
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> Enum.GetValues(typeof(ItemType)) as ItemType[] ?? [];
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>

View File

@@ -14,6 +14,10 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal class SabreXML : DatFile internal class SabreXML : DatFile
{ {
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> Enum.GetValues(typeof(ItemType)) as ItemType[] ?? [];
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>

View File

@@ -10,9 +10,23 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal abstract class SeparatedValue : SerializableDatFile<Models.SeparatedValue.MetadataFile, Serialization.Deserializers.SeparatedValue, Serialization.Serializers.SeparatedValue, Serialization.CrossModel.SeparatedValue> internal abstract class SeparatedValue : SerializableDatFile<Models.SeparatedValue.MetadataFile, Serialization.Deserializers.SeparatedValue, Serialization.Serializers.SeparatedValue, Serialization.CrossModel.SeparatedValue>
{ {
// Private instance variables specific to Hashfile DATs #region Fields
/// <inheritdoc/>
public override ItemType[] SupportedTypes
=> [
ItemType.Disk,
ItemType.Media,
ItemType.Rom,
];
/// <summary>
/// Represents the delimiter between fields
/// </summary>
protected char _delim; protected char _delim;
#endregion
/// <summary> /// <summary>
/// Constructor designed for casting a base DatFile /// Constructor designed for casting a base DatFile
/// </summary> /// </summary>
@@ -40,17 +54,6 @@ namespace SabreTools.DatFiles.Formats
} }
} }
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Disk,
ItemType.Media,
ItemType.Rom
];
}
/// <inheritdoc/> /// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) protected override List<string>? GetMissingRequiredFields(DatItem datItem)
{ {

View File

@@ -10,6 +10,8 @@ namespace SabreTools.DatFiles.Formats
/// </summary> /// </summary>
internal sealed class SoftwareList : SerializableDatFile<Models.SoftwareList.SoftwareList, Serialization.Deserializers.SoftwareList, Serialization.Serializers.SoftwareList, Serialization.CrossModel.SoftwareList> internal sealed class SoftwareList : SerializableDatFile<Models.SoftwareList.SoftwareList, Serialization.Deserializers.SoftwareList, Serialization.Serializers.SoftwareList, Serialization.CrossModel.SoftwareList>
{ {
#region Constants
/// <summary> /// <summary>
/// DTD for original MAME Software List DATs /// DTD for original MAME Software List DATs
/// </summary> /// </summary>
@@ -71,19 +73,13 @@ namespace SabreTools.DatFiles.Formats
<!ATTLIST dipvalue default (yes|no) ""no""> <!ATTLIST dipvalue default (yes|no) ""no"">
"; ";
/// <summary> #endregion
/// Constructor designed for casting a base DatFile
/// </summary> #region Fields
/// <param name="datFile">Parent DatFile to copy from</param>
public SoftwareList(DatFile? datFile) : base(datFile)
{
}
/// <inheritdoc/> /// <inheritdoc/>
protected override ItemType[] GetSupportedTypes() public override ItemType[] SupportedTypes
{ => [
return
[
ItemType.DipSwitch, ItemType.DipSwitch,
ItemType.Disk, ItemType.Disk,
ItemType.Info, ItemType.Info,
@@ -91,6 +87,15 @@ namespace SabreTools.DatFiles.Formats
ItemType.Rom, ItemType.Rom,
ItemType.SharedFeat, ItemType.SharedFeat,
]; ];
#endregion
/// <summary>
/// Constructor designed for casting a base DatFile
/// </summary>
/// <param name="datFile">Parent DatFile to copy from</param>
public SoftwareList(DatFile? datFile) : base(datFile)
{
} }
/// <inheritdoc/> /// <inheritdoc/>