diff --git a/SabreTools.Library/DatFiles/Auxiliary.cs b/SabreTools.Library/DatFiles/Auxiliary.cs
new file mode 100644
index 00000000..c9a0cca2
--- /dev/null
+++ b/SabreTools.Library/DatFiles/Auxiliary.cs
@@ -0,0 +1,32 @@
+///
+/// This holds all of the auxiliary types needed for proper parsing
+///
+namespace SabreTools.Library.DatFiles
+{
+ #region DatHeader
+
+ #region OfflineList
+
+ ///
+ /// Represents one OfflineList infos object
+ ///
+ 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
+}
diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs
index 8ed1c5b1..04c34881 100644
--- a/SabreTools.Library/DatFiles/DatHeader.cs
+++ b/SabreTools.Library/DatFiles/DatHeader.cs
@@ -279,7 +279,7 @@ namespace SabreTools.Library.DatFiles
/// OfflineList info list
///
[JsonProperty("infos")]
- public List> Infos { get; set; }
+ public List Infos { get; set; }
///
/// OfflineList can-open extensions
diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs
index c3305b57..f06091c7 100644
--- a/SabreTools.Library/DatFiles/Json.cs
+++ b/SabreTools.Library/DatFiles/Json.cs
@@ -284,7 +284,7 @@ namespace SabreTools.Library.DatFiles
break;
case "infos":
- Header.Infos = new List>();
+ Header.Infos = new List();
jtr.Read(); // Start Array
while (!sr.EndOfStream)
{
@@ -331,8 +331,8 @@ namespace SabreTools.Library.DatFiles
jtr.Read(); // End object
}
- // Add the new info tuple
- Header.Infos.Add(new Tuple(
+ // Add the new info object
+ Header.Infos.Add(new OfflineListInfo(
nameValue,
visibleValue,
inNamingOptionValue,
@@ -560,7 +560,7 @@ namespace SabreTools.Library.DatFiles
break;
case "infos":
- machine.Infos = new List>();
+ machine.Infos = new List();
jtr.Read(); // Start Array
while (!sr.EndOfStream)
{
@@ -573,7 +573,7 @@ namespace SabreTools.Library.DatFiles
string value = jtr.ReadAsString();
jtr.Read(); // End object
- machine.Infos.Add(new KeyValuePair(key, value));
+ machine.Infos.Add(new ListXmlInfo(key, value));
}
break;
@@ -630,7 +630,7 @@ namespace SabreTools.Library.DatFiles
break;
case "sharedfeat":
- machine.SharedFeatures = new List>();
+ machine.SharedFeatures = new List();
jtr.Read(); // Start Array
while (!sr.EndOfStream)
{
@@ -643,7 +643,7 @@ namespace SabreTools.Library.DatFiles
string value = jtr.ReadAsString();
jtr.Read(); // End object
- machine.SharedFeatures.Add(new KeyValuePair(key, value));
+ machine.SharedFeatures.Add(new SoftwareListSharedFeature(key, value));
}
break;
@@ -757,7 +757,7 @@ namespace SabreTools.Library.DatFiles
bios = null;
ItemStatus? itemStatus = null;
ItemType? itemType = null;
- List> features = null;
+ List features = null;
jtr.Read();
while (!sr.EndOfStream)
@@ -876,7 +876,7 @@ namespace SabreTools.Library.DatFiles
break;
case "features":
- features = new List>();
+ features = new List();
jtr.Read(); // Start Array
while (!sr.EndOfStream)
{
@@ -889,7 +889,7 @@ namespace SabreTools.Library.DatFiles
string featureValue = jtr.ReadAsString();
jtr.Read(); // End object
- features.Add(new KeyValuePair(key, featureValue));
+ features.Add(new SoftwareListFeature(key, featureValue));
}
break;
@@ -1396,13 +1396,13 @@ namespace SabreTools.Library.DatFiles
{
jtw.WriteStartObject();
jtw.WritePropertyName("name");
- jtw.WriteValue(info.Item1);
+ jtw.WriteValue(info.Name);
jtw.WritePropertyName("visible");
- jtw.WriteValue(info.Item2.ToString());
+ jtw.WriteValue(info.Visible.ToString());
jtw.WritePropertyName("inNamingOption");
- jtw.WriteValue(info.Item3.ToString());
+ jtw.WriteValue(info.IsNamingOption.ToString());
jtw.WritePropertyName("default");
- jtw.WriteValue(info.Item4.ToString());
+ jtw.WriteValue(info.Default.ToString());
jtw.WriteEndObject();
}
@@ -1632,7 +1632,7 @@ namespace SabreTools.Library.DatFiles
foreach (var info in datItem.Machine.Infos)
{
jtw.WriteStartObject();
- jtw.WritePropertyName(info.Key);
+ jtw.WritePropertyName(info.Name);
jtw.WriteValue(info.Value);
jtw.WriteEndObject();
}
@@ -1737,7 +1737,7 @@ namespace SabreTools.Library.DatFiles
foreach (var feature in datItem.Machine.SharedFeatures)
{
jtw.WriteStartObject();
- jtw.WritePropertyName(feature.Key);
+ jtw.WritePropertyName(feature.Name);
jtw.WriteValue(feature.Value);
jtw.WriteEndObject();
}
@@ -2057,7 +2057,7 @@ namespace SabreTools.Library.DatFiles
foreach (var feature in datItem.Features)
{
jtw.WriteStartObject();
- jtw.WritePropertyName(feature.Key);
+ jtw.WritePropertyName(feature.Name);
jtw.WriteValue(feature.Value);
jtw.WriteEndObject();
}
diff --git a/SabreTools.Library/DatFiles/Listxml.cs b/SabreTools.Library/DatFiles/Listxml.cs
index 0ec6c255..c9c02bee 100644
--- a/SabreTools.Library/DatFiles/Listxml.cs
+++ b/SabreTools.Library/DatFiles/Listxml.cs
@@ -750,10 +750,10 @@ namespace SabreTools.Library.DatFiles
if (!Header.ExcludeFields.Contains(Field.Infos) && datItem.Machine.Infos != null && datItem.Machine.Infos.Count > 0)
{
- foreach (KeyValuePair kvp in datItem.Machine.Infos)
+ foreach (ListXmlInfo kvp in datItem.Machine.Infos)
{
xtw.WriteStartElement("info");
- xtw.WriteAttributeString("name", kvp.Key);
+ xtw.WriteAttributeString("name", kvp.Name);
xtw.WriteAttributeString("value", kvp.Value);
xtw.WriteEndElement();
}
diff --git a/SabreTools.Library/DatFiles/OfflineList.cs b/SabreTools.Library/DatFiles/OfflineList.cs
index 0a45e939..1e6f9a55 100644
--- a/SabreTools.Library/DatFiles/OfflineList.cs
+++ b/SabreTools.Library/DatFiles/OfflineList.cs
@@ -208,7 +208,7 @@ namespace SabreTools.Library.DatFiles
return;
// Setup the infos object
- Header.Infos = new List>();
+ Header.Infos = new List();
// Otherwise, add what is possible
reader.MoveToContent();
@@ -223,8 +223,8 @@ namespace SabreTools.Library.DatFiles
continue;
}
- // Add all tuples to the info list
- Header.Infos.Add(new Tuple(
+ // Add all infos to the info list
+ Header.Infos.Add(new OfflineListInfo(
reader.Name.ToLowerInvariant(),
reader.GetAttribute("visible").AsYesNo(),
reader.GetAttribute("inNamingOption").AsYesNo(),
@@ -771,10 +771,10 @@ namespace SabreTools.Library.DatFiles
foreach (var info in Header.Infos)
{
- xtw.WriteStartElement(info.Item1);
- xtw.WriteAttributeString("visible", info.Item2.ToString());
- xtw.WriteAttributeString("inNamingOption", info.Item3.ToString());
- xtw.WriteAttributeString("default", info.Item4.ToString());
+ xtw.WriteStartElement(info.Name);
+ xtw.WriteAttributeString("visible", info.Visible.ToString());
+ xtw.WriteAttributeString("inNamingOption", info.IsNamingOption.ToString());
+ xtw.WriteAttributeString("default", info.Default.ToString());
xtw.WriteEndElement();
}
diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs
index 85f7d6a2..f6da6897 100644
--- a/SabreTools.Library/DatFiles/SeparatedValue.cs
+++ b/SabreTools.Library/DatFiles/SeparatedValue.cs
@@ -112,7 +112,7 @@ namespace SabreTools.Library.DatFiles
long size = -1;
ItemType itemType = ItemType.Rom;
ItemStatus status = ItemStatus.None;
- List> features = null;
+ List features = null;
// Now we loop through and get values for everything
for (int i = 0; i < svr.HeaderValues.Count; i++)
@@ -395,12 +395,12 @@ namespace SabreTools.Library.DatFiles
break;
case "Machine.Infos":
- machine.Infos = new List>();
+ machine.Infos = new List();
var infos = value.Split(';');
foreach (var info in infos)
{
var infoPair = info.Split('=');
- machine.Infos.Add(new KeyValuePair(infoPair[0], infoPair[1]));
+ machine.Infos.Add(new ListXmlInfo(infoPair[0], infoPair[1]));
}
break;
@@ -466,12 +466,12 @@ namespace SabreTools.Library.DatFiles
break;
case "Machine.SharedFeatures":
- machine.SharedFeatures = new List>();
+ machine.SharedFeatures = new List();
var sharedFeatures = value.Split(';');
foreach (var sharedFeature in sharedFeatures)
{
var featurePair = sharedFeature.Split('=');
- machine.SharedFeatures.Add(new KeyValuePair(featurePair[0], featurePair[1]));
+ machine.SharedFeatures.Add(new SoftwareListSharedFeature(featurePair[0], featurePair[1]));
}
break;
@@ -517,12 +517,12 @@ namespace SabreTools.Library.DatFiles
break;
case "DatItem.Features":
- features = new List>();
+ features = new List();
var splitFeatures = value.Split(';');
foreach (var splitFeature in splitFeatures)
{
var featurePair = splitFeature.Split('=');
- features.Add(new KeyValuePair(featurePair[0], featurePair[1]));
+ features.Add(new SoftwareListFeature(featurePair[0], featurePair[1]));
}
break;
diff --git a/SabreTools.Library/DatFiles/SoftwareList.cs b/SabreTools.Library/DatFiles/SoftwareList.cs
index a48ca380..0a69788d 100644
--- a/SabreTools.Library/DatFiles/SoftwareList.cs
+++ b/SabreTools.Library/DatFiles/SoftwareList.cs
@@ -145,8 +145,8 @@ namespace SabreTools.Library.DatFiles
Supported = reader.GetAttribute("supported").AsYesNo(), // (yes|partial|no) "yes"
CloneOf = reader.GetAttribute("cloneof") ?? string.Empty,
- Infos = new List>(),
- SharedFeatures = new List>(),
+ Infos = new List(),
+ SharedFeatures = new List(),
MachineType = (machineType == MachineType.NULL ? MachineType.None : machineType),
};
@@ -180,12 +180,12 @@ namespace SabreTools.Library.DatFiles
break;
case "info":
- machine.Infos.Add(new KeyValuePair(reader.GetAttribute("name"), reader.GetAttribute("value")));
+ machine.Infos.Add(new ListXmlInfo(reader.GetAttribute("name"), reader.GetAttribute("value")));
reader.Read();
break;
case "sharedfeat":
- machine.SharedFeatures.Add(new KeyValuePair(reader.GetAttribute("name"), reader.GetAttribute("value")));
+ machine.SharedFeatures.Add(new SoftwareListSharedFeature(reader.GetAttribute("name"), reader.GetAttribute("value")));
reader.Read();
break;
@@ -246,7 +246,7 @@ namespace SabreTools.Library.DatFiles
areaWidth,
areaEndinaness;
long? areasize = null;
- var features = new List>();
+ var features = new List();
bool containsItems = false;
while (!reader.EOF)
@@ -258,7 +258,7 @@ namespace SabreTools.Library.DatFiles
{
partname = string.Empty;
partinterface = string.Empty;
- features = new List>();
+ features = new List();
}
if (reader.NodeType == XmlNodeType.EndElement && (reader.Name == "dataarea" || reader.Name == "diskarea"))
@@ -278,7 +278,7 @@ namespace SabreTools.Library.DatFiles
break;
case "feature":
- features.Add(new KeyValuePair(reader.GetAttribute("name"), reader.GetAttribute("value")));
+ features.Add(new SoftwareListFeature(reader.GetAttribute("name"), reader.GetAttribute("value")));
reader.Read();
break;
@@ -373,7 +373,7 @@ namespace SabreTools.Library.DatFiles
Machine machine,
string partName,
string partInterface,
- List> features,
+ List features,
string areaName,
long? areaSize,
string areaWidth,
@@ -489,7 +489,7 @@ namespace SabreTools.Library.DatFiles
Machine machine,
string partname,
string partinterface,
- List> features,
+ List features,
string areaname,
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)
{
- foreach (KeyValuePair kvp in datItem.Machine.Infos)
+ foreach (ListXmlInfo kvp in datItem.Machine.Infos)
{
xtw.WriteStartElement("info");
- xtw.WriteAttributeString("name", kvp.Key);
+ xtw.WriteAttributeString("name", kvp.Name);
xtw.WriteAttributeString("value", kvp.Value);
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)
{
- foreach (KeyValuePair kvp in datItem.Machine.SharedFeatures)
+ foreach (SoftwareListSharedFeature kvp in datItem.Machine.SharedFeatures)
{
xtw.WriteStartElement("sharedfeat");
- xtw.WriteAttributeString("name", kvp.Key);
+ xtw.WriteAttributeString("name", kvp.Name);
xtw.WriteAttributeString("value", kvp.Value);
xtw.WriteEndElement();
}
@@ -844,10 +844,10 @@ namespace SabreTools.Library.DatFiles
if (!Header.ExcludeFields.Contains(Field.Features) && datItem.Features != null && datItem.Features.Count > 0)
{
- foreach (KeyValuePair kvp in datItem.Features)
+ foreach (SoftwareListFeature kvp in datItem.Features)
{
xtw.WriteStartElement("feature");
- xtw.WriteAttributeString("name", kvp.Key);
+ xtw.WriteAttributeString("name", kvp.Name);
xtw.WriteAttributeString("value", kvp.Value);
xtw.WriteEndElement();
}
diff --git a/SabreTools.Library/DatItems/Auxiliary.cs b/SabreTools.Library/DatItems/Auxiliary.cs
new file mode 100644
index 00000000..83bb8cc5
--- /dev/null
+++ b/SabreTools.Library/DatItems/Auxiliary.cs
@@ -0,0 +1,70 @@
+///
+/// This holds all of the auxiliary types needed for proper parsing
+///
+namespace SabreTools.Library.DatItems
+{
+ #region Machine
+
+ #region ListXML
+
+ ///
+ /// Represents one ListXML info object
+ ///
+ 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
+
+ ///
+ /// Represents one SoftwareList shared feature object
+ ///
+ 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
+
+ ///
+ /// Represents one SoftwareList feature object
+ ///
+ 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
+}
diff --git a/SabreTools.Library/DatItems/DatItem.cs b/SabreTools.Library/DatItems/DatItem.cs
index 5e20767a..e6f4e285 100644
--- a/SabreTools.Library/DatItems/DatItem.cs
+++ b/SabreTools.Library/DatItems/DatItem.cs
@@ -87,7 +87,7 @@ namespace SabreTools.Library.DatItems
/// Features provided to/by the item
///
[JsonProperty("features")]
- public List> Features { get; set; }
+ public List Features { get; set; }
///
/// Original hardware part name within an item
@@ -296,7 +296,7 @@ namespace SabreTools.Library.DatItems
fieldValue = PartInterface;
break;
case Field.Features:
- fieldValue = string.Join(";", (Features ?? new List>()).Select(f => $"{f.Key}={f.Value}"));
+ fieldValue = string.Join(";", (Features ?? new List()).Select(f => $"{f.Name}={f.Value}"));
break;
case Field.AreaName:
fieldValue = AreaName;
@@ -366,13 +366,13 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.Features))
{
if (Features == null)
- Features = new List>();
+ Features = new List();
string[] pairs = mappings[Field.Features].Split(';');
foreach (string pair in pairs)
{
string[] split = pair.Split('=');
- Features.Add(new KeyValuePair(split[0], split[1]));
+ Features.Add(new SoftwareListFeature(split[0], split[1]));
}
}
diff --git a/SabreTools.Library/DatItems/Machine.cs b/SabreTools.Library/DatItems/Machine.cs
index a704e8fd..cf7fc187 100644
--- a/SabreTools.Library/DatItems/Machine.cs
+++ b/SabreTools.Library/DatItems/Machine.cs
@@ -167,7 +167,7 @@ namespace SabreTools.Library.DatItems
///
/// Also in SoftwareList
[JsonProperty("infos")]
- public List> Infos { get; set; } = null;
+ public List Infos { get; set; } = null;
#endregion
@@ -259,7 +259,7 @@ namespace SabreTools.Library.DatItems
///
/// Also in SoftwareList
[JsonProperty("sharedfeat")]
- public List> SharedFeatures { get; set; } = null;
+ public List SharedFeatures { get; set; } = null;
#endregion
@@ -358,7 +358,7 @@ namespace SabreTools.Library.DatItems
fieldValue = string.Join(";", SlotOptions ?? new List());
break;
case Field.Infos:
- fieldValue = string.Join(";", (Infos ?? new List>()).Select(i => $"{i.Key}={i.Value}"));
+ fieldValue = string.Join(";", (Infos ?? new List()).Select(i => $"{i.Name}={i.Value}"));
break;
#endregion
@@ -412,7 +412,7 @@ namespace SabreTools.Library.DatItems
fieldValue = Supported?.ToString();
break;
case Field.SharedFeatures:
- fieldValue = string.Join(";", (SharedFeatures ?? new List>()).Select(i => $"{i.Key}={i.Value}"));
+ fieldValue = string.Join(";", (SharedFeatures ?? new List()).Select(i => $"{i.Name}={i.Value}"));
break;
#endregion
@@ -525,13 +525,13 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.Infos))
{
if (Infos == null)
- Infos = new List>();
+ Infos = new List();
string[] pairs = mappings[Field.Infos].Split(';');
foreach (string pair in pairs)
{
string[] split = pair.Split('=');
- Infos.Add(new KeyValuePair(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 (SharedFeatures == null)
- SharedFeatures = new List>();
+ SharedFeatures = new List();
string[] pairs = mappings[Field.SharedFeatures].Split(';');
foreach (string pair in pairs)
{
string[] split = pair.Split('=');
- SharedFeatures.Add(new KeyValuePair(split[0], split[1]));
+ SharedFeatures.Add(new SoftwareListSharedFeature(split[0], split[1]));
}
}
diff --git a/SabreTools.Library/Filtering/Filter.cs b/SabreTools.Library/Filtering/Filter.cs
index a60f4588..6a9511b7 100644
--- a/SabreTools.Library/Filtering/Filter.cs
+++ b/SabreTools.Library/Filtering/Filter.cs
@@ -133,7 +133,7 @@ namespace SabreTools.Library.Filtering
///
public FilterItem SlotOptions { get; private set; } = new FilterItem();
- // TODO: Machine.Infos - List>
+ // TODO: Machine.Infos - List
///
/// Include or exclude machine types
@@ -212,7 +212,7 @@ namespace SabreTools.Library.Filtering
///
public FilterItem Supported { get; private set; } = new FilterItem() { Neutral = null };
- // TODO: Machine.SharedFeatures - List>
+ // TODO: Machine.SharedFeatures - List
#endregion
@@ -260,7 +260,7 @@ namespace SabreTools.Library.Filtering
///
public FilterItem PartInterface { get; private set; } = new FilterItem();
- // TODO: DatItem.Features - List>
+ // TODO: DatItem.Features - List
///
/// Include or exclude area names