diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
index c00138eb..f015c743 100644
--- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
+++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
@@ -2743,7 +2743,6 @@ namespace SabreTools.Data.Extensions.Test
[InlineData("biosset", ItemType.BiosSet)]
[InlineData("blank", ItemType.Blank)]
[InlineData("chip", ItemType.Chip)]
- [InlineData("condition", ItemType.Condition)]
[InlineData("configuration", ItemType.Configuration)]
[InlineData("conflocation", ItemType.ConfLocation)]
[InlineData("confsetting", ItemType.ConfSetting)]
@@ -3146,7 +3145,6 @@ namespace SabreTools.Data.Extensions.Test
[InlineData(ItemType.BiosSet, "biosset")]
[InlineData(ItemType.Blank, "blank")]
[InlineData(ItemType.Chip, "chip")]
- [InlineData(ItemType.Condition, "condition")]
[InlineData(ItemType.Configuration, "configuration")]
[InlineData(ItemType.ConfLocation, "conflocation")]
[InlineData(ItemType.ConfSetting, "confsetting")]
diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs
index 9852c363..4acd8900 100644
--- a/SabreTools.Data.Extensions/MetadataExtensions.cs
+++ b/SabreTools.Data.Extensions/MetadataExtensions.cs
@@ -909,7 +909,6 @@ namespace SabreTools.Data.Extensions
"archive" => ItemType.Archive,
"biosset" => ItemType.BiosSet,
"chip" => ItemType.Chip,
- "condition" => ItemType.Condition,
"configuration" => ItemType.Configuration,
"conflocation" => ItemType.ConfLocation,
"confsetting" => ItemType.ConfSetting,
@@ -1393,7 +1392,6 @@ namespace SabreTools.Data.Extensions
ItemType.Archive => "archive",
ItemType.BiosSet => "biosset",
ItemType.Chip => "chip",
- ItemType.Condition => "condition",
ItemType.Configuration => "configuration",
ItemType.ConfLocation => "conflocation",
ItemType.ConfSetting => "confsetting",
diff --git a/SabreTools.Data.Models/Metadata/Adjuster.cs b/SabreTools.Data.Models/Metadata/Adjuster.cs
index 35ed6e8b..53adfeb6 100644
--- a/SabreTools.Data.Models/Metadata/Adjuster.cs
+++ b/SabreTools.Data.Models/Metadata/Adjuster.cs
@@ -9,7 +9,17 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
- public Condition? Condition { get; set; }
+ /// Condition subitem
+ public string? ConditionMask { get; set; }
+
+ /// Condition subitem, (eq|ne|gt|le|lt|ge)
+ public Relation? ConditionRelation { get; set; }
+
+ /// Condition subitem
+ public string? ConditionTag { get; set; }
+
+ /// Condition subitem
+ public string? ConditionValue { get; set; }
/// (yes|no) "no"
public bool? Default { get; set; }
@@ -25,7 +35,10 @@ namespace SabreTools.Data.Models.Metadata
{
var obj = new Adjuster();
- obj.Condition = Condition?.Clone() as Condition;
+ obj.ConditionMask = ConditionMask;
+ obj.ConditionRelation = ConditionRelation;
+ obj.ConditionTag = ConditionTag;
+ obj.ConditionValue = ConditionValue;
obj.Default = Default;
obj.Name = Name;
@@ -40,6 +53,24 @@ namespace SabreTools.Data.Models.Metadata
return false;
// Properties
+ if ((ConditionMask is null) ^ (other.ConditionMask is null))
+ return false;
+ else if (ConditionMask is not null && !ConditionMask.Equals(other.ConditionMask, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if (ConditionRelation != other.ConditionRelation)
+ return false;
+
+ if ((ConditionTag is null) ^ (other.ConditionTag is null))
+ return false;
+ else if (ConditionTag is not null && !ConditionTag.Equals(other.ConditionTag, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if ((ConditionValue is null) ^ (other.ConditionValue is null))
+ return false;
+ else if (ConditionValue is not null && !ConditionValue.Equals(other.ConditionValue, StringComparison.OrdinalIgnoreCase))
+ return false;
+
if (Default != other.Default)
return false;
@@ -48,12 +79,6 @@ namespace SabreTools.Data.Models.Metadata
else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase))
return false;
- // Sub-items
- if ((Condition is null) ^ (other.Condition is null))
- return false;
- else if (Condition is not null && other.Condition is not null && Condition.Equals(other.Condition))
- return false;
-
return true;
}
}
diff --git a/SabreTools.Data.Models/Metadata/Condition.cs b/SabreTools.Data.Models/Metadata/Condition.cs
deleted file mode 100644
index b6daea52..00000000
--- a/SabreTools.Data.Models/Metadata/Condition.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-using System;
-using System.Xml.Serialization;
-using Newtonsoft.Json;
-
-namespace SabreTools.Data.Models.Metadata
-{
- [JsonObject("condition"), XmlRoot("condition")]
- public class Condition : DatItem, ICloneable, IEquatable
- {
- #region Properties
-
- public string? Mask { get; set; }
-
- /// (eq|ne|gt|le|lt|ge)
- public Relation? Relation { get; set; }
-
- public string? Tag { get; set; }
-
- public string? Value { get; set; }
-
- #endregion
-
- public Condition() => ItemType = ItemType.Condition;
-
- ///
- public object Clone()
- {
- var obj = new Condition();
-
- obj.Mask = Mask;
- obj.Relation = Relation;
- obj.Tag = Tag;
- obj.Value = Value;
-
- return obj;
- }
-
- ///
- public bool Equals(Condition? other)
- {
- // Null never matches
- if (other is null)
- return false;
-
- // Properties
- if ((Mask is null) ^ (other.Mask is null))
- return false;
- else if (Mask is not null && !Mask.Equals(other.Mask, StringComparison.OrdinalIgnoreCase))
- return false;
-
- if (Relation != other.Relation)
- 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;
-
- if ((Value is null) ^ (other.Value is null))
- return false;
- else if (Value is not null && !Value.Equals(other.Value, StringComparison.OrdinalIgnoreCase))
- return false;
-
- return true;
- }
- }
-}
diff --git a/SabreTools.Data.Models/Metadata/ConfSetting.cs b/SabreTools.Data.Models/Metadata/ConfSetting.cs
index 8a0676c2..60b533c9 100644
--- a/SabreTools.Data.Models/Metadata/ConfSetting.cs
+++ b/SabreTools.Data.Models/Metadata/ConfSetting.cs
@@ -9,7 +9,17 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
- public Condition? Condition { get; set; }
+ /// Condition subitem
+ public string? ConditionMask { get; set; }
+
+ /// Condition subitem, (eq|ne|gt|le|lt|ge)
+ public Relation? ConditionRelation { get; set; }
+
+ /// Condition subitem
+ public string? ConditionTag { get; set; }
+
+ /// Condition subitem
+ public string? ConditionValue { get; set; }
/// (yes|no) "no"
public bool? Default { get; set; }
@@ -27,7 +37,10 @@ namespace SabreTools.Data.Models.Metadata
{
var obj = new ConfSetting();
- obj.Condition = Condition?.Clone() as Condition;
+ obj.ConditionMask = ConditionMask;
+ obj.ConditionRelation = ConditionRelation;
+ obj.ConditionTag = ConditionTag;
+ obj.ConditionValue = ConditionValue;
obj.Default = Default;
obj.Name = Name;
obj.Value = Value;
@@ -43,6 +56,24 @@ namespace SabreTools.Data.Models.Metadata
return false;
// Properties
+ if ((ConditionMask is null) ^ (other.ConditionMask is null))
+ return false;
+ else if (ConditionMask is not null && !ConditionMask.Equals(other.ConditionMask, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if (ConditionRelation != other.ConditionRelation)
+ return false;
+
+ if ((ConditionTag is null) ^ (other.ConditionTag is null))
+ return false;
+ else if (ConditionTag is not null && !ConditionTag.Equals(other.ConditionTag, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if ((ConditionValue is null) ^ (other.ConditionValue is null))
+ return false;
+ else if (ConditionValue is not null && !ConditionValue.Equals(other.ConditionValue, StringComparison.OrdinalIgnoreCase))
+ return false;
+
if (Default != other.Default)
return false;
@@ -56,12 +87,6 @@ namespace SabreTools.Data.Models.Metadata
else if (Value is not null && !Value.Equals(other.Value, StringComparison.OrdinalIgnoreCase))
return false;
- // Sub-items
- if ((Condition is null) ^ (other.Condition is null))
- return false;
- else if (Condition is not null && other.Condition is not null && Condition.Equals(other.Condition))
- return false;
-
return true;
}
}
diff --git a/SabreTools.Data.Models/Metadata/Configuration.cs b/SabreTools.Data.Models/Metadata/Configuration.cs
index 13bf012f..3a0f6f20 100644
--- a/SabreTools.Data.Models/Metadata/Configuration.cs
+++ b/SabreTools.Data.Models/Metadata/Configuration.cs
@@ -9,7 +9,17 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
- public Condition? Condition { get; set; }
+ /// Condition subitem
+ public string? ConditionMask { get; set; }
+
+ /// Condition subitem, (eq|ne|gt|le|lt|ge)
+ public Relation? ConditionRelation { get; set; }
+
+ /// Condition subitem
+ public string? ConditionTag { get; set; }
+
+ /// Condition subitem
+ public string? ConditionValue { get; set; }
public ConfLocation[]? ConfLocation { get; set; }
@@ -30,7 +40,10 @@ namespace SabreTools.Data.Models.Metadata
{
var obj = new Configuration();
- obj.Condition = Condition?.Clone() as Condition;
+ obj.ConditionMask = ConditionMask;
+ obj.ConditionRelation = ConditionRelation;
+ obj.ConditionTag = ConditionTag;
+ obj.ConditionValue = ConditionValue;
if (ConfLocation is not null)
obj.ConfLocation = Array.ConvertAll(ConfLocation, i => (ConfLocation)i.Clone());
if (ConfSetting is not null)
@@ -50,6 +63,24 @@ namespace SabreTools.Data.Models.Metadata
return false;
// Properties
+ if ((ConditionMask is null) ^ (other.ConditionMask is null))
+ return false;
+ else if (ConditionMask is not null && !ConditionMask.Equals(other.ConditionMask, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if (ConditionRelation != other.ConditionRelation)
+ return false;
+
+ if ((ConditionTag is null) ^ (other.ConditionTag is null))
+ return false;
+ else if (ConditionTag is not null && !ConditionTag.Equals(other.ConditionTag, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if ((ConditionValue is null) ^ (other.ConditionValue is null))
+ return false;
+ else if (ConditionValue is not null && !ConditionValue.Equals(other.ConditionValue, StringComparison.OrdinalIgnoreCase))
+ return false;
+
if ((Mask is null) ^ (other.Mask is null))
return false;
else if (Mask is not null && !Mask.Equals(other.Mask, StringComparison.OrdinalIgnoreCase))
@@ -65,12 +96,6 @@ namespace SabreTools.Data.Models.Metadata
else if (Tag is not null && !Tag.Equals(other.Tag, StringComparison.OrdinalIgnoreCase))
return false;
- // Sub-items
- if ((Condition is null) ^ (other.Condition is null))
- return false;
- else if (Condition is not null && other.Condition is not null && Condition.Equals(other.Condition))
- return false;
-
// TODO: Figure out how to properly check arrays
return true;
diff --git a/SabreTools.Data.Models/Metadata/DipSwitch.cs b/SabreTools.Data.Models/Metadata/DipSwitch.cs
index 93cc798f..a4028d18 100644
--- a/SabreTools.Data.Models/Metadata/DipSwitch.cs
+++ b/SabreTools.Data.Models/Metadata/DipSwitch.cs
@@ -9,7 +9,17 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
- public Condition? Condition { get; set; }
+ /// Condition subitem
+ public string? ConditionMask { get; set; }
+
+ /// Condition subitem, (eq|ne|gt|le|lt|ge)
+ public Relation? ConditionRelation { get; set; }
+
+ /// Condition subitem
+ public string? ConditionTag { get; set; }
+
+ /// Condition subitem
+ public string? ConditionValue { get; set; }
/// (yes|no) "no"
public bool? Default { get; set; }
@@ -35,7 +45,10 @@ namespace SabreTools.Data.Models.Metadata
{
var obj = new DipSwitch();
- obj.Condition = Condition?.Clone() as Condition;
+ obj.ConditionMask = ConditionMask;
+ obj.ConditionRelation = ConditionRelation;
+ obj.ConditionTag = ConditionTag;
+ obj.ConditionValue = ConditionValue;
obj.Default = Default;
if (DipLocation is not null)
obj.DipLocation = Array.ConvertAll(DipLocation, i => (DipLocation)i.Clone());
@@ -58,6 +71,24 @@ namespace SabreTools.Data.Models.Metadata
return false;
// Properties
+ if ((ConditionMask is null) ^ (other.ConditionMask is null))
+ return false;
+ else if (ConditionMask is not null && !ConditionMask.Equals(other.ConditionMask, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if (ConditionRelation != other.ConditionRelation)
+ return false;
+
+ if ((ConditionTag is null) ^ (other.ConditionTag is null))
+ return false;
+ else if (ConditionTag is not null && !ConditionTag.Equals(other.ConditionTag, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if ((ConditionValue is null) ^ (other.ConditionValue is null))
+ return false;
+ else if (ConditionValue is not null && !ConditionValue.Equals(other.ConditionValue, StringComparison.OrdinalIgnoreCase))
+ return false;
+
if ((Mask is null) ^ (other.Mask is null))
return false;
else if (Mask is not null && !Mask.Equals(other.Mask, StringComparison.OrdinalIgnoreCase))
@@ -73,12 +104,6 @@ namespace SabreTools.Data.Models.Metadata
else if (Tag is not null && !Tag.Equals(other.Tag, StringComparison.OrdinalIgnoreCase))
return false;
- // Sub-items
- if ((Condition is null) ^ (other.Condition is null))
- return false;
- else if (Condition is not null && other.Condition is not null && Condition.Equals(other.Condition))
- return false;
-
// TODO: Figure out how to properly check arrays
return true;
diff --git a/SabreTools.Data.Models/Metadata/DipValue.cs b/SabreTools.Data.Models/Metadata/DipValue.cs
index c23ed88f..7b623a91 100644
--- a/SabreTools.Data.Models/Metadata/DipValue.cs
+++ b/SabreTools.Data.Models/Metadata/DipValue.cs
@@ -9,7 +9,17 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
- public Condition? Condition { get; set; }
+ /// Condition subitem
+ public string? ConditionMask { get; set; }
+
+ /// Condition subitem, (eq|ne|gt|le|lt|ge)
+ public Relation? ConditionRelation { get; set; }
+
+ /// Condition subitem
+ public string? ConditionTag { get; set; }
+
+ /// Condition subitem
+ public string? ConditionValue { get; set; }
/// (yes|no) "no"
public bool? Default { get; set; }
@@ -27,7 +37,10 @@ namespace SabreTools.Data.Models.Metadata
{
var obj = new DipValue();
- obj.Condition = Condition?.Clone() as Condition;
+ obj.ConditionMask = ConditionMask;
+ obj.ConditionRelation = ConditionRelation;
+ obj.ConditionTag = ConditionTag;
+ obj.ConditionValue = ConditionValue;
obj.Default = Default;
obj.Name = Name;
obj.Value = Value;
@@ -43,6 +56,24 @@ namespace SabreTools.Data.Models.Metadata
return false;
// Properties
+ if ((ConditionMask is null) ^ (other.ConditionMask is null))
+ return false;
+ else if (ConditionMask is not null && !ConditionMask.Equals(other.ConditionMask, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if (ConditionRelation != other.ConditionRelation)
+ return false;
+
+ if ((ConditionTag is null) ^ (other.ConditionTag is null))
+ return false;
+ else if (ConditionTag is not null && !ConditionTag.Equals(other.ConditionTag, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if ((ConditionValue is null) ^ (other.ConditionValue is null))
+ return false;
+ else if (ConditionValue is not null && !ConditionValue.Equals(other.ConditionValue, StringComparison.OrdinalIgnoreCase))
+ return false;
+
if (Default != other.Default)
return false;
@@ -56,12 +87,6 @@ namespace SabreTools.Data.Models.Metadata
else if (Value is not null && !Value.Equals(other.Value, StringComparison.OrdinalIgnoreCase))
return false;
- // Sub-items
- if ((Condition is null) ^ (other.Condition is null))
- return false;
- else if (Condition is not null && other.Condition is not null && Condition.Equals(other.Condition))
- return false;
-
return true;
}
}
diff --git a/SabreTools.Data.Models/Metadata/Enums.cs b/SabreTools.Data.Models/Metadata/Enums.cs
index d29315e0..d97ef77f 100644
--- a/SabreTools.Data.Models/Metadata/Enums.cs
+++ b/SabreTools.Data.Models/Metadata/Enums.cs
@@ -276,7 +276,6 @@ namespace SabreTools.Data.Models.Metadata
Archive,
BiosSet,
Chip,
- Condition,
Configuration,
ConfLocation,
ConfSetting,
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
index dbdd82fc..7209020f 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
@@ -346,7 +346,10 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.Adjuster
{
- Condition = CreateMetadataCondition(),
+ ConditionValue = "value",
+ ConditionMask = "mask",
+ ConditionRelation = Data.Models.Metadata.Relation.Equal,
+ ConditionTag = "tag",
Default = true,
Name = "name",
};
@@ -427,7 +430,10 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.Configuration
{
- Condition = CreateMetadataCondition(),
+ ConditionValue = "value",
+ ConditionMask = "mask",
+ ConditionRelation = Data.Models.Metadata.Relation.Equal,
+ ConditionTag = "tag",
ConfLocation = [CreateMetadataConfLocation()],
ConfSetting = [CreateMetadataConfSetting()],
Mask = "mask",
@@ -436,17 +442,6 @@ namespace SabreTools.Metadata.DatFiles.Test
};
}
- private static Data.Models.Metadata.Condition CreateMetadataCondition()
- {
- return new Data.Models.Metadata.Condition
- {
- Value = "value",
- Mask = "mask",
- Relation = Data.Models.Metadata.Relation.Equal,
- Tag = "tag",
- };
- }
-
private static Data.Models.Metadata.ConfLocation CreateMetadataConfLocation()
{
return new Data.Models.Metadata.ConfLocation
@@ -461,7 +456,10 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.ConfSetting
{
- Condition = CreateMetadataCondition(),
+ ConditionValue = "value",
+ ConditionMask = "mask",
+ ConditionRelation = Data.Models.Metadata.Relation.Equal,
+ ConditionTag = "tag",
Default = true,
Name = "name",
Value = "value",
@@ -523,7 +521,10 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.DipSwitch
{
- Condition = CreateMetadataCondition(),
+ ConditionValue = "value",
+ ConditionMask = "mask",
+ ConditionRelation = Data.Models.Metadata.Relation.Equal,
+ ConditionTag = "tag",
Default = true,
DipLocation = [CreateMetadataDipLocation()],
DipValue = [CreateMetadataDipValue()],
@@ -538,7 +539,10 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.DipValue
{
- Condition = CreateMetadataCondition(),
+ ConditionValue = "value",
+ ConditionMask = "mask",
+ ConditionRelation = Data.Models.Metadata.Relation.Equal,
+ ConditionTag = "tag",
Default = true,
Name = "name",
Value = "value",
@@ -1132,10 +1136,12 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateAdjuster(Adjuster? adjuster)
{
Assert.NotNull(adjuster);
+ Assert.Equal("value", adjuster.ConditionValue);
+ Assert.Equal("mask", adjuster.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, adjuster.ConditionRelation);
+ Assert.Equal("tag", adjuster.ConditionTag);
Assert.True(adjuster.Default);
Assert.Equal("name", adjuster.Name);
-
- ValidateCondition(adjuster.Condition);
}
private static void ValidateAnalog(Analog? analog)
@@ -1169,24 +1175,17 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType);
}
- private static void ValidateCondition(Condition? condition)
- {
- Assert.NotNull(condition);
- Assert.Equal("value", condition.Value);
- Assert.Equal("mask", condition.Mask);
- Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
- Assert.Equal("tag", condition.Tag);
- }
-
private static void ValidateConfiguration(Configuration? configuration)
{
Assert.NotNull(configuration);
+ Assert.Equal("value", configuration.ConditionValue);
+ Assert.Equal("mask", configuration.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, configuration.ConditionRelation);
+ Assert.Equal("tag", configuration.ConditionTag);
Assert.Equal("mask", configuration.Mask);
Assert.Equal("name", configuration.Name);
Assert.Equal("tag", configuration.Tag);
- ValidateCondition(configuration.Condition);
-
ConfLocation[]? confLocations = configuration.ConfLocation;
Assert.NotNull(confLocations);
ConfLocation? confLocation = Assert.Single(confLocations);
@@ -1209,11 +1208,13 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateConfSetting(ConfSetting? confSetting)
{
Assert.NotNull(confSetting);
+ Assert.Equal("value", confSetting.ConditionValue);
+ Assert.Equal("mask", confSetting.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, confSetting.ConditionRelation);
+ Assert.Equal("tag", confSetting.ConditionTag);
Assert.True(confSetting.Default);
Assert.Equal("name", confSetting.Name);
Assert.Equal("value", confSetting.Value);
-
- ValidateCondition(confSetting.Condition);
}
private static void ValidateControl(Control? control)
@@ -1276,13 +1277,15 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateDipSwitch(DipSwitch? dipSwitch)
{
Assert.NotNull(dipSwitch);
+ Assert.Equal("value", dipSwitch.ConditionValue);
+ Assert.Equal("mask", dipSwitch.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, dipSwitch.ConditionRelation);
+ Assert.Equal("tag", dipSwitch.ConditionTag);
Assert.True(dipSwitch.Default);
Assert.Equal("mask", dipSwitch.Mask);
Assert.Equal("name", dipSwitch.Name);
Assert.Equal("tag", dipSwitch.Tag);
- ValidateCondition(dipSwitch.Condition);
-
DipLocation[]? dipLocations = dipSwitch.DipLocation;
Assert.NotNull(dipLocations);
DipLocation? dipLocation = Assert.Single(dipLocations);
@@ -1302,11 +1305,13 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateDipValue(DipValue? dipValue)
{
Assert.NotNull(dipValue);
+ Assert.Equal("value", dipValue.ConditionValue);
+ Assert.Equal("mask", dipValue.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, dipValue.ConditionRelation);
+ Assert.Equal("tag", dipValue.ConditionTag);
Assert.True(dipValue.Default);
Assert.Equal("name", dipValue.Name);
Assert.Equal("value", dipValue.Value);
-
- ValidateCondition(dipValue.Condition);
}
private static void ValidateDisk(Disk? disk)
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
index 754d2152..841eccbb 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
@@ -612,11 +612,12 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataAdjuster(Data.Models.Metadata.Adjuster? adjuster)
{
Assert.NotNull(adjuster);
+ Assert.Equal("value", adjuster.ConditionValue);
+ Assert.Equal("mask", adjuster.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, adjuster.ConditionRelation);
+ Assert.Equal("tag", adjuster.ConditionTag);
Assert.True(adjuster.Default);
Assert.Equal("name", adjuster.Name);
-
- Data.Models.Metadata.Condition? condition = adjuster.Condition;
- ValidateMetadataCondition(condition);
}
private static void ValidateMetadataAnalog(Data.Models.Metadata.Analog? analog)
@@ -682,24 +683,17 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType);
}
- private static void ValidateMetadataCondition(Data.Models.Metadata.Condition? condition)
- {
- Assert.NotNull(condition);
- Assert.Equal("value", condition.Value);
- Assert.Equal("mask", condition.Mask);
- Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation);
- Assert.Equal("tag", condition.Tag);
- }
-
private static void ValidateMetadataConfiguration(Data.Models.Metadata.Configuration? configuration)
{
Assert.NotNull(configuration);
+ Assert.Equal("value", configuration.ConditionValue);
+ Assert.Equal("mask", configuration.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, configuration.ConditionRelation);
+ Assert.Equal("tag", configuration.ConditionTag);
Assert.Equal("mask", configuration.Mask);
Assert.Equal("name", configuration.Name);
Assert.Equal("tag", configuration.Tag);
- ValidateMetadataCondition(configuration.Condition);
-
Data.Models.Metadata.ConfLocation[]? confLocations = configuration.ConfLocation;
Assert.NotNull(confLocations);
Data.Models.Metadata.ConfLocation? confLocation = Assert.Single(confLocations);
@@ -722,11 +716,13 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataConfSetting(Data.Models.Metadata.ConfSetting? confSetting)
{
Assert.NotNull(confSetting);
+ Assert.Equal("value", confSetting.ConditionValue);
+ Assert.Equal("mask", confSetting.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, confSetting.ConditionRelation);
+ Assert.Equal("tag", confSetting.ConditionTag);
Assert.True(confSetting.Default);
Assert.Equal("name", confSetting.Name);
Assert.Equal("value", confSetting.Value);
-
- ValidateMetadataCondition(confSetting.Condition);
}
private static void ValidateMetadataControl(Data.Models.Metadata.Control? control)
@@ -794,13 +790,15 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataDipSwitch(Data.Models.Metadata.DipSwitch? dipSwitch)
{
Assert.NotNull(dipSwitch);
+ Assert.Equal("value", dipSwitch.ConditionValue);
+ Assert.Equal("mask", dipSwitch.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, dipSwitch.ConditionRelation);
+ Assert.Equal("tag", dipSwitch.ConditionTag);
Assert.True(dipSwitch.Default);
Assert.Equal("mask", dipSwitch.Mask);
Assert.Equal("name", dipSwitch.Name);
Assert.Equal("tag", dipSwitch.Tag);
- ValidateMetadataCondition(dipSwitch.Condition);
-
Data.Models.Metadata.DipLocation[]? dipLocations = dipSwitch.DipLocation;
Assert.NotNull(dipLocations);
Data.Models.Metadata.DipLocation? dipLocation = Assert.Single(dipLocations);
@@ -820,11 +818,13 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataDipValue(Data.Models.Metadata.DipValue? dipValue)
{
Assert.NotNull(dipValue);
+ Assert.Equal("value", dipValue.ConditionValue);
+ Assert.Equal("mask", dipValue.ConditionMask);
+ Assert.Equal(Data.Models.Metadata.Relation.Equal, dipValue.ConditionRelation);
+ Assert.Equal("tag", dipValue.ConditionTag);
Assert.True(dipValue.Default);
Assert.Equal("name", dipValue.Name);
Assert.Equal("value", dipValue.Value);
-
- ValidateMetadataCondition(dipValue.Condition);
}
private static void ValidateMetadataDisk(Data.Models.Metadata.Disk? disk)
diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
index 63b7cf5e..ff4a96fd 100644
--- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
@@ -760,7 +760,6 @@ namespace SabreTools.Metadata.DatFiles.Test
Data.Models.Metadata.ItemType.Adjuster,
Data.Models.Metadata.ItemType.BiosSet,
Data.Models.Metadata.ItemType.Chip,
- Data.Models.Metadata.ItemType.Condition,
Data.Models.Metadata.ItemType.Configuration,
Data.Models.Metadata.ItemType.Device,
Data.Models.Metadata.ItemType.DeviceRef,
diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
index 4cd7ae9e..8b9fb617 100644
--- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
@@ -189,7 +189,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
Data.Models.Metadata.ItemType.Adjuster,
Data.Models.Metadata.ItemType.BiosSet,
Data.Models.Metadata.ItemType.Chip,
- Data.Models.Metadata.ItemType.Condition,
Data.Models.Metadata.ItemType.Configuration,
Data.Models.Metadata.ItemType.Device,
Data.Models.Metadata.ItemType.DeviceRef,
diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs
index cbd62453..1eac587b 100644
--- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs
@@ -273,9 +273,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Data.Models.Metadata.ItemType.Chip:
datItem = datItemObj.ToObject();
break;
- case Data.Models.Metadata.ItemType.Condition:
- datItem = datItemObj.ToObject();
- break;
case Data.Models.Metadata.ItemType.Configuration:
datItem = datItemObj.ToObject();
break;
diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs
index 7b458c6f..65173aca 100644
--- a/SabreTools.Metadata.DatItems/DatItem.cs
+++ b/SabreTools.Metadata.DatItems/DatItem.cs
@@ -17,7 +17,6 @@ namespace SabreTools.Metadata.DatItems
[XmlInclude(typeof(BiosSet))]
[XmlInclude(typeof(Blank))]
[XmlInclude(typeof(Chip))]
- [XmlInclude(typeof(Condition))]
[XmlInclude(typeof(Configuration))]
[XmlInclude(typeof(ConfLocation))]
[XmlInclude(typeof(ConfSetting))]
diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
index f11b1fba..6f364968 100644
--- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
-using SabreTools.Metadata.Filter;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -12,10 +11,29 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Properties
- public Condition? Condition { get; set; }
+ public string? ConditionMask
+ {
+ get => _internal.ConditionMask;
+ set => _internal.ConditionMask = value;
+ }
- [JsonIgnore]
- public bool ConditionSpecified => Condition is not null;
+ public Data.Models.Metadata.Relation? ConditionRelation
+ {
+ get => _internal.ConditionRelation;
+ set => _internal.ConditionRelation = value;
+ }
+
+ public string? ConditionTag
+ {
+ get => _internal.ConditionTag;
+ set => _internal.ConditionTag = value;
+ }
+
+ public string? ConditionValue
+ {
+ get => _internal.ConditionValue;
+ set => _internal.ConditionValue = value;
+ }
public bool? Default
{
@@ -39,12 +57,7 @@ namespace SabreTools.Metadata.DatItems.Formats
public Adjuster() : base() { }
- public Adjuster(Data.Models.Metadata.Adjuster item) : base(item)
- {
- // Handle subitems
- if (item.Condition is not null)
- Condition = new Condition(item.Condition);
- }
+ public Adjuster(Data.Models.Metadata.Adjuster item) : base(item) { }
public Adjuster(Data.Models.Metadata.Adjuster item, Machine machine, Source source) : this(item)
{
@@ -71,14 +84,7 @@ namespace SabreTools.Metadata.DatItems.Formats
///
public override Data.Models.Metadata.Adjuster GetInternalClone()
- {
- var adjusterItem = _internal.Clone() as Data.Models.Metadata.Adjuster ?? new();
-
- if (Condition is not null)
- adjusterItem.Condition = Condition.GetInternalClone();
-
- return adjusterItem;
- }
+ =>_internal.Clone() as Data.Models.Metadata.Adjuster ?? new();
#endregion
@@ -100,28 +106,5 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
-
- #region Manipulation
-
- ///
- public override bool PassesFilter(FilterRunner filterRunner)
- {
- if (Machine is not null && !Machine.PassesFilter(filterRunner))
- return false;
-
- // TODO: Condition
-
- return filterRunner.Run(_internal);
- }
-
- ///
- public override bool PassesFilterDB(FilterRunner filterRunner)
- {
- // TODO: Condition
-
- return filterRunner.Run(_internal);
- }
-
- #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs
deleted file mode 100644
index 6a9b8737..00000000
--- a/SabreTools.Metadata.DatItems/Formats/Condition.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System.Xml.Serialization;
-using Newtonsoft.Json;
-
-namespace SabreTools.Metadata.DatItems.Formats
-{
- ///
- /// Represents a condition on a machine or other item
- ///
- [JsonObject("condition"), XmlRoot("condition")]
- public sealed class Condition : DatItem
- {
- #region Properties
-
- /// />
- public override Data.Models.Metadata.ItemType ItemType
- => Data.Models.Metadata.ItemType.Condition;
-
- public string? Mask
- {
- get => _internal.Mask;
- set => _internal.Mask = value;
- }
-
- public Data.Models.Metadata.Relation? Relation
- {
- get => _internal.Relation;
- set => _internal.Relation = value;
- }
-
- public string? Tag
- {
- get => _internal.Tag;
- set => _internal.Tag = value;
- }
-
- public string? Value
- {
- get => _internal.Value;
- set => _internal.Value = value;
- }
-
- #endregion
-
- #region Constructors
-
- public Condition() : base() { }
-
- public Condition(Data.Models.Metadata.Condition item) : base(item) { }
-
- public Condition(Data.Models.Metadata.Condition item, Machine machine, Source source) : this(item)
- {
- Source = source;
- CopyMachineInformation(machine);
- }
-
- #endregion
-
- #region Accessors
-
- ///
- public override string? GetName() => null;
-
- ///
- public override void SetName(string? name) { }
-
- #endregion
-
- #region Cloning Methods
-
- ///
- public override object Clone() => new Condition(GetInternalClone());
-
- ///
- public override Data.Models.Metadata.Condition GetInternalClone()
- => _internal.Clone() as Data.Models.Metadata.Condition ?? new();
-
- #endregion
-
- #region Comparision Methods
-
- ///
- public override bool Equals(DatItem? other)
- {
- // If the other item is null
- if (other is null)
- return false;
-
- // If the type matches
- if (other is Condition otherCondition)
- return _internal.Equals(otherCondition._internal);
-
- // Everything else fails
- return false;
- }
-
- #endregion
- }
-}
diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
index d21a7088..ad099207 100644
--- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
+++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
-using SabreTools.Metadata.Filter;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -12,10 +11,29 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Properties
- public Condition? Condition { get; set; }
+ public string? ConditionMask
+ {
+ get => _internal.ConditionMask;
+ set => _internal.ConditionMask = value;
+ }
- [JsonIgnore]
- public bool ConditionSpecified => Condition is not null;
+ public Data.Models.Metadata.Relation? ConditionRelation
+ {
+ get => _internal.ConditionRelation;
+ set => _internal.ConditionRelation = value;
+ }
+
+ public string? ConditionTag
+ {
+ get => _internal.ConditionTag;
+ set => _internal.ConditionTag = value;
+ }
+
+ public string? ConditionValue
+ {
+ get => _internal.ConditionValue;
+ set => _internal.ConditionValue = value;
+ }
public bool? Default
{
@@ -45,12 +63,7 @@ namespace SabreTools.Metadata.DatItems.Formats
public ConfSetting() : base() { }
- public ConfSetting(Data.Models.Metadata.ConfSetting item) : base(item)
- {
- // Handle subitems
- if (item.Condition is not null)
- Condition = new Condition(item.Condition);
- }
+ public ConfSetting(Data.Models.Metadata.ConfSetting item) : base(item) { }
public ConfSetting(Data.Models.Metadata.ConfSetting item, Machine machine, Source source) : this(item)
{
@@ -77,14 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats
///
public override Data.Models.Metadata.ConfSetting GetInternalClone()
- {
- var confSettingItem = _internal.Clone() as Data.Models.Metadata.ConfSetting ?? new();
-
- if (Condition is not null)
- confSettingItem.Condition = Condition.GetInternalClone();
-
- return confSettingItem;
- }
+ => _internal.Clone() as Data.Models.Metadata.ConfSetting ?? new();
#endregion
@@ -106,28 +112,5 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
-
- #region Manipulation
-
- ///
- public override bool PassesFilter(FilterRunner filterRunner)
- {
- if (Machine is not null && !Machine.PassesFilter(filterRunner))
- return false;
-
- // TODO: Condition
-
- return filterRunner.Run(_internal);
- }
-
- ///
- public override bool PassesFilterDB(FilterRunner filterRunner)
- {
- // TODO: Condition
-
- return filterRunner.Run(_internal);
- }
-
- #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs
index 47639766..cff751e8 100644
--- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs
@@ -13,10 +13,29 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Properties
- public Condition? Condition { get; set; }
+ public string? ConditionMask
+ {
+ get => _internal.ConditionMask;
+ set => _internal.ConditionMask = value;
+ }
- [JsonIgnore]
- public bool ConditionSpecified => Condition is not null;
+ public Data.Models.Metadata.Relation? ConditionRelation
+ {
+ get => _internal.ConditionRelation;
+ set => _internal.ConditionRelation = value;
+ }
+
+ public string? ConditionTag
+ {
+ get => _internal.ConditionTag;
+ set => _internal.ConditionTag = value;
+ }
+
+ public string? ConditionValue
+ {
+ get => _internal.ConditionValue;
+ set => _internal.ConditionValue = value;
+ }
public ConfLocation[]? ConfLocation { get; set; }
@@ -59,9 +78,6 @@ namespace SabreTools.Metadata.DatItems.Formats
public Configuration(Data.Models.Metadata.Configuration item) : base(item)
{
// Handle subitems
- if (item.Condition is not null)
- Condition = new Condition(item.Condition);
-
if (item.ConfLocation is not null)
ConfLocation = Array.ConvertAll(item.ConfLocation, confLocation => new ConfLocation(confLocation));
@@ -97,9 +113,6 @@ namespace SabreTools.Metadata.DatItems.Formats
{
var configurationItem = _internal.Clone() as Data.Models.Metadata.Configuration ?? new();
- if (Condition is not null)
- configurationItem.Condition = Condition.GetInternalClone();
-
if (ConfLocation is not null)
configurationItem.ConfLocation = Array.ConvertAll(ConfLocation, confLocation => confLocation.GetInternalClone());
@@ -138,7 +151,6 @@ namespace SabreTools.Metadata.DatItems.Formats
if (Machine is not null && !Machine.PassesFilter(filterRunner))
return false;
- // TODO: Condition
// TODO: ConfLocation
// TODO: ConfSetting
@@ -148,7 +160,6 @@ namespace SabreTools.Metadata.DatItems.Formats
///
public override bool PassesFilterDB(FilterRunner filterRunner)
{
- // TODO: Condition
// TODO: ConfLocation
// TODO: ConfSetting
diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
index b5fcce0b..23e5c015 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
@@ -13,10 +13,29 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Properties
- public Condition? Condition { get; set; }
+ public string? ConditionMask
+ {
+ get => _internal.ConditionMask;
+ set => _internal.ConditionMask = value;
+ }
- [JsonIgnore]
- public bool ConditionSpecified => Condition is not null;
+ public Data.Models.Metadata.Relation? ConditionRelation
+ {
+ get => _internal.ConditionRelation;
+ set => _internal.ConditionRelation = value;
+ }
+
+ public string? ConditionTag
+ {
+ get => _internal.ConditionTag;
+ set => _internal.ConditionTag = value;
+ }
+
+ public string? ConditionValue
+ {
+ get => _internal.ConditionValue;
+ set => _internal.ConditionValue = value;
+ }
public bool? Default
{
@@ -83,9 +102,6 @@ namespace SabreTools.Metadata.DatItems.Formats
public DipSwitch(Data.Models.Metadata.DipSwitch item) : base(item)
{
// Handle subitems
- if (item.Condition is not null)
- Condition = new Condition(item.Condition);
-
if (item.DipLocation is not null)
DipLocation = Array.ConvertAll(item.DipLocation, dipLocation => new DipLocation(dipLocation));
@@ -124,9 +140,6 @@ namespace SabreTools.Metadata.DatItems.Formats
{
var dipSwitchItem = _internal.Clone() as Data.Models.Metadata.DipSwitch ?? new();
- if (Condition is not null)
- dipSwitchItem.Condition = Condition.GetInternalClone();
-
if (DipLocation is not null)
dipSwitchItem.DipLocation = Array.ConvertAll(DipLocation, dipLocation => dipLocation.GetInternalClone());
@@ -168,7 +181,6 @@ namespace SabreTools.Metadata.DatItems.Formats
if (Machine is not null && !Machine.PassesFilter(filterRunner))
return false;
- // TODO: Condition
// TODO: DipLocation
// TODO: DipValue
// TODO: Entry
@@ -179,7 +191,6 @@ namespace SabreTools.Metadata.DatItems.Formats
///
public override bool PassesFilterDB(FilterRunner filterRunner)
{
- // TODO: Condition
// TODO: DipLocation
// TODO: DipValue
// TODO: Entry
diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs
index 4e8adf02..13c48ff0 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs
@@ -1,6 +1,5 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
-using SabreTools.Metadata.Filter;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -12,10 +11,29 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Properties
- public Condition? Condition { get; set; }
+ public string? ConditionMask
+ {
+ get => _internal.ConditionMask;
+ set => _internal.ConditionMask = value;
+ }
- [JsonIgnore]
- public bool ConditionSpecified => Condition is not null;
+ public Data.Models.Metadata.Relation? ConditionRelation
+ {
+ get => _internal.ConditionRelation;
+ set => _internal.ConditionRelation = value;
+ }
+
+ public string? ConditionTag
+ {
+ get => _internal.ConditionTag;
+ set => _internal.ConditionTag = value;
+ }
+
+ public string? ConditionValue
+ {
+ get => _internal.ConditionValue;
+ set => _internal.ConditionValue = value;
+ }
public bool? Default
{
@@ -45,12 +63,7 @@ namespace SabreTools.Metadata.DatItems.Formats
public DipValue() : base() { }
- public DipValue(Data.Models.Metadata.DipValue item) : base(item)
- {
- // Handle subitems
- if (item.Condition is not null)
- Condition = new Condition(item.Condition);
- }
+ public DipValue(Data.Models.Metadata.DipValue item) : base(item) { }
public DipValue(Data.Models.Metadata.DipValue item, Machine machine, Source source) : this(item)
{
@@ -77,14 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats
///
public override Data.Models.Metadata.DipValue GetInternalClone()
- {
- var dipValueItem = _internal.Clone() as Data.Models.Metadata.DipValue ?? new();
-
- if (Condition is not null)
- dipValueItem.Condition = Condition.GetInternalClone();
-
- return dipValueItem;
- }
+ => _internal.Clone() as Data.Models.Metadata.DipValue ?? new();
#endregion
@@ -106,28 +112,5 @@ namespace SabreTools.Metadata.DatItems.Formats
}
#endregion
-
- #region Manipulation
-
- ///
- public override bool PassesFilter(FilterRunner filterRunner)
- {
- if (Machine is not null && !Machine.PassesFilter(filterRunner))
- return false;
-
- // TODO: Condition
-
- return filterRunner.Run(_internal);
- }
-
- ///
- public override bool PassesFilterDB(FilterRunner filterRunner)
- {
- // TODO: Condition
-
- return filterRunner.Run(_internal);
- }
-
- #endregion
}
}
diff --git a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs
index c377eb7c..9e1e7a9c 100644
--- a/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs
+++ b/SabreTools.Metadata.Filter.Test/FilterObjectTests.cs
@@ -477,6 +477,10 @@ namespace SabreTools.Metadata.Filter.Test
#region Adjuster
[Theory]
+ [InlineData("adjuster.condition.mask", "mask")]
+ [InlineData("adjuster.condition.relation", "ne")]
+ [InlineData("adjuster.condition.tag", "tag")]
+ [InlineData("adjuster.condition.value", "value")]
[InlineData("adjuster.default", "yes")]
[InlineData("adjuster.name", "name")]
public void Matches_Adjsuter(string itemField, string value)
@@ -484,6 +488,10 @@ namespace SabreTools.Metadata.Filter.Test
var filter = new FilterObject(itemField, value, Operation.Equals);
Adjuster obj = new Adjuster
{
+ ConditionMask = "mask",
+ ConditionRelation = Relation.NotEqual,
+ ConditionTag = "tag",
+ ConditionValue = "value",
Default = true,
Name = "name",
};
@@ -645,33 +653,13 @@ namespace SabreTools.Metadata.Filter.Test
#endregion
- #region Condition
-
- [Theory]
- [InlineData("condition.mask", "mask")]
- [InlineData("condition.relation", "ne")]
- [InlineData("condition.tag", "tag")]
- [InlineData("condition.value", "value")]
- public void Matches_Condition(string itemField, string value)
- {
- var filter = new FilterObject(itemField, value, Operation.Equals);
- Condition obj = new Condition
- {
- Mask = "mask",
- Relation = Relation.NotEqual,
- Tag = "tag",
- Value = "value",
- };
-
- bool actual = filter.Matches(obj);
- Assert.True(actual);
- }
-
- #endregion
-
#region Configuration
[Theory]
+ [InlineData("configuration.condition.mask", "mask")]
+ [InlineData("configuration.condition.relation", "ne")]
+ [InlineData("configuration.condition.tag", "tag")]
+ [InlineData("configuration.condition.value", "value")]
[InlineData("configuration.mask", "mask")]
[InlineData("configuration.name", "name")]
[InlineData("configuration.tag", "tag")]
@@ -680,6 +668,10 @@ namespace SabreTools.Metadata.Filter.Test
var filter = new FilterObject(itemField, value, Operation.Equals);
Configuration obj = new Configuration
{
+ ConditionMask = "mask",
+ ConditionRelation = Relation.NotEqual,
+ ConditionTag = "tag",
+ ConditionValue = "value",
Mask = "mask",
Name = "name",
Tag = "tag",
@@ -716,6 +708,10 @@ namespace SabreTools.Metadata.Filter.Test
#region ConfSetting
[Theory]
+ [InlineData("confsetting.condition.mask", "mask")]
+ [InlineData("confsetting.condition.relation", "ne")]
+ [InlineData("confsetting.condition.tag", "tag")]
+ [InlineData("confsetting.condition.value", "value")]
[InlineData("confsetting.default", "yes")]
[InlineData("confsetting.name", "name")]
[InlineData("confsetting.value", "value")]
@@ -724,6 +720,10 @@ namespace SabreTools.Metadata.Filter.Test
var filter = new FilterObject(itemField, value, Operation.Equals);
ConfSetting obj = new ConfSetting
{
+ ConditionMask = "mask",
+ ConditionRelation = Relation.NotEqual,
+ ConditionTag = "tag",
+ ConditionValue = "value",
Default = true,
Name = "name",
Value = "value",
@@ -868,6 +868,10 @@ namespace SabreTools.Metadata.Filter.Test
#region DipSwitch
[Theory]
+ [InlineData("dipswitch.condition.mask", "mask")]
+ [InlineData("dipswitch.condition.relation", "ne")]
+ [InlineData("dipswitch.condition.tag", "tag")]
+ [InlineData("dipswitch.condition.value", "value")]
[InlineData("dipswitch.default", "yes")]
[InlineData("dipswitch.mask", "mask")]
[InlineData("dipswitch.name", "name")]
@@ -877,6 +881,10 @@ namespace SabreTools.Metadata.Filter.Test
var filter = new FilterObject(itemField, value, Operation.Equals);
DipSwitch obj = new DipSwitch
{
+ ConditionMask = "mask",
+ ConditionRelation = Relation.NotEqual,
+ ConditionTag = "tag",
+ ConditionValue = "value",
Default = true,
Mask = "mask",
Name = "name",
@@ -892,6 +900,10 @@ namespace SabreTools.Metadata.Filter.Test
#region DipValue
[Theory]
+ [InlineData("dipvalue.condition.mask", "mask")]
+ [InlineData("dipvalue.condition.relation", "ne")]
+ [InlineData("dipvalue.condition.tag", "tag")]
+ [InlineData("dipvalue.condition.value", "value")]
[InlineData("dipvalue.default", "yes")]
[InlineData("dipvalue.name", "name")]
[InlineData("dipvalue.value", "value")]
@@ -900,6 +912,10 @@ namespace SabreTools.Metadata.Filter.Test
var filter = new FilterObject(itemField, value, Operation.Equals);
DipValue obj = new DipValue
{
+ ConditionMask = "mask",
+ ConditionRelation = Relation.NotEqual,
+ ConditionTag = "tag",
+ ConditionValue = "value",
Default = true,
Name = "name",
Value = "value",
diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs
index f74a1481..2fd00fa0 100644
--- a/SabreTools.Metadata.Filter/FilterKey.cs
+++ b/SabreTools.Metadata.Filter/FilterKey.cs
@@ -40,6 +40,10 @@ namespace SabreTools.Metadata.Filter
///
private static readonly string[] _adjusterKeys =
[
+ "condition.mask",
+ "condition.relation",
+ "condition.tag",
+ "condition.value",
"default",
"name"
];
@@ -116,22 +120,15 @@ namespace SabreTools.Metadata.Filter
"tag",
];
- ///
- /// Known keys for Condition
- ///
- private static readonly string[] _conditionKeys =
- [
- "mask",
- "relation",
- "tag",
- "value",
- ];
-
///
/// Known keys for Configuration
///
private static readonly string[] _configurationKeys =
[
+ "condition.mask",
+ "condition.relation",
+ "condition.tag",
+ "condition.value",
"mask",
"name",
"tag",
@@ -152,6 +149,10 @@ namespace SabreTools.Metadata.Filter
///
private static readonly string[] _confSettingKeys =
[
+ "condition.mask",
+ "condition.relation",
+ "condition.tag",
+ "condition.value",
"default",
"name",
"value",
@@ -222,6 +223,10 @@ namespace SabreTools.Metadata.Filter
///
private static readonly string[] _dipSwitchKeys =
[
+ "condition.mask",
+ "condition.relation",
+ "condition.tag",
+ "condition.value",
"default",
"mask",
"name",
@@ -233,6 +238,10 @@ namespace SabreTools.Metadata.Filter
///
private static readonly string[] _dipValueKeys =
[
+ "condition.mask",
+ "condition.relation",
+ "condition.tag",
+ "condition.value",
"default",
"name",
"value",
@@ -876,12 +885,12 @@ namespace SabreTools.Metadata.Filter
// If we only have one part, we can't do anything
string[] splitFilter = itemFieldString!.Split('.');
- if (splitFilter.Length != 2)
+ if (splitFilter.Length < 2)
return false;
// Set and sanitize the filter ID
itemName = splitFilter[0];
- fieldName = splitFilter[1];
+ fieldName = string.Join(".", splitFilter, 1, splitFilter.Length - 1);
return ParseFilterId(ref itemName, ref fieldName);
}
@@ -1014,7 +1023,6 @@ namespace SabreTools.Metadata.Filter
"archive" => _archiveKeys,
"biosset" => _biossetKeys,
"chip" => _chipKeys,
- "condition" => _conditionKeys,
"configuration" => _configurationKeys,
"conflocation" => _confLocationKeys,
"confsetting" => _confSettingKeys,
diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs
index baeb6bb8..d670f4f4 100644
--- a/SabreTools.Metadata.Filter/FilterObject.cs
+++ b/SabreTools.Metadata.Filter/FilterObject.cs
@@ -383,7 +383,6 @@ namespace SabreTools.Metadata.Filter
case Archive item: return GetCheckValue(item, fieldName, out checkValue);
case BiosSet item: return GetCheckValue(item, fieldName, out checkValue);
case Chip item: return GetCheckValue(item, fieldName, out checkValue);
- case Condition item: return GetCheckValue(item, fieldName, out checkValue);
case Configuration item: return GetCheckValue(item, fieldName, out checkValue);
case ConfLocation item: return GetCheckValue(item, fieldName, out checkValue);
case ConfSetting item: return GetCheckValue(item, fieldName, out checkValue);
@@ -508,6 +507,18 @@ namespace SabreTools.Metadata.Filter
{
switch (fieldName)
{
+ case "condition.mask":
+ checkValue = obj.ConditionMask;
+ return true;
+ case "condition.relation":
+ checkValue = obj.ConditionRelation?.AsStringValue();
+ return true;
+ case "condition.tag":
+ checkValue = obj.ConditionTag;
+ return true;
+ case "condition.value":
+ checkValue = obj.ConditionValue;
+ return true;
case "default":
checkValue = obj.Default.FromYesNo();
return true;
@@ -712,33 +723,6 @@ namespace SabreTools.Metadata.Filter
}
}
- ///
- /// Get the check value for a field
- ///
- private static bool GetCheckValue(Condition obj, string fieldName, out string? checkValue)
- {
- switch (fieldName)
- {
- case "mask":
- checkValue = obj.Mask;
- return true;
- case "relation":
- checkValue = obj.Relation?.AsStringValue();
- return true;
- case "tag":
- checkValue = obj.Tag;
- return true;
- case "value":
- checkValue = obj.Value;
- return true;
-
- // If the key doesn't exist, we count it as null
- default:
- checkValue = null;
- return false;
- }
- }
-
///
/// Get the check value for a field
///
@@ -746,6 +730,18 @@ namespace SabreTools.Metadata.Filter
{
switch (fieldName)
{
+ case "condition.mask":
+ checkValue = obj.ConditionMask;
+ return true;
+ case "condition.relation":
+ checkValue = obj.ConditionRelation?.AsStringValue();
+ return true;
+ case "condition.tag":
+ checkValue = obj.ConditionTag;
+ return true;
+ case "condition.value":
+ checkValue = obj.ConditionValue;
+ return true;
case "mask":
checkValue = obj.Mask;
return true;
@@ -794,6 +790,18 @@ namespace SabreTools.Metadata.Filter
{
switch (fieldName)
{
+ case "condition.mask":
+ checkValue = obj.ConditionMask;
+ return true;
+ case "condition.relation":
+ checkValue = obj.ConditionRelation?.AsStringValue();
+ return true;
+ case "condition.tag":
+ checkValue = obj.ConditionTag;
+ return true;
+ case "condition.value":
+ checkValue = obj.ConditionValue;
+ return true;
case "default":
checkValue = obj.Default.FromYesNo();
return true;
@@ -968,6 +976,18 @@ namespace SabreTools.Metadata.Filter
{
switch (fieldName)
{
+ case "condition.mask":
+ checkValue = obj.ConditionMask;
+ return true;
+ case "condition.relation":
+ checkValue = obj.ConditionRelation?.AsStringValue();
+ return true;
+ case "condition.tag":
+ checkValue = obj.ConditionTag;
+ return true;
+ case "condition.value":
+ checkValue = obj.ConditionValue;
+ return true;
case "default":
checkValue = obj.Default.FromYesNo();
return true;
@@ -995,6 +1015,18 @@ namespace SabreTools.Metadata.Filter
{
switch (fieldName)
{
+ case "condition.mask":
+ checkValue = obj.ConditionMask;
+ return true;
+ case "condition.relation":
+ checkValue = obj.ConditionRelation?.AsStringValue();
+ return true;
+ case "condition.tag":
+ checkValue = obj.ConditionTag;
+ return true;
+ case "condition.value":
+ checkValue = obj.ConditionValue;
+ return true;
case "default":
checkValue = obj.Default.FromYesNo();
return true;
diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
index f581bba5..d29e8177 100644
--- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
@@ -152,9 +152,19 @@ namespace SabreTools.Serialization.CrossModel
Default = item.Default,
};
- var condition = item.Condition;
- if (condition is not null)
- adjuster.Condition = ConvertFromInternalModel(condition);
+ if (item.ConditionMask is not null
+ || item.ConditionRelation is not null
+ || item.ConditionTag is not null
+ || item.ConditionValue is not null)
+ {
+ adjuster.Condition = new Condition
+ {
+ Mask = item.ConditionMask,
+ Relation = item.ConditionRelation,
+ Tag = item.ConditionTag,
+ Value = item.ConditionValue,
+ };
+ }
return adjuster;
}
@@ -201,21 +211,6 @@ namespace SabreTools.Serialization.CrossModel
return chip;
}
- ///
- /// Convert from to
- ///
- private static Condition ConvertFromInternalModel(Data.Models.Metadata.Condition item)
- {
- var condition = new Condition
- {
- Tag = item.Tag,
- Mask = item.Mask,
- Relation = item.Relation,
- Value = item.Value,
- };
- return condition;
- }
-
///
/// Convert from to
///
@@ -228,9 +223,19 @@ namespace SabreTools.Serialization.CrossModel
Mask = item.Mask,
};
- var condition = item.Condition;
- if (condition is not null)
- configuration.Condition = ConvertFromInternalModel(condition);
+ if (item.ConditionMask is not null
+ || item.ConditionRelation is not null
+ || item.ConditionTag is not null
+ || item.ConditionValue is not null)
+ {
+ configuration.Condition = new Condition
+ {
+ Mask = item.ConditionMask,
+ Relation = item.ConditionRelation,
+ Tag = item.ConditionTag,
+ Value = item.ConditionValue,
+ };
+ }
var confLocations = item.ConfLocation;
if (confLocations is not null && confLocations.Length > 0)
@@ -269,9 +274,19 @@ namespace SabreTools.Serialization.CrossModel
Default = item.Default,
};
- var condition = item.Condition;
- if (condition is not null)
- confSetting.Condition = ConvertFromInternalModel(condition);
+ if (item.ConditionMask is not null
+ || item.ConditionRelation is not null
+ || item.ConditionTag is not null
+ || item.ConditionValue is not null)
+ {
+ confSetting.Condition = new Condition
+ {
+ Mask = item.ConditionMask,
+ Relation = item.ConditionRelation,
+ Tag = item.ConditionTag,
+ Value = item.ConditionValue,
+ };
+ }
return confSetting;
}
@@ -362,9 +377,19 @@ namespace SabreTools.Serialization.CrossModel
Mask = item.Mask,
};
- var condition = item.Condition;
- if (condition is not null)
- dipSwitch.Condition = ConvertFromInternalModel(condition);
+ if (item.ConditionMask is not null
+ || item.ConditionRelation is not null
+ || item.ConditionTag is not null
+ || item.ConditionValue is not null)
+ {
+ dipSwitch.Condition = new Condition
+ {
+ Mask = item.ConditionMask,
+ Relation = item.ConditionRelation,
+ Tag = item.ConditionTag,
+ Value = item.ConditionValue,
+ };
+ }
var dipLocations = item.DipLocation;
if (dipLocations is not null && dipLocations.Length > 0)
@@ -389,9 +414,19 @@ namespace SabreTools.Serialization.CrossModel
Default = item.Default,
};
- var condition = item.Condition;
- if (condition is not null)
- dipValue.Condition = ConvertFromInternalModel(condition);
+ if (item.ConditionMask is not null
+ || item.ConditionRelation is not null
+ || item.ConditionTag is not null
+ || item.ConditionValue is not null)
+ {
+ dipValue.Condition = new Condition
+ {
+ Mask = item.ConditionMask,
+ Relation = item.ConditionRelation,
+ Tag = item.ConditionTag,
+ Value = item.ConditionValue,
+ };
+ }
return dipValue;
}
diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
index 12a0820a..784c8475 100644
--- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
@@ -128,13 +128,14 @@ namespace SabreTools.Serialization.CrossModel
{
var adjuster = new Data.Models.Metadata.Adjuster
{
+ ConditionMask = item.Condition?.Mask,
+ ConditionRelation = item.Condition?.Relation,
+ ConditionTag = item.Condition?.Tag,
+ ConditionValue = item.Condition?.Value,
Name = item.Name,
Default = item.Default,
};
- if (item.Condition is not null)
- adjuster.Condition = ConvertToInternalModel(item.Condition);
-
return adjuster;
}
@@ -180,21 +181,6 @@ namespace SabreTools.Serialization.CrossModel
return chip;
}
- ///
- /// Convert from to
- ///
- private static Data.Models.Metadata.Condition ConvertToInternalModel(Condition item)
- {
- var condition = new Data.Models.Metadata.Condition
- {
- Tag = item.Tag,
- Mask = item.Mask,
- Relation = item.Relation,
- Value = item.Value,
- };
- return condition;
- }
-
///
/// Convert from to
///
@@ -202,14 +188,15 @@ namespace SabreTools.Serialization.CrossModel
{
var configuration = new Data.Models.Metadata.Configuration
{
+ ConditionMask = item.Condition?.Mask,
+ ConditionRelation = item.Condition?.Relation,
+ ConditionTag = item.Condition?.Tag,
+ ConditionValue = item.Condition?.Value,
Name = item.Name,
Tag = item.Tag,
Mask = item.Mask,
};
- if (item.Condition is not null)
- configuration.Condition = ConvertToInternalModel(item.Condition);
-
if (item.ConfLocation is not null && item.ConfLocation.Length > 0)
configuration.ConfLocation = Array.ConvertAll(item.ConfLocation, ConvertToInternalModel);
@@ -240,14 +227,15 @@ namespace SabreTools.Serialization.CrossModel
{
var confSetting = new Data.Models.Metadata.ConfSetting
{
+ ConditionMask = item.Condition?.Mask,
+ ConditionRelation = item.Condition?.Relation,
+ ConditionTag = item.Condition?.Tag,
+ ConditionValue = item.Condition?.Value,
Name = item.Name,
Value = item.Value,
Default = item.Default,
};
- if (item.Condition is not null)
- confSetting.Condition = ConvertToInternalModel(item.Condition);
-
return confSetting;
}
@@ -330,14 +318,15 @@ namespace SabreTools.Serialization.CrossModel
{
var dipSwitch = new Data.Models.Metadata.DipSwitch
{
+ ConditionMask = item.Condition?.Mask,
+ ConditionRelation = item.Condition?.Relation,
+ ConditionTag = item.Condition?.Tag,
+ ConditionValue = item.Condition?.Value,
Name = item.Name,
Tag = item.Tag,
Mask = item.Mask,
};
- if (item.Condition is not null)
- dipSwitch.Condition = ConvertToInternalModel(item.Condition);
-
if (item.DipLocation is not null && item.DipLocation.Length > 0)
dipSwitch.DipLocation = Array.ConvertAll(item.DipLocation, ConvertToInternalModel);
@@ -354,14 +343,15 @@ namespace SabreTools.Serialization.CrossModel
{
var dipValue = new Data.Models.Metadata.DipValue
{
+ ConditionMask = item.Condition?.Mask,
+ ConditionRelation = item.Condition?.Relation,
+ ConditionTag = item.Condition?.Tag,
+ ConditionValue = item.Condition?.Value,
Name = item.Name,
Value = item.Value,
Default = item.Default,
};
- if (item.Condition is not null)
- dipValue.Condition = ConvertToInternalModel(item.Condition);
-
return dipValue;
}