Wire up value and loadflag for SL

This commit is contained in:
Matt Nadareski
2020-08-21 14:20:17 -07:00
parent 0474bea6f4
commit b01217cffb
14 changed files with 161 additions and 8 deletions

View File

@@ -738,6 +738,8 @@ namespace SabreTools.Library.DatFiles
areaName = null,
areaWidth = null,
areaEndianness = null,
value = null,
loadFlag = null,
biosDescription = null,
region = null,
language = null,
@@ -781,6 +783,8 @@ namespace SabreTools.Library.DatFiles
datItem.AreaSize = areaSize;
datItem.AreaWidth = areaWidth;
datItem.AreaEndianness = areaEndianness;
datItem.Value = value;
datItem.LoadFlag = loadFlag;
if (itemType == ItemType.BiosSet)
{
@@ -882,10 +886,10 @@ namespace SabreTools.Library.DatFiles
jtr.Read(); // Key
string key = jtr.Value as string;
string value = jtr.ReadAsString();
string featureValue = jtr.ReadAsString();
jtr.Read(); // End object
features.Add(new KeyValuePair<string, string>(key, value));
features.Add(new KeyValuePair<string, string>(key, featureValue));
}
break;
@@ -910,6 +914,14 @@ namespace SabreTools.Library.DatFiles
areaEndianness = jtr.ReadAsString();
break;
case "value":
value = jtr.ReadAsString();
break;
case "loadflag":
loadFlag = jtr.ReadAsString();
break;
case "description":
biosDescription = jtr.ReadAsString();
break;
@@ -2072,6 +2084,16 @@ namespace SabreTools.Library.DatFiles
jtw.WritePropertyName("areaendianness");
jtw.WriteValue(datItem.AreaEndianness);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Value, Header.ExcludeFields)))
{
jtw.WritePropertyName("value");
jtw.WriteValue(datItem.Value);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.LoadFlag, Header.ExcludeFields)))
{
jtw.WritePropertyName("loadflag");
jtw.WriteValue(datItem.LoadFlag);
}
// End item
jtw.WriteEndObject();

View File

@@ -89,6 +89,8 @@ namespace SabreTools.Library.DatFiles
areaName = null,
areaWidth = null,
areaEndianness = null,
slvalue = null,
loadFlag = null,
biosDescription = null,
crc = null,
md5 = null,
@@ -545,6 +547,14 @@ namespace SabreTools.Library.DatFiles
areaEndianness = value;
break;
case "DatItem.Value":
slvalue = value;
break;
case "DatItem.LoadFlag":
loadFlag = value;
break;
#endregion
case "DatItem.Default":
@@ -662,6 +672,8 @@ namespace SabreTools.Library.DatFiles
AreaSize = areaSize,
AreaWidth = areaWidth,
AreaEndianness = areaEndianness,
Value = slvalue,
LoadFlag = loadFlag,
Source = new Source
{
@@ -689,6 +701,8 @@ namespace SabreTools.Library.DatFiles
AreaSize = areaSize,
AreaWidth = areaWidth,
AreaEndianness = areaEndianness,
Value = slvalue,
LoadFlag = loadFlag,
Description = biosDescription,
Default = def,
@@ -719,6 +733,8 @@ namespace SabreTools.Library.DatFiles
AreaSize = areaSize,
AreaWidth = areaWidth,
AreaEndianness = areaEndianness,
Value = slvalue,
LoadFlag = loadFlag,
MD5 = md5,
#if NET_FRAMEWORK
@@ -761,6 +777,8 @@ namespace SabreTools.Library.DatFiles
AreaSize = areaSize,
AreaWidth = areaWidth,
AreaEndianness = areaEndianness,
Value = slvalue,
LoadFlag = loadFlag,
Region = region,
Language = language,
@@ -793,6 +811,8 @@ namespace SabreTools.Library.DatFiles
AreaSize = areaSize,
AreaWidth = areaWidth,
AreaEndianness = areaEndianness,
Value = slvalue,
LoadFlag = loadFlag,
Bios = bios,
Size = size,
@@ -839,6 +859,8 @@ namespace SabreTools.Library.DatFiles
AreaSize = areaSize,
AreaWidth = areaWidth,
AreaEndianness = areaEndianness,
Value = slvalue,
LoadFlag = loadFlag,
Source = new Source
{
@@ -1309,6 +1331,14 @@ namespace SabreTools.Library.DatFiles
case "area-endianness":
return "DatItem.AreaEndianness";
case "value":
return "DatItem.Value";
case "loadflag":
case "load flag":
case "load-flag":
return "DatItem.LoadFlag";
#endregion
case "default":

View File

@@ -331,6 +331,7 @@ namespace SabreTools.Library.DatFiles
break;
case "dipswitch":
// TODO: Read dipswitches
// string dipswitch_name = reader.GetAttribute("name");
// string dipswitch_tag = reader.GetAttribute("tag");
// string dipswitch_mask = reader.GetAttribute("mask");
@@ -413,6 +414,7 @@ namespace SabreTools.Library.DatFiles
{
((Rom)lastrom).Size += Sanitizer.CleanSize(reader.GetAttribute("size"));
}
Items[key].RemoveAt(index);
Items[key].Add(lastrom);
reader.Read();
@@ -433,9 +435,7 @@ namespace SabreTools.Library.DatFiles
SHA384 = reader.GetAttribute("sha384"),
SHA512 = reader.GetAttribute("sha512"),
Offset = reader.GetAttribute("offset"),
// Value = reader.GetAttribute("value");
ItemStatus = reader.GetAttribute("status").AsItemStatus(),
// LoadFlag = reader.GetAttribute("loadflag"), // (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore)
PartName = partName,
PartInterface = partInterface,
@@ -444,6 +444,8 @@ namespace SabreTools.Library.DatFiles
AreaSize = areaSize,
AreaWidth = areaWidth,
AreaEndianness = areaEndianness,
Value = reader.GetAttribute("value"),
LoadFlag = reader.GetAttribute("loadflag"),
Source = new Source
{
@@ -926,12 +928,12 @@ namespace SabreTools.Library.DatFiles
xtw.WriteAttributeString("sha512", rom.SHA512.ToLowerInvariant());
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Offset, Header.ExcludeFields)))
xtw.WriteAttributeString("offset", rom.Offset);
//if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Value, DatHeader.ExcludeFields)))
// xtw.WriteAttributeString("value", rom.Value);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Value, Header.ExcludeFields)))
xtw.WriteAttributeString("value", rom.Value);
if (!Header.ExcludeFields.Contains(Field.Status) && rom.ItemStatus != ItemStatus.None)
xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
//if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Loadflag, DatHeader.ExcludeFields)))
// xtw.WriteAttributeString("loadflag", rom.Loadflag);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.LoadFlag, Header.ExcludeFields)))
xtw.WriteAttributeString("loadflag", rom.LoadFlag);
xtw.WriteEndElement();
// End dataarea

