using System.Collections.Generic;
using System.IO;
using System.Linq;
using SabreTools.Library.DatItems;
using SabreTools.Library.Filtering;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using SabreTools.Library.Tools;
///
/// This holds all of the auxiliary types needed for proper parsing
///
namespace SabreTools.Library.DatItems
{
#region DatItem
#region OpenMSX
///
/// Represents the OpenMSX original value
///
[JsonObject("original")]
public class Original
{
[JsonProperty("value")]
public bool? Value { get; set; }
[JsonProperty("content")]
public string Content { get; set; }
}
#endregion
#region SoftwareList
///
/// Represents one SoftwareList dataarea object
///
///
/// One DataArea can contain multiple Rom items
///
[JsonObject("dataarea")]
public class DataArea
{
///
/// Name of the item
///
[JsonProperty("name", DefaultValueHandling = DefaultValueHandling.Ignore)]
public string Name { get; set; }
///
/// Total size of the area
///
[JsonProperty("size", DefaultValueHandling = DefaultValueHandling.Ignore)]
public long? Size { get; set; }
///
/// Byte width of the area
///
[JsonProperty("width", DefaultValueHandling = DefaultValueHandling.Ignore)]
public string Width { get; set; } // TODO: (8|16|32|64) "8"
///
/// Byte endianness of the area
///
[JsonProperty("endianness", DefaultValueHandling = DefaultValueHandling.Ignore)]
public string Endianness { get; set; } // TODO: (big|little) "little"
}
///
/// Represents one SoftwareList diskarea object
///
///
/// One DiskArea can contain multiple Disk items
///
[JsonObject("diskarea")]
public class DiskArea
{
///
/// Name of the item
///
[JsonProperty("name", DefaultValueHandling = DefaultValueHandling.Ignore)]
public string Name { get; set; }
}
///
/// Represents one SoftwareList part object
///
///
/// One Part can contain multiple PartFeature, DataArea, DiskArea, and DipSwitch items
///
[JsonObject("part")]
public class Part
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("interface")]
public string Interface { get; set; }
[JsonProperty("features", DefaultValueHandling = DefaultValueHandling.Ignore)]
public List Features { get; set; }
}
///
/// Represents one SoftwareList feature object
///
/// TODO: Promote this to DatItem
[JsonObject("part_feature")]
public class PartFeature
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("value")]
public string Value { get; set; }
}
#endregion
#endregion //DatItem
}