Let's use objects

This commit is contained in:
Matt Nadareski
2020-08-21 15:31:19 -07:00
parent b01217cffb
commit 4d7a4373a9
11 changed files with 166 additions and 64 deletions

View File

@@ -0,0 +1,32 @@
/// <summary>
/// This holds all of the auxiliary types needed for proper parsing
/// </summary>
namespace SabreTools.Library.DatFiles
{
#region DatHeader
#region OfflineList
/// <summary>
/// Represents one OfflineList infos object
/// </summary>
public class OfflineListInfo
{
public string Name { get; set; }
public bool? Visible { get; set; }
public bool? IsNamingOption { get; set; }
public bool? Default { get; set; }
public OfflineListInfo(string name, bool? visible, bool? isNamingOption, bool? def)
{
Name = name;
Visible = visible;
IsNamingOption = isNamingOption;
Default = def;
}
}
#endregion
#endregion // DatHeader
}

View File

@@ -279,7 +279,7 @@ namespace SabreTools.Library.DatFiles
/// OfflineList info list /// OfflineList info list
/// </summary> /// </summary>
[JsonProperty("infos")] [JsonProperty("infos")]
public List<Tuple<string, bool?, bool?, bool?>> Infos { get; set; } public List<OfflineListInfo> Infos { get; set; }
/// <summary> /// <summary>
/// OfflineList can-open extensions /// OfflineList can-open extensions

View File

