Introduce base class for OpenMSX

This commit is contained in:
Matt Nadareski
2023-07-13 23:14:39 -04:00
parent ecac575521
commit d62632d3fa
6 changed files with 42 additions and 95 deletions

View File

@@ -9,14 +9,10 @@ namespace SabreTools.Models.OpenMSX
[XmlElement("original")] [XmlElement("original")]
public Original? Original { get; set; } public Original? Original { get; set; }
[XmlElement("rom")] [XmlElement("rom", typeof(Rom))]
public Rom? Rom { get; set; } [XmlElement("megarom", typeof(MegaRom))]
[XmlElement("sccpluscart", typeof(SCCPlusCart))]
[XmlElement("megarom")] public RomBase? Rom { get; set; }
public MegaRom? MegaRom { get; set; }
[XmlElement("sccpluscart")]
public SCCPlusCart? SCCPlusCart { get; set; }
#region DO NOT USE IN PRODUCTION #region DO NOT USE IN PRODUCTION

View File

@@ -1,30 +1,7 @@
using System.Xml;
using System.Xml.Serialization; using System.Xml.Serialization;
namespace SabreTools.Models.OpenMSX namespace SabreTools.Models.OpenMSX
{ {
[XmlRoot("megarom")] [XmlRoot("megarom")]
public class MegaRom public class MegaRom : RomBase { }
{
[XmlElement("type")]
public string? Type { get; set; }
[XmlElement("hash")]
public string? Hash { get; set; }
[XmlElement("remark")]
public string? Remark { 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

@@ -1,33 +1,7 @@
using System.Xml;
using System.Xml.Serialization; using System.Xml.Serialization;
namespace SabreTools.Models.OpenMSX namespace SabreTools.Models.OpenMSX
{ {
[XmlRoot("rom")] [XmlRoot("rom")]
public class Rom public class Rom : RomBase { }
{
[XmlElement("start")]
public string? Start { get; set; }
[XmlElement("type")]
public string? Type { get; set; }
[XmlElement("hash")]
public string? Hash { get; set; }
[XmlElement("remark")]
public string? Remark { 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

@@ -0,0 +1,35 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OpenMSX
{
/// <summary>
/// Base class to unify the various rom types
/// </summary>
public abstract class RomBase
{
[XmlElement("start")]
public string? Start { get; set; }
[XmlElement("type")]
public string? Type { get; set; }
[XmlElement("hash")]
public string? Hash { get; set; }
[XmlElement("remark")]
public string? Remark { 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

@@ -1,30 +1,7 @@
using System.Xml;
using System.Xml.Serialization; using System.Xml.Serialization;
namespace SabreTools.Models.OpenMSX namespace SabreTools.Models.OpenMSX
{ {
[XmlRoot("sccpluscart")] [XmlRoot("sccpluscart")]
public class SCCPlusCart public class SCCPlusCart : RomBase { }
{
[XmlElement("boot")]
public string? Boot { get; set; }
[XmlElement("hash")]
public string? Hash { get; set; }
[XmlElement("remark")]
public string? Remark { 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

@@ -671,18 +671,6 @@ namespace SabreTools.Test.Parser
Assert.Null(dump.Rom.ADDITIONAL_ATTRIBUTES); Assert.Null(dump.Rom.ADDITIONAL_ATTRIBUTES);
Assert.Null(dump.Rom.ADDITIONAL_ELEMENTS); Assert.Null(dump.Rom.ADDITIONAL_ELEMENTS);
} }
if (dump.MegaRom != null)
{
Assert.Null(dump.MegaRom.ADDITIONAL_ATTRIBUTES);
Assert.Null(dump.MegaRom.ADDITIONAL_ELEMENTS);
}
if (dump.SCCPlusCart != null)
{
Assert.Null(dump.SCCPlusCart.ADDITIONAL_ATTRIBUTES);
Assert.Null(dump.SCCPlusCart.ADDITIONAL_ELEMENTS);
}
} }
} }
} }