View File

@@ -38,6 +38,8 @@
AreaSize = this.AreaSize,
AreaWidth = this.AreaWidth,
AreaEndianness = this.AreaEndianness,
Value = this.Value,
LoadFlag = this.LoadFlag,
Machine = this.Machine.Clone() as Machine,
Source = this.Source.Clone() as Source,

View File

@@ -114,6 +114,8 @@ namespace SabreTools.Library.DatItems
AreaSize = this.AreaSize,
AreaWidth = this.AreaWidth,
AreaEndianness = this.AreaEndianness,
Value = this.Value,
LoadFlag = this.LoadFlag,
Machine = this.Machine.Clone() as Machine,
Source = this.Source.Clone() as Source,

View File

@@ -38,6 +38,8 @@
AreaSize = this.AreaSize,
AreaWidth = this.AreaWidth,
AreaEndianness = this.AreaEndianness,
Value = this.Value,
LoadFlag = this.LoadFlag,
Machine = this.Machine.Clone() as Machine,
Source = this.Source.Clone() as Source,

View File

@@ -115,6 +115,19 @@ namespace SabreTools.Library.DatItems
[JsonProperty("endianness")]
public string AreaEndianness { get; set; } // (big|little) "little"
/// <summary>
/// SoftwareList value associated with the item
/// </summary>
[JsonProperty("value")]
public string Value { get; set; }
/// <summary>
/// Loading flag
/// </summary>
/// TODO: Convert to Enum?
[JsonProperty("loadflag")]
public string LoadFlag { get; set; } // (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore)
#endregion
#region Metadata information
@@ -155,6 +168,8 @@ namespace SabreTools.Library.DatItems
Field.AreaSize,
Field.AreaWidth,
Field.AreaEndianness,
Field.Value,
Field.LoadFlag,
// BiosSet
Field.BiosDescription,
@@ -295,6 +310,12 @@ namespace SabreTools.Library.DatItems
case Field.AreaEndianness:
fieldValue = AreaEndianness;
break;
case Field.Value:
fieldValue = Value;
break;
case Field.LoadFlag:
fieldValue = LoadFlag;
break;
case Field.NULL:
default:
@@ -370,6 +391,12 @@ namespace SabreTools.Library.DatItems
if (mappings.Keys.Contains(Field.AreaEndianness))
AreaEndianness = mappings[Field.AreaEndianness];
if (mappings.Keys.Contains(Field.Value))
Value = mappings[Field.Value];
if (mappings.Keys.Contains(Field.LoadFlag))
LoadFlag = mappings[Field.LoadFlag];
#endregion
}
@@ -632,6 +659,18 @@ namespace SabreTools.Library.DatItems
if (filter.AreaEndianness.MatchesNegativeSet(AreaEndianness) == true)
return false;
// Filter on softwarelist value
if (filter.Value.MatchesPositiveSet(Value) == false)
return false;
if (filter.Value.MatchesNegativeSet(Value) == true)
return false;
// Filter on load flag
if (filter.LoadFlag.MatchesPositiveSet(LoadFlag) == false)
return false;
if (filter.LoadFlag.MatchesNegativeSet(LoadFlag) == true)
return false;
#endregion
return true;
@@ -686,6 +725,12 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.AreaEndianness))
AreaEndianness = null;
if (fields.Contains(Field.Value))
Value = null;
if (fields.Contains(Field.LoadFlag))
LoadFlag = null;
#endregion
}
@@ -809,6 +854,12 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.AreaEndianness))
AreaEndianness = item.AreaEndianness;
if (fields.Contains(Field.Value))
Value = item.Value;
if (fields.Contains(Field.LoadFlag))
LoadFlag = item.LoadFlag;
#endregion
}