@@ -284,7 +284,7 @@ namespace SabreTools.Library.DatFiles
break; break;
case "infos": case "infos":
Header.Infos = new List<Tuple<string, bool?, bool?, bool?>>(); Header.Infos = new List<OfflineListInfo>();
jtr.Read(); // Start Array jtr.Read(); // Start Array
while (!sr.EndOfStream) while (!sr.EndOfStream)
{ {
@@ -331,8 +331,8 @@ namespace SabreTools.Library.DatFiles
jtr.Read(); // End object jtr.Read(); // End object
} }
// Add the new info tuple // Add the new info object
Header.Infos.Add(new Tuple<string, bool?, bool?, bool?>( Header.Infos.Add(new OfflineListInfo(
nameValue, nameValue,
visibleValue, visibleValue,
inNamingOptionValue, inNamingOptionValue,
@@ -560,7 +560,7 @@ namespace SabreTools.Library.DatFiles
break; break;
case "infos": case "infos":
machine.Infos = new List<KeyValuePair<string, string>>(); machine.Infos = new List<ListXmlInfo>();
jtr.Read(); // Start Array jtr.Read(); // Start Array
while (!sr.EndOfStream) while (!sr.EndOfStream)
{ {
@@ -573,7 +573,7 @@ namespace SabreTools.Library.DatFiles
string value = jtr.ReadAsString(); string value = jtr.ReadAsString();
jtr.Read(); // End object jtr.Read(); // End object
machine.Infos.Add(new KeyValuePair<string, string>(key, value)); machine.Infos.Add(new ListXmlInfo(key, value));
} }
break; break;
@@ -630,7 +630,7 @@ namespace SabreTools.Library.DatFiles
break; break;
case "sharedfeat": case "sharedfeat":
machine.SharedFeatures = new List<KeyValuePair<string, string>>(); machine.SharedFeatures = new List<SoftwareListSharedFeature>();
jtr.Read(); // Start Array jtr.Read(); // Start Array
while (!sr.EndOfStream) while (!sr.EndOfStream)
{ {
@@ -643,7 +643,7 @@ namespace SabreTools.Library.DatFiles
string value = jtr.ReadAsString(); string value = jtr.ReadAsString();
jtr.Read(); // End object jtr.Read(); // End object
machine.SharedFeatures.Add(new KeyValuePair<string, string>(key, value)); machine.SharedFeatures.Add(new SoftwareListSharedFeature(key, value));
} }
break; break;
@@ -757,7 +757,7 @@ namespace SabreTools.Library.DatFiles
bios = null; bios = null;
ItemStatus? itemStatus = null; ItemStatus? itemStatus = null;
ItemType? itemType = null; ItemType? itemType = null;
List<KeyValuePair<string, string>> features = null; List<SoftwareListFeature> features = null;
jtr.Read(); jtr.Read();
while (!sr.EndOfStream) while (!sr.EndOfStream)
@@ -876,7 +876,7 @@ namespace SabreTools.Library.DatFiles
break; break;
case "features": case "features":
features = new List<KeyValuePair<string, string>>(); features = new List<SoftwareListFeature>();
jtr.Read(); // Start Array jtr.Read(); // Start Array
while (!sr.EndOfStream) while (!sr.EndOfStream)
{ {
@@ -889,7 +889,7 @@ namespace SabreTools.Library.DatFiles
string featureValue = jtr.ReadAsString(); string featureValue = jtr.ReadAsString();
jtr.Read(); // End object jtr.Read(); // End object
features.Add(new KeyValuePair<string, string>(key, featureValue)); features.Add(new SoftwareListFeature(key, featureValue));
} }
break; break;
@@ -1396,13 +1396,13 @@ namespace SabreTools.Library.DatFiles
{ {
jtw.WriteStartObject(); jtw.WriteStartObject();
jtw.WritePropertyName("name"); jtw.WritePropertyName("name");
jtw.WriteValue(info.Item1); jtw.WriteValue(info.Name);
jtw.WritePropertyName("visible"); jtw.WritePropertyName("visible");
jtw.WriteValue(info.Item2.ToString()); jtw.WriteValue(info.Visible.ToString());
jtw.WritePropertyName("inNamingOption"); jtw.WritePropertyName("inNamingOption");
jtw.WriteValue(info.Item3.ToString()); jtw.WriteValue(info.IsNamingOption.ToString());
jtw.WritePropertyName("default"); jtw.WritePropertyName("default");
jtw.WriteValue(info.Item4.ToString()); jtw.WriteValue(info.Default.ToString());
jtw.WriteEndObject(); jtw.WriteEndObject();
} }
@@ -1632,7 +1632,7 @@ namespace SabreTools.Library.DatFiles
foreach (var info in datItem.Machine.Infos) foreach (var info in datItem.Machine.Infos)
{ {
jtw.WriteStartObject(); jtw.WriteStartObject();
jtw.WritePropertyName(info.Key); jtw.WritePropertyName(info.Name);
jtw.WriteValue(info.Value); jtw.WriteValue(info.Value);
jtw.WriteEndObject(); jtw.WriteEndObject();
} }
@@ -1737,7 +1737,7 @@ namespace SabreTools.Library.DatFiles
foreach (var feature in datItem.Machine.SharedFeatures) foreach (var feature in datItem.Machine.SharedFeatures)
{ {
jtw.WriteStartObject(); jtw.WriteStartObject();
jtw.WritePropertyName(feature.Key); jtw.WritePropertyName(feature.Name);
jtw.WriteValue(feature.Value); jtw.WriteValue(feature.Value);
jtw.WriteEndObject(); jtw.WriteEndObject();
} }
@@ -2057,7 +2057,7 @@ namespace SabreTools.Library.DatFiles
foreach (var feature in datItem.Features) foreach (var feature in datItem.Features)
{ {
jtw.WriteStartObject(); jtw.WriteStartObject();
jtw.WritePropertyName(feature.Key); jtw.WritePropertyName(feature.Name);
jtw.WriteValue(feature.Value); jtw.WriteValue(feature.Value);
jtw.WriteEndObject(); jtw.WriteEndObject();
} }

View File

@@ -750,10 +750,10 @@ namespace SabreTools.Library.DatFiles
if (!Header.ExcludeFields.Contains(Field.Infos) && datItem.Machine.Infos != null && datItem.Machine.Infos.Count > 0) if (!Header.ExcludeFields.Contains(Field.Infos) && datItem.Machine.Infos != null && datItem.Machine.Infos.Count > 0)
{ {
foreach (KeyValuePair<string, string> kvp in datItem.Machine.Infos) foreach (ListXmlInfo kvp in datItem.Machine.Infos)
{ {
xtw.WriteStartElement("info"); xtw.WriteStartElement("info");
xtw.WriteAttributeString("name", kvp.Key); xtw.WriteAttributeString("name", kvp.Name);
xtw.WriteAttributeString("value", kvp.Value); xtw.WriteAttributeString("value", kvp.Value);
xtw.WriteEndElement(); xtw.WriteEndElement();
} }

View File

@@ -208,7 +208,7 @@ namespace SabreTools.Library.DatFiles
return; return;
// Setup the infos object // Setup the infos object
Header.Infos = new List<Tuple<string, bool?, bool?, bool?>>(); Header.Infos = new List<OfflineListInfo>();
// Otherwise, add what is possible // Otherwise, add what is possible
reader.MoveToContent(); reader.MoveToContent();
@@ -223,8 +223,8 @@ namespace SabreTools.Library.DatFiles
continue; continue;
} }
// Add all tuples to the info list // Add all infos to the info list
Header.Infos.Add(new Tuple<string, bool?, bool?, bool?>( Header.Infos.Add(new OfflineListInfo(
reader.Name.ToLowerInvariant(), reader.Name.ToLowerInvariant(),
reader.GetAttribute("visible").AsYesNo(), reader.GetAttribute("visible").AsYesNo(),
reader.GetAttribute("inNamingOption").AsYesNo(), reader.GetAttribute("inNamingOption").AsYesNo(),
@@ -771,10 +771,10 @@ namespace SabreTools.Library.DatFiles
foreach (var info in Header.Infos) foreach (var info in Header.Infos)
{ {
xtw.WriteStartElement(info.Item1); xtw.WriteStartElement(info.Name);
xtw.WriteAttributeString("visible", info.Item2.ToString()); xtw.WriteAttributeString("visible", info.Visible.ToString());
xtw.WriteAttributeString("inNamingOption", info.Item3.ToString()); xtw.WriteAttributeString("inNamingOption", info.IsNamingOption.ToString());
xtw.WriteAttributeString("default", info.Item4.ToString()); xtw.WriteAttributeString("default", info.Default.ToString());
xtw.WriteEndElement(); xtw.WriteEndElement();
} }

View File

@@ -112,7 +112,7 @@ namespace SabreTools.Library.DatFiles
long size = -1; long size = -1;
ItemType itemType = ItemType.Rom; ItemType itemType = ItemType.Rom;
ItemStatus status = ItemStatus.None; ItemStatus status = ItemStatus.None;
List<KeyValuePair<string, string>> features = null; List<SoftwareListFeature> features = null;
// Now we loop through and get values for everything // Now we loop through and get values for everything
for (int i = 0; i < svr.HeaderValues.Count; i++) for (int i = 0; i < svr.HeaderValues.Count; i++)
@@ -395,12 +395,12 @@ namespace SabreTools.Library.DatFiles
break; break;
case "Machine.Infos": case "Machine.Infos":
machine.Infos = new List<KeyValuePair<string, string>>(); machine.Infos = new List<ListXmlInfo>();
var infos = value.Split(';'); var infos = value.Split(';');
foreach (var info in infos) foreach (var info in infos)
{ {
var infoPair = info.Split('='); var infoPair = info.Split('=');
machine.Infos.Add(new KeyValuePair<string, string>(infoPair[0], infoPair[1])); machine.Infos.Add(new ListXmlInfo(infoPair[0], infoPair[1]));
} }
break; break;
@@ -466,12 +466,12 @@ namespace SabreTools.Library.DatFiles
break; break;
case "Machine.SharedFeatures": case "Machine.SharedFeatures":
machine.SharedFeatures = new List<KeyValuePair<string, string>>(); machine.SharedFeatures = new List<SoftwareListSharedFeature>();
var sharedFeatures = value.Split(';'); var sharedFeatures = value.Split(';');
foreach (var sharedFeature in sharedFeatures) foreach (var sharedFeature in sharedFeatures)
{ {
var featurePair = sharedFeature.Split('='); var featurePair = sharedFeature.Split('=');
machine.SharedFeatures.Add(new KeyValuePair<string, string>(featurePair[0], featurePair[1])); machine.SharedFeatures.Add(new SoftwareListSharedFeature(featurePair[0], featurePair[1]));
} }
break; break;
@@ -517,12 +517,12 @@ namespace SabreTools.Library.DatFiles
break; break;
case "DatItem.Features": case "DatItem.Features":
features = new List<KeyValuePair<string, string>>(); features = new List<SoftwareListFeature>();
var splitFeatures = value.Split(';'); var splitFeatures = value.Split(';');
foreach (var splitFeature in splitFeatures) foreach (var splitFeature in splitFeatures)
{ {
var featurePair = splitFeature.Split('='); var featurePair = splitFeature.Split('=');
features.Add(new KeyValuePair<string, string>(featurePair[0], featurePair[1])); features.Add(new SoftwareListFeature(featurePair[0], featurePair[1]));
} }
break; break;

View File

@@ -145,8 +145,8 @@ namespace SabreTools.Library.DatFiles
Supported = reader.GetAttribute("supported").AsYesNo(), // (yes|partial|no) "yes" Supported = reader.GetAttribute("supported").AsYesNo(), // (yes|partial|no) "yes"
CloneOf = reader.GetAttribute("cloneof") ?? string.Empty, CloneOf = reader.GetAttribute("cloneof") ?? string.Empty,
Infos = new List<KeyValuePair<string, string>>(), Infos = new List<ListXmlInfo>(),
SharedFeatures = new List<KeyValuePair<string, string>>(), SharedFeatures = new List<SoftwareListSharedFeature>(),
MachineType = (machineType == MachineType.NULL ? MachineType.None : machineType), MachineType = (machineType == MachineType.NULL ? MachineType.None : machineType),
}; };
@@ -180,12 +180,12 @@ namespace SabreTools.Library.DatFiles
break; break;
case "info": case "info":
machine.Infos.Add(new KeyValuePair<string, string>(reader.GetAttribute("name"), reader.GetAttribute("value"))); machine.Infos.Add(new ListXmlInfo(reader.GetAttribute("name"), reader.GetAttribute("value")));
reader.Read(); reader.Read();
break; break;
case "sharedfeat": case "sharedfeat":
machine.SharedFeatures.Add(new KeyValuePair<string, string>(reader.GetAttribute("name"), reader.GetAttribute("value"))); machine.SharedFeatures.Add(new SoftwareListSharedFeature(reader.GetAttribute("name"), reader.GetAttribute("value")));
reader.Read(); reader.Read();
break; break;
@@ -246,7 +246,7 @@ namespace SabreTools.Library.DatFiles
areaWidth, areaWidth,
areaEndinaness; areaEndinaness;
long? areasize = null; long? areasize = null;
var features = new List<KeyValuePair<string, string>>(); var features = new List<SoftwareListFeature>();
bool containsItems = false; bool containsItems = false;
while (!reader.EOF) while (!reader.EOF)
@@ -258,7 +258,7 @@ namespace SabreTools.Library.DatFiles
{ {
partname = string.Empty; partname = string.Empty;
partinterface = string.Empty; partinterface = string.Empty;
features = new List<KeyValuePair<string, string>>(); features = new List<SoftwareListFeature>();
} }
if (reader.NodeType == XmlNodeType.EndElement && (reader.Name == "dataarea" || reader.Name == "diskarea")) if (reader.NodeType == XmlNodeType.EndElement && (reader.Name == "dataarea" || reader.Name == "diskarea"))
@@ -278,7 +278,7 @@ namespace SabreTools.Library.DatFiles
break; break;
case "feature": case "feature":
features.Add(new KeyValuePair<string, string>(reader.GetAttribute("name"), reader.GetAttribute("value"))); features.Add(new SoftwareListFeature(reader.GetAttribute("name"), reader.GetAttribute("value")));
reader.Read(); reader.Read();
break; break;
@@ -373,7 +373,7 @@ namespace SabreTools.Library.DatFiles
Machine machine, Machine machine,
string partName, string partName,
string partInterface, string partInterface,
List<KeyValuePair<string, string>> features, List<SoftwareListFeature> features,
string areaName, string areaName,
long? areaSize, long? areaSize,
string areaWidth, string areaWidth,
@@ -489,7 +489,7 @@ namespace SabreTools.Library.DatFiles
Machine machine, Machine machine,
string partname, string partname,
string partinterface, string partinterface,
List<KeyValuePair<string, string>> features, List<SoftwareListFeature> features,
string areaname, string areaname,
long? areasize, long? areasize,
@@ -765,10 +765,10 @@ namespace SabreTools.Library.DatFiles
if (!Header.ExcludeFields.Contains(Field.Infos) && datItem.Machine.Infos != null && datItem.Machine.Infos.Count > 0) if (!Header.ExcludeFields.Contains(Field.Infos) && datItem.Machine.Infos != null && datItem.Machine.Infos.Count > 0)
{ {
foreach (KeyValuePair<string, string> kvp in datItem.Machine.Infos) foreach (ListXmlInfo kvp in datItem.Machine.Infos)
{ {
xtw.WriteStartElement("info"); xtw.WriteStartElement("info");
xtw.WriteAttributeString("name", kvp.Key); xtw.WriteAttributeString("name", kvp.Name);
xtw.WriteAttributeString("value", kvp.Value); xtw.WriteAttributeString("value", kvp.Value);
xtw.WriteEndElement(); xtw.WriteEndElement();
} }
@@ -776,10 +776,10 @@ namespace SabreTools.Library.DatFiles
if (!Header.ExcludeFields.Contains(Field.SharedFeatures) && datItem.Machine.SharedFeatures != null && datItem.Machine.SharedFeatures.Count > 0) if (!Header.ExcludeFields.Contains(Field.SharedFeatures) && datItem.Machine.SharedFeatures != null && datItem.Machine.SharedFeatures.Count > 0)
{ {
foreach (KeyValuePair<string, string> kvp in datItem.Machine.SharedFeatures) foreach (SoftwareListSharedFeature kvp in datItem.Machine.SharedFeatures)
{ {
xtw.WriteStartElement("sharedfeat"); xtw.WriteStartElement("sharedfeat");
xtw.WriteAttributeString("name", kvp.Key); xtw.WriteAttributeString("name", kvp.Name);
xtw.WriteAttributeString("value", kvp.Value); xtw.WriteAttributeString("value", kvp.Value);
xtw.WriteEndElement(); xtw.WriteEndElement();
} }
@@ -844,10 +844,10 @@ namespace SabreTools.Library.DatFiles
if (!Header.ExcludeFields.Contains(Field.Features) && datItem.Features != null && datItem.Features.Count > 0) if (!Header.ExcludeFields.Contains(Field.Features) && datItem.Features != null && datItem.Features.Count > 0)
{ {
foreach (KeyValuePair<string, string> kvp in datItem.Features) foreach (SoftwareListFeature kvp in datItem.Features)
{ {
xtw.WriteStartElement("feature"); xtw.WriteStartElement("feature");
xtw.WriteAttributeString("name", kvp.Key); xtw.WriteAttributeString("name", kvp.Name);
xtw.WriteAttributeString("value", kvp.Value); xtw.WriteAttributeString("value", kvp.Value);
xtw.WriteEndElement(); xtw.WriteEndElement();
} }

View File

@@ -0,0 +1,70 @@
/// <summary>
/// This holds all of the auxiliary types needed for proper parsing
/// </summary>
namespace SabreTools.Library.DatItems
{
#region Machine
#region ListXML
/// <summary>
/// Represents one ListXML info object
/// </summary>
public class ListXmlInfo
{
public string Name { get; set; }
public string Value { get; set; }
public ListXmlInfo(string name, string value)
{
Name = name;
Value = value;
}
}
#endregion
#region SoftwareList
/// <summary>
/// Represents one SoftwareList shared feature object
/// </summary>
public class SoftwareListSharedFeature
{
public string Name { get; set; }
public string Value { get; set; }
public SoftwareListSharedFeature(string name, string value)
{
Name = name;
Value = value;
}
}
#endregion
#endregion // Machine
#region DatItem
#region SoftwareList
/// <summary>
/// Represents one SoftwareList feature object
/// </summary>
public class SoftwareListFeature
{
public string Name { get; set; }
public string Value { get; set; }
public SoftwareListFeature(string name, string value)
{
Name = name;
Value = value;
}
}
#endregion
#endregion //DatItem
}

View File

@@ -87,7 +87,7 @@ namespace SabreTools.Library.DatItems
/// Features provided to/by the item /// Features provided to/by the item
/// </summary> /// </summary>
[JsonProperty("features")] [JsonProperty("features")]
public List<KeyValuePair<string, string>> Features { get; set; } public List<SoftwareListFeature> Features { get; set; }
/// <summary> /// <summary>
/// Original hardware part name within an item /// Original hardware part name within an item
@@ -296,7 +296,7 @@ namespace SabreTools.Library.DatItems
fieldValue = PartInterface; fieldValue = PartInterface;
break; break;
case Field.Features: case Field.Features:
fieldValue = string.Join(";", (Features ?? new List<KeyValuePair<string, string>>()).Select(f => $"{f.Key}={f.Value}")); fieldValue = string.Join(";", (Features ?? new List<SoftwareListFeature>()).Select(f => $"{f.Name}={f.Value}"));
break; break;
case Field.AreaName: case Field.AreaName:
fieldValue = AreaName; fieldValue = AreaName;
@@ -366,13 +366,13 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.Features)) if (mappings.Keys.Contains(Field.Features))
{ {
if (Features == null) if (Features == null)
Features = new List<KeyValuePair<string, string>>(); Features = new List<SoftwareListFeature>();
string[] pairs = mappings[Field.Features].Split(';'); string[] pairs = mappings[Field.Features].Split(';');
foreach (string pair in pairs) foreach (string pair in pairs)
{ {
string[] split = pair.Split('='); string[] split = pair.Split('=');
Features.Add(new KeyValuePair<string, string>(split[0], split[1])); Features.Add(new SoftwareListFeature(split[0], split[1]));
} }
} }

View File

@@ -167,7 +167,7 @@ namespace SabreTools.Library.DatItems
/// </summary> /// </summary>
/// <remarks>Also in SoftwareList</remarks> /// <remarks>Also in SoftwareList</remarks>
[JsonProperty("infos")] [JsonProperty("infos")]
public List<KeyValuePair<string, string>> Infos { get; set; } = null; public List<ListXmlInfo> Infos { get; set; } = null;
#endregion #endregion
@@ -259,7 +259,7 @@ namespace SabreTools.Library.DatItems
/// </summary> /// </summary>
/// <remarks>Also in SoftwareList</remarks> /// <remarks>Also in SoftwareList</remarks>
[JsonProperty("sharedfeat")] [JsonProperty("sharedfeat")]
public List<KeyValuePair<string, string>> SharedFeatures { get; set; } = null; public List<SoftwareListSharedFeature> SharedFeatures { get; set; } = null;
#endregion #endregion
@@ -358,7 +358,7 @@ namespace SabreTools.Library.DatItems
fieldValue = string.Join(";", SlotOptions ?? new List<string>()); fieldValue = string.Join(";", SlotOptions ?? new List<string>());
break; break;
case Field.Infos: case Field.Infos:
fieldValue = string.Join(";", (Infos ?? new List<KeyValuePair<string, string>>()).Select(i => $"{i.Key}={i.Value}")); fieldValue = string.Join(";", (Infos ?? new List<ListXmlInfo>()).Select(i => $"{i.Name}={i.Value}"));
break; break;
#endregion #endregion
@@ -412,7 +412,7 @@ namespace SabreTools.Library.DatItems
fieldValue = Supported?.ToString(); fieldValue = Supported?.ToString();
break; break;
case Field.SharedFeatures: case Field.SharedFeatures:
fieldValue = string.Join(";", (SharedFeatures ?? new List<KeyValuePair<string, string>>()).Select(i => $"{i.Key}={i.Value}")); fieldValue = string.Join(";", (SharedFeatures ?? new List<SoftwareListSharedFeature>()).Select(i => $"{i.Name}={i.Value}"));
break; break;
#endregion #endregion
@@ -525,13 +525,13 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.Infos)) if (mappings.Keys.Contains(Field.Infos))
{ {
if (Infos == null) if (Infos == null)
Infos = new List<KeyValuePair<string, string>>(); Infos = new List<ListXmlInfo>();
string[] pairs = mappings[Field.Infos].Split(';'); string[] pairs = mappings[Field.Infos].Split(';');
foreach (string pair in pairs) foreach (string pair in pairs)
{ {
string[] split = pair.Split('='); string[] split = pair.Split('=');
Infos.Add(new KeyValuePair<string, string>(split[0], split[1])); Infos.Add(new ListXmlInfo(split[0], split[1]));
} }
} }
@@ -586,13 +586,13 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.SharedFeatures)) if (mappings.Keys.Contains(Field.SharedFeatures))
{ {
if (SharedFeatures == null) if (SharedFeatures == null)
SharedFeatures = new List<KeyValuePair<string, string>>(); SharedFeatures = new List<SoftwareListSharedFeature>();
string[] pairs = mappings[Field.SharedFeatures].Split(';'); string[] pairs = mappings[Field.SharedFeatures].Split(';');
foreach (string pair in pairs) foreach (string pair in pairs)
{ {
string[] split = pair.Split('='); string[] split = pair.Split('=');
SharedFeatures.Add(new KeyValuePair<string, string>(split[0], split[1])); SharedFeatures.Add(new SoftwareListSharedFeature(split[0], split[1]));
} }
} }

View File

@@ -133,7 +133,7 @@ namespace SabreTools.Library.Filtering
/// </summary> /// </summary>
public FilterItem<string> SlotOptions { get; private set; } = new FilterItem<string>(); public FilterItem<string> SlotOptions { get; private set; } = new FilterItem<string>();
// TODO: Machine.Infos - List<KeyValuePair<string, string>> // TODO: Machine.Infos - List<ListXmlInfo>
/// <summary> /// <summary>
/// Include or exclude machine types /// Include or exclude machine types
@@ -212,7 +212,7 @@ namespace SabreTools.Library.Filtering
/// </summary> /// </summary>
public FilterItem<bool?> Supported { get; private set; } = new FilterItem<bool?>() { Neutral = null }; public FilterItem<bool?> Supported { get; private set; } = new FilterItem<bool?>() { Neutral = null };
// TODO: Machine.SharedFeatures - List<KeyValuePair<string, string>> // TODO: Machine.SharedFeatures - List<SoftwareListSharedFeature>
#endregion #endregion
@@ -260,7 +260,7 @@ namespace SabreTools.Library.Filtering
/// </summary> /// </summary>
public FilterItem<string> PartInterface { get; private set; } = new FilterItem<string>(); public FilterItem<string> PartInterface { get; private set; } = new FilterItem<string>();
// TODO: DatItem.Features - List<KeyValuePair<string, string>> // TODO: DatItem.Features - List<SoftwareListFeature>
/// <summary> /// <summary>
/// Include or exclude area names /// Include or exclude area names