mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Convert Chip fully over to properties
This commit is contained in:
@@ -167,6 +167,8 @@ namespace SabreTools.Data.Extensions
|
||||
else if (self is Chip selfChip && clone is Chip cloneChip)
|
||||
{
|
||||
cloneChip.ChipType = selfChip.ChipType;
|
||||
cloneChip.Clock = selfChip.Clock;
|
||||
cloneChip.Flags = selfChip.Flags;
|
||||
cloneChip.SoundOnly = selfChip.SoundOnly;
|
||||
cloneChip.Tag = selfChip.Tag;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace SabreTools.Data.Models.ClrMamePro
|
||||
/// <remarks>flags</remarks>
|
||||
public string? Flags { get; set; }
|
||||
|
||||
/// <remarks>clock, Numeric?</remarks>
|
||||
public string? Clock { get; set; }
|
||||
/// <remarks>clock</remarks>
|
||||
public long? Clock { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,6 @@ namespace SabreTools.Data.Models.Listxml
|
||||
public bool? SoundOnly { get; set; }
|
||||
|
||||
[XmlAttribute("clock")]
|
||||
public string? Clock { get; set; }
|
||||
public long? Clock { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
[JsonObject("chip"), XmlRoot("chip")]
|
||||
public class Chip : DatItem
|
||||
public class Chip : DatItem, ICloneable, IEquatable<Chip>
|
||||
{
|
||||
#region Properties
|
||||
|
||||
/// <remarks>(cpu|audio)</remarks>
|
||||
public ChipType? ChipType { get; set; }
|
||||
|
||||
public long? Clock { get; set; }
|
||||
|
||||
public string? Flags { get; set; }
|
||||
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
@@ -20,16 +25,56 @@ namespace SabreTools.Data.Models.Metadata
|
||||
|
||||
#endregion
|
||||
|
||||
#region Keys
|
||||
|
||||
/// <remarks>long</remarks>
|
||||
public const string ClockKey = "clock";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string FlagsKey = "flags";
|
||||
|
||||
#endregion
|
||||
|
||||
public Chip() => ItemType = ItemType.Chip;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public object Clone()
|
||||
{
|
||||
var obj = new Chip();
|
||||
|
||||
obj.ChipType = ChipType;
|
||||
obj.Clock = Clock;
|
||||
obj.Flags = Flags;
|
||||
obj.Name = Name;
|
||||
obj.SoundOnly = SoundOnly;
|
||||
obj.Tag = Tag;
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public bool Equals(Chip? other)
|
||||
{
|
||||
// Null never matches
|
||||
if (other is null)
|
||||
return false;
|
||||
|
||||
// Properties
|
||||
if (ChipType != other.ChipType)
|
||||
return false;
|
||||
|
||||
if (Clock != other.Clock)
|
||||
return false;
|
||||
|
||||
if ((Flags is null) ^ (other.Flags is null))
|
||||
return false;
|
||||
else if (Flags is not null && !Flags.Equals(other.Flags, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
if ((Name is null) ^ (other.Name is null))
|
||||
return false;
|
||||
else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
if (SoundOnly != other.SoundOnly)
|
||||
return false;
|
||||
|
||||
if ((Tag is null) ^ (other.Tag is null))
|
||||
return false;
|
||||
else if (Tag is not null && !Tag.Equals(other.Tag, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -404,8 +404,8 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
{
|
||||
return new Data.Models.Metadata.Chip
|
||||
{
|
||||
[Data.Models.Metadata.Chip.ClockKey] = 12345L,
|
||||
[Data.Models.Metadata.Chip.FlagsKey] = "flags",
|
||||
Clock = 12345L,
|
||||
Flags = "flags",
|
||||
Name = "name",
|
||||
SoundOnly = true,
|
||||
Tag = "tag",
|
||||
@@ -1174,8 +1174,8 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
private static void ValidateChip(Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal(12345L, chip.ReadLong(Data.Models.Metadata.Chip.ClockKey));
|
||||
Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey));
|
||||
Assert.Equal(12345L, chip.Clock);
|
||||
Assert.Equal("flags", chip.Flags);
|
||||
Assert.Equal("name", chip.Name);
|
||||
Assert.True(chip.SoundOnly);
|
||||
Assert.Equal("tag", chip.Tag);
|
||||
|
||||
@@ -681,8 +681,8 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
private static void ValidateMetadataChip(Data.Models.Metadata.Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal(12345, chip.ReadLong(Data.Models.Metadata.Chip.ClockKey));
|
||||
Assert.Equal("flags", chip.ReadString(Data.Models.Metadata.Chip.FlagsKey));
|
||||
Assert.Equal(12345, chip.Clock);
|
||||
Assert.Equal("flags", chip.Flags);
|
||||
Assert.Equal("name", chip.Name);
|
||||
Assert.True(chip.SoundOnly);
|
||||
Assert.Equal("tag", chip.Tag);
|
||||
|
||||
@@ -22,6 +22,18 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
public override Data.Models.Metadata.ItemType ItemType
|
||||
=> Data.Models.Metadata.ItemType.Chip;
|
||||
|
||||
public long? Clock
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Chip)?.Clock;
|
||||
set => (_internal as Data.Models.Metadata.Chip)?.Clock = value;
|
||||
}
|
||||
|
||||
public string? Flags
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Chip)?.Flags;
|
||||
set => (_internal as Data.Models.Metadata.Chip)?.Flags = value;
|
||||
}
|
||||
|
||||
public string? Name
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Chip)?.Name;
|
||||
|
||||
@@ -370,6 +370,12 @@ namespace SabreTools.Metadata.Filter
|
||||
case Chip item when fieldName == "type":
|
||||
checkValue = item.ChipType?.AsStringValue();
|
||||
return true;
|
||||
case Chip item when fieldName == "clock":
|
||||
checkValue = item.Clock?.ToString();
|
||||
return true;
|
||||
case Chip item when fieldName == "flags":
|
||||
checkValue = item.Flags;
|
||||
return true;
|
||||
case Chip item when fieldName == "soundonly":
|
||||
checkValue = item.SoundOnly.FromYesNo();
|
||||
return true;
|
||||
|
||||
@@ -84,11 +84,7 @@ namespace SabreTools.Metadata
|
||||
}
|
||||
else if (self is Chip selfChip && other is Chip otherChip)
|
||||
{
|
||||
if (selfChip.ChipType != otherChip.ChipType)
|
||||
return false;
|
||||
if (selfChip.SoundOnly != otherChip.SoundOnly)
|
||||
return false;
|
||||
if (selfChip.Tag != otherChip.Tag)
|
||||
if (!selfChip.Equals(otherChip))
|
||||
return false;
|
||||
}
|
||||
else if (self is Condition selfCondition && other is Condition otherCondition)
|
||||
|
||||
@@ -158,8 +158,8 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
{
|
||||
Type = Data.Models.Metadata.ChipType.CPU,
|
||||
Name = "name",
|
||||
Flags = "XXXXXX",
|
||||
Clock = "XXXXXX",
|
||||
Flags = "flags",
|
||||
Clock = 12345,
|
||||
};
|
||||
|
||||
var video = new Data.Models.ClrMamePro.Video
|
||||
@@ -441,8 +441,8 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
|
||||
Assert.Equal("name", chip.Name);
|
||||
Assert.Equal("XXXXXX", chip.Flags);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
Assert.Equal("flags", chip.Flags);
|
||||
Assert.Equal(12345, chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -115,7 +115,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Tag = "tag",
|
||||
Type = Data.Models.Metadata.ChipType.CPU,
|
||||
SoundOnly = true,
|
||||
Clock = "XXXXXX",
|
||||
Clock = 12345,
|
||||
};
|
||||
|
||||
var display = new Data.Models.Listxml.Display
|
||||
@@ -543,7 +543,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Assert.Equal("tag", chip.Tag);
|
||||
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
|
||||
Assert.Equal(true, chip.SoundOnly);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
Assert.Equal(12345, chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -111,7 +111,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Tag = "tag",
|
||||
Type = Data.Models.Metadata.ChipType.CPU,
|
||||
SoundOnly = true,
|
||||
Clock = "XXXXXX",
|
||||
Clock = 12345,
|
||||
};
|
||||
|
||||
var display = new Data.Models.Listxml.Display
|
||||
@@ -537,7 +537,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Assert.Equal("tag", chip.Tag);
|
||||
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
|
||||
Assert.Equal(true, chip.SoundOnly);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
Assert.Equal(12345, chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -111,7 +111,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Tag = "tag",
|
||||
Type = Data.Models.Metadata.ChipType.CPU,
|
||||
SoundOnly = true,
|
||||
Clock = "XXXXXX",
|
||||
Clock = 12345,
|
||||
};
|
||||
|
||||
var display = new Data.Models.Listxml.Display
|
||||
@@ -537,7 +537,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Assert.Equal("tag", chip.Tag);
|
||||
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
|
||||
Assert.Equal(true, chip.SoundOnly);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
Assert.Equal(12345, chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -169,8 +169,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
{
|
||||
Type = item.ChipType,
|
||||
Name = item.Name,
|
||||
Flags = item.ReadString(Data.Models.Metadata.Chip.FlagsKey),
|
||||
Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey),
|
||||
Flags = item.Flags,
|
||||
Clock = item.Clock,
|
||||
};
|
||||
return chip;
|
||||
}
|
||||
|
||||
@@ -182,8 +182,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
{
|
||||
ChipType = item.Type,
|
||||
Name = item.Name,
|
||||
[Data.Models.Metadata.Chip.FlagsKey] = item.Flags,
|
||||
[Data.Models.Metadata.Chip.ClockKey] = item.Clock,
|
||||
Flags = item.Flags,
|
||||
Clock = item.Clock,
|
||||
};
|
||||
return chip;
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
Tag = item.Tag,
|
||||
Type = item.ChipType,
|
||||
SoundOnly = item.SoundOnly,
|
||||
Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey),
|
||||
Clock = item.Clock,
|
||||
};
|
||||
return chip;
|
||||
}
|
||||
|
||||
@@ -229,7 +229,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
Tag = item.Tag,
|
||||
ChipType = item.Type,
|
||||
SoundOnly = item.SoundOnly,
|
||||
[Data.Models.Metadata.Chip.ClockKey] = item.Clock,
|
||||
Clock = item.Clock,
|
||||
};
|
||||
return chip;
|
||||
}
|
||||
|
||||
@@ -275,8 +275,8 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
{
|
||||
Type = Data.Models.Metadata.ChipType.CPU,
|
||||
Name = "name",
|
||||
Flags = "XXXXXX",
|
||||
Clock = "XXXXXX",
|
||||
Flags = "flags",
|
||||
Clock = 12345,
|
||||
};
|
||||
|
||||
var video = new Data.Models.ClrMamePro.Video
|
||||
@@ -558,8 +558,8 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
|
||||
Assert.Equal("name", chip.Name);
|
||||
Assert.Equal("XXXXXX", chip.Flags);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
Assert.Equal("flags", chip.Flags);
|
||||
Assert.Equal(12345, chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -182,7 +182,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Tag = "tag",
|
||||
Type = Data.Models.Metadata.ChipType.CPU,
|
||||
SoundOnly = true,
|
||||
Clock = "XXXXXX",
|
||||
Clock = 12345,
|
||||
};
|
||||
|
||||
var display = new Data.Models.Listxml.Display
|
||||
@@ -610,7 +610,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Assert.Equal("tag", chip.Tag);
|
||||
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
|
||||
Assert.Equal(true, chip.SoundOnly);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
Assert.Equal(12345, chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -178,7 +178,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Tag = "tag",
|
||||
Type = Data.Models.Metadata.ChipType.CPU,
|
||||
SoundOnly = true,
|
||||
Clock = "XXXXXX",
|
||||
Clock = 12345,
|
||||
};
|
||||
|
||||
var display = new Data.Models.Listxml.Display
|
||||
@@ -604,7 +604,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Assert.Equal("tag", chip.Tag);
|
||||
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
|
||||
Assert.Equal(true, chip.SoundOnly);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
Assert.Equal(12345, chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -178,7 +178,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Tag = "tag",
|
||||
Type = Data.Models.Metadata.ChipType.CPU,
|
||||
SoundOnly = true,
|
||||
Clock = "XXXXXX",
|
||||
Clock = 12345,
|
||||
};
|
||||
|
||||
var display = new Data.Models.Listxml.Display
|
||||
@@ -604,7 +604,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Assert.Equal("tag", chip.Tag);
|
||||
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type);
|
||||
Assert.Equal(true, chip.SoundOnly);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
Assert.Equal(12345, chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -776,7 +776,7 @@ namespace SabreTools.Serialization.Readers
|
||||
chip.Flags = kvp.Value;
|
||||
break;
|
||||
case "clock":
|
||||
chip.Clock = kvp.Value;
|
||||
chip.Clock = NumberHelper.ConvertToInt64(kvp.Value);
|
||||
break;
|
||||
default:
|
||||
// TODO: Log invalid values
|
||||
|
||||
@@ -192,7 +192,7 @@ namespace SabreTools.Serialization.Readers
|
||||
obj.Tag = reader.GetAttribute("tag");
|
||||
obj.Type = reader.GetAttribute("type").AsChipType();
|
||||
obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo();
|
||||
obj.Clock = reader.GetAttribute("clock");
|
||||
obj.Clock = NumberHelper.ConvertToInt64(reader.GetAttribute("clock"));
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ namespace SabreTools.Serialization.Readers
|
||||
obj.Tag = reader.GetAttribute("tag");
|
||||
obj.Type = reader.GetAttribute("type").AsChipType();
|
||||
obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo();
|
||||
obj.Clock = reader.GetAttribute("clock");
|
||||
obj.Clock = NumberHelper.ConvertToInt64(reader.GetAttribute("clock"));
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ namespace SabreTools.Serialization.Readers
|
||||
obj.Tag = reader.GetAttribute("tag");
|
||||
obj.Type = reader.GetAttribute("type").AsChipType();
|
||||
obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo();
|
||||
obj.Clock = reader.GetAttribute("clock");
|
||||
obj.Clock = NumberHelper.ConvertToInt64(reader.GetAttribute("clock"));
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteRequiredAttributeString("type", chip.Type?.AsStringValue(), throwOnError: true);
|
||||
writer.WriteRequiredAttributeString("name", chip.Name, throwOnError: true);
|
||||
writer.WriteOptionalAttributeString("flags", chip.Flags);
|
||||
writer.WriteOptionalAttributeString("clock", chip.Clock);
|
||||
writer.WriteOptionalAttributeString("clock", chip.Clock?.ToString());
|
||||
writer.WriteEndElement(); // chip
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteOptionalAttributeString("tag", obj.Tag);
|
||||
writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
|
||||
writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo());
|
||||
writer.WriteOptionalAttributeString("clock", obj.Clock);
|
||||
writer.WriteOptionalAttributeString("clock", obj.Clock?.ToString());
|
||||
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteOptionalAttributeString("tag", obj.Tag);
|
||||
writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
|
||||
writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo());
|
||||
writer.WriteOptionalAttributeString("clock", obj.Clock);
|
||||
writer.WriteOptionalAttributeString("clock", obj.Clock?.ToString());
|
||||
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteOptionalAttributeString("tag", obj.Tag);
|
||||
writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue());
|
||||
writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo());
|
||||
writer.WriteOptionalAttributeString("clock", obj.Clock);
|
||||
writer.WriteOptionalAttributeString("clock", obj.Clock?.ToString());
|
||||
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user