View File

@@ -302,6 +302,8 @@ namespace SabreTools.Library.DatItems
AreaSize = this.AreaSize,
AreaWidth = this.AreaWidth,
AreaEndianness = this.AreaEndianness,
Value = this.Value,
LoadFlag = this.LoadFlag,
Machine = this.Machine.Clone() as Machine,
Source = this.Source.Clone() as Source,
@@ -346,6 +348,8 @@ namespace SabreTools.Library.DatItems
AreaSize = this.AreaSize,
AreaWidth = this.AreaWidth,
AreaEndianness = this.AreaEndianness,
Value = this.Value,
LoadFlag = this.LoadFlag,
Machine = this.Machine.Clone() as Machine,
Source = this.Source.Clone() as Source,

View File

@@ -121,6 +121,8 @@ namespace SabreTools.Library.DatItems
AreaSize,
AreaWidth,
AreaEndianness,
Value,
LoadFlag,
#endregion

View File

@@ -142,6 +142,8 @@ namespace SabreTools.Library.DatItems
AreaSize = this.AreaSize,
AreaWidth = this.AreaWidth,
AreaEndianness = this.AreaEndianness,
Value = this.Value,
LoadFlag = this.LoadFlag,
Machine = this.Machine.Clone() as Machine,
Source = this.Source.Clone() as Source,

View File

@@ -384,6 +384,8 @@ namespace SabreTools.Library.DatItems
AreaSize = this.AreaSize,
AreaWidth = this.AreaWidth,
AreaEndianness = this.AreaEndianness,
Value = this.Value,
LoadFlag = this.LoadFlag,
Machine = this.Machine.Clone() as Machine,
Source = this.Source.Clone() as Source,

View File

@@ -38,6 +38,8 @@
AreaSize = this.AreaSize,
AreaWidth = this.AreaWidth,
AreaEndianness = this.AreaEndianness,
Value = this.Value,
LoadFlag = this.LoadFlag,
Machine = this.Machine.Clone() as Machine,
Source = this.Source.Clone() as Source,

View File

@@ -283,6 +283,16 @@ namespace SabreTools.Library.Filtering
/// </summary>
public FilterItem<string> AreaEndianness { get; private set; } = new FilterItem<string>();
/// <summary>
/// Include or exclude softwarelist value
/// </summary>
public FilterItem<string> Value { get; private set; } = new FilterItem<string>();
/// <summary>
/// Include or exclude load flag
/// </summary>
public FilterItem<string> LoadFlag { get; private set; } = new FilterItem<string>();
#endregion
/// <summary>
@@ -895,6 +905,20 @@ namespace SabreTools.Library.Filtering
AreaEndianness.PositiveSet.Add(value);
break;
case Field.Value:
if (negate)
Value.NegativeSet.Add(value);
else
Value.PositiveSet.Add(value);
break;
case Field.LoadFlag:
if (negate)
LoadFlag.NegativeSet.Add(value);
else
LoadFlag.PositiveSet.Add(value);
break;
#endregion
case Field.Default:

View File

@@ -375,6 +375,12 @@ namespace SabreTools.Library.Tools
case "area endianness":
case "area-endianness":
return Field.AreaEndianness;
case "value":
return Field.Value;
case "loadflag":
case "load flag":
case "load-flag":
return Field.LoadFlag;
#endregion