Use Logiqx serializer for reading only

This commit is contained in:
Matt Nadareski
2023-07-30 22:59:04 -04:00
parent c62a00d010
commit 28472d08bf
14 changed files with 871 additions and 618 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -4,9 +4,21 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("archive")] [XmlRoot("archive")]
public class Archive : ItemBase public class Archive
{ {
[XmlAttribute("name")] [XmlAttribute("name")]
public string Name { get; set; } public string Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -4,7 +4,7 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("biosset")] [XmlRoot("biosset")]
public class BiosSet : ItemBase public class BiosSet
{ {
[XmlAttribute("name")] [XmlAttribute("name")]
public string Name { get; set; } public string Name { get; set; }
@@ -15,5 +15,17 @@ namespace SabreTools.Models.Logiqx
/// <remarks>(yes|no) "no"</remarks> /// <remarks>(yes|no) "no"</remarks>
[XmlAttribute("default")] [XmlAttribute("default")]
public string? Default { get; set; } public string? Default { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -4,9 +4,21 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("device_ref")] [XmlRoot("device_ref")]
public class DeviceRef : ItemBase public class DeviceRef
{ {
[XmlAttribute("name")] [XmlAttribute("name")]
public string Name { get; set; } public string Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -4,7 +4,7 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("disk")] [XmlRoot("disk")]
public class Disk : ItemBase public class Disk
{ {
[XmlAttribute("name")] [XmlAttribute("name")]
public string Name { get; set; } public string Name { get; set; }
@@ -29,5 +29,17 @@ namespace SabreTools.Models.Logiqx
public string? Region { get; set; } public string? Region { get; set; }
#endregion #endregion
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -4,7 +4,7 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("driver")] [XmlRoot("driver")]
public class Driver : ItemBase public class Driver
{ {
/// <remarks>(good|imperfect|preliminary)</remarks> /// <remarks>(good|imperfect|preliminary)</remarks>
[XmlAttribute("status")] [XmlAttribute("status")]
@@ -37,5 +37,17 @@ namespace SabreTools.Models.Logiqx
/// <remarks>(yes|no) "no"</remarks> /// <remarks>(yes|no) "no"</remarks>
[XmlAttribute("incomplete")] [XmlAttribute("incomplete")]
public string? Incomplete { get; set; } public string? Incomplete { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -56,17 +56,35 @@ namespace SabreTools.Models.Logiqx
[XmlElement("category")] [XmlElement("category")]
public string[]? Category { get; set; } public string[]? Category { get; set; }
[XmlElement("release", typeof(Release))] [XmlElement(elementName: "release")]
[XmlElement("biosset", typeof(BiosSet))] public Release[]? Release { get; set; }
[XmlElement("rom", typeof(Rom))]
[XmlElement("disk", typeof(Disk))] [XmlElement("biosset")]
[XmlElement("media", typeof(Media))] // Aaru extension public BiosSet[]? BiosSet { get; set; }
[XmlElement("device_ref", typeof(DeviceRef))] // MAME extension
[XmlElement("sample", typeof(Sample))] [XmlElement("rom")]
[XmlElement("archive", typeof(Archive))] public Rom[]? Rom { get; set; }
[XmlElement("driver", typeof(Driver))] // MAME extension
[XmlElement("softwarelist", typeof(SoftwareList))] // MAME extension [XmlElement("disk")]
public ItemBase[]? Item { get; set; } public Disk[]? Disk { get; set; }
[XmlElement("media")] // Aaru extension
public Media[]? Media { get; set; }
[XmlElement("device_ref")] // MAME extension
public DeviceRef[]? DeviceRef { get; set; }
[XmlElement("sample")]
public Sample[]? Sample { get; set; }
[XmlElement("archive")]
public Archive[]? Archive { get; set; }
[XmlElement("driver")] // MAME extension
public Driver[]? Driver { get; set; }
[XmlElement("softwarelist")] // MAME extension
public SoftwareList[]? SoftwareList { get; set; }
#region MAME Extensions #region MAME Extensions

View File

@@ -1,23 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx
{
/// <summary>
/// Base class to unify the various item types
/// </summary>
public abstract class ItemBase
{
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -4,7 +4,7 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("media")] [XmlRoot("media")]
public class Media : ItemBase public class Media
{ {
[XmlAttribute("name")] [XmlAttribute("name")]
public string Name { get; set; } public string Name { get; set; }
@@ -20,5 +20,17 @@ namespace SabreTools.Models.Logiqx
[XmlAttribute("spamsum")] [XmlAttribute("spamsum")]
public string? SpamSum { get; set; } public string? SpamSum { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -4,7 +4,7 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("release")] [XmlRoot("release")]
public class Release : ItemBase public class Release
{ {
[XmlAttribute("name")] [XmlAttribute("name")]
public string Name { get; set; } public string Name { get; set; }
@@ -21,5 +21,17 @@ namespace SabreTools.Models.Logiqx
/// <remarks>(yes|no) "no"</remarks> /// <remarks>(yes|no) "no"</remarks>
[XmlAttribute("default")] [XmlAttribute("default")]
public string? Default { get; set; } public string? Default { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -4,13 +4,13 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("rom")] [XmlRoot("rom")]
public class Rom : ItemBase public class Rom
{ {
[XmlAttribute("name")] [XmlAttribute("name")]
public string Name { get; set; } public string Name { get; set; }
[XmlAttribute("size")] [XmlAttribute("size")]
public long Size { get; set; } public string Size { get; set; }
[XmlAttribute("crc")] [XmlAttribute("crc")]
public string? CRC { get; set; } public string? CRC { get; set; }
@@ -86,5 +86,17 @@ namespace SabreTools.Models.Logiqx
public string? MIA { get; set; } public string? MIA { get; set; }
#endregion #endregion
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -4,9 +4,21 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("sample")] [XmlRoot("sample")]
public class Sample : ItemBase public class Sample
{ {
[XmlAttribute("name")] [XmlAttribute("name")]
public string Name { get; set; } public string Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -4,7 +4,7 @@ using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx namespace SabreTools.Models.Logiqx
{ {
[XmlRoot("softwarelist")] [XmlRoot("softwarelist")]
public class SoftwareList : ItemBase public class SoftwareList
{ {
[XmlAttribute("tag")] [XmlAttribute("tag")]
public string Tag { get; set; } public string Tag { get; set; }
@@ -18,5 +18,17 @@ namespace SabreTools.Models.Logiqx
[XmlAttribute("filter")] [XmlAttribute("filter")]
public string? Filter { get; set; } public string? Filter { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
} }
} }

View File

@@ -541,7 +541,61 @@ namespace SabreTools.Test.Parser
Assert.Null(game.ADDITIONAL_ATTRIBUTES); Assert.Null(game.ADDITIONAL_ATTRIBUTES);
Assert.Null(game.ADDITIONAL_ELEMENTS); Assert.Null(game.ADDITIONAL_ELEMENTS);
foreach (var item in game.Item ?? Array.Empty<Models.Logiqx.ItemBase>()) foreach (var item in game.Release ?? Array.Empty<Models.Logiqx.Release>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.BiosSet ?? Array.Empty<Models.Logiqx.BiosSet>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Rom ?? Array.Empty<Models.Logiqx.Rom>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Disk ?? Array.Empty<Models.Logiqx.Disk>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Media ?? Array.Empty<Models.Logiqx.Media>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.DeviceRef ?? Array.Empty<Models.Logiqx.DeviceRef>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Sample ?? Array.Empty<Models.Logiqx.Sample>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Archive ?? Array.Empty<Models.Logiqx.Archive>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Driver ?? Array.Empty<Models.Logiqx.Driver>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.SoftwareList ?? Array.Empty<Models.Logiqx.SoftwareList>())
{ {
Assert.Null(item.ADDITIONAL_ATTRIBUTES); Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS); Assert.Null(item.ADDITIONAL_ELEMENTS);
@@ -562,7 +616,61 @@ namespace SabreTools.Test.Parser
Assert.Null(game.ADDITIONAL_ATTRIBUTES); Assert.Null(game.ADDITIONAL_ATTRIBUTES);
Assert.Null(game.ADDITIONAL_ELEMENTS); Assert.Null(game.ADDITIONAL_ELEMENTS);
foreach (var item in game.Item ?? Array.Empty<Models.Logiqx.ItemBase>()) foreach (var item in game.Release ?? Array.Empty<Models.Logiqx.Release>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.BiosSet ?? Array.Empty<Models.Logiqx.BiosSet>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Rom ?? Array.Empty<Models.Logiqx.Rom>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Disk ?? Array.Empty<Models.Logiqx.Disk>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Media ?? Array.Empty<Models.Logiqx.Media>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.DeviceRef ?? Array.Empty<Models.Logiqx.DeviceRef>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Sample ?? Array.Empty<Models.Logiqx.Sample>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Archive ?? Array.Empty<Models.Logiqx.Archive>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.Driver ?? Array.Empty<Models.Logiqx.Driver>())
{
Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS);
}
foreach (var item in game.SoftwareList ?? Array.Empty<Models.Logiqx.SoftwareList>())
{ {
Assert.Null(item.ADDITIONAL_ATTRIBUTES); Assert.Null(item.ADDITIONAL_ATTRIBUTES);
Assert.Null(item.ADDITIONAL_ELEMENTS); Assert.Null(item.ADDITIONAL_ELEMENTS);