mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Checkpoint (nw)
This commit is contained in:
@@ -63,7 +63,7 @@ contents of any changed dats.";
|
|||||||
DatFile datroot = DatFile.Create();
|
DatFile datroot = DatFile.Create();
|
||||||
datroot.Header.Type = "SuperDAT";
|
datroot.Header.Type = "SuperDAT";
|
||||||
datroot.PopulateFromDir(_dats, asFiles: TreatAsFiles.CHDs);
|
datroot.PopulateFromDir(_dats, asFiles: TreatAsFiles.CHDs);
|
||||||
datroot.Items.BucketBy(Field.SHA1, DedupeType.None);
|
datroot.Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
|
||||||
|
|
||||||
// Create a List of dat hashes in the database (SHA-1)
|
// Create a List of dat hashes in the database (SHA-1)
|
||||||
List<string> databaseDats = new List<string>();
|
List<string> databaseDats = new List<string>();
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace RombaSharp.Features
|
|||||||
// Now rescan the depot itself
|
// Now rescan the depot itself
|
||||||
DatFile depot = DatFile.Create();
|
DatFile depot = DatFile.Create();
|
||||||
depot.PopulateFromDir(depotname, asFiles: TreatAsFiles.CHDs);
|
depot.PopulateFromDir(depotname, asFiles: TreatAsFiles.CHDs);
|
||||||
depot.Items.BucketBy(Field.SHA1, DedupeType.None);
|
depot.Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
|
||||||
|
|
||||||
// Set the base queries to use
|
// Set the base queries to use
|
||||||
string crcquery = "INSERT OR IGNORE INTO crc (crc) VALUES";
|
string crcquery = "INSERT OR IGNORE INTO crc (crc) VALUES";
|
||||||
|
|||||||
@@ -256,8 +256,8 @@ namespace SabreTools.Library.DatFiles
|
|||||||
if (updateFields.Intersect(DatItem.DatItemFields).Any())
|
if (updateFields.Intersect(DatItem.DatItemFields).Any())
|
||||||
{
|
{
|
||||||
// For comparison's sake, we want to use CRC as the base bucketing
|
// For comparison's sake, we want to use CRC as the base bucketing
|
||||||
Items.BucketBy(Field.CRC, DedupeType.Full);
|
Items.BucketBy(Field.DatItem_CRC, DedupeType.Full);
|
||||||
intDat.Items.BucketBy(Field.CRC, DedupeType.None);
|
intDat.Items.BucketBy(Field.DatItem_CRC, DedupeType.None);
|
||||||
|
|
||||||
// Then we do a hashwise comparison against the base DAT
|
// Then we do a hashwise comparison against the base DAT
|
||||||
Parallel.ForEach(intDat.Items.Keys, Globals.ParallelOptions, key =>
|
Parallel.ForEach(intDat.Items.Keys, Globals.ParallelOptions, key =>
|
||||||
@@ -362,7 +362,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
if (useGames)
|
if (useGames)
|
||||||
Items.BucketBy(Field.Machine_Name, DedupeType.None);
|
Items.BucketBy(Field.Machine_Name, DedupeType.None);
|
||||||
else
|
else
|
||||||
Items.BucketBy(Field.CRC, DedupeType.None);
|
Items.BucketBy(Field.DatItem_CRC, DedupeType.None);
|
||||||
|
|
||||||
// Now we want to compare each input DAT against the base
|
// Now we want to compare each input DAT against the base
|
||||||
foreach (ParentablePath path in inputs)
|
foreach (ParentablePath path in inputs)
|
||||||
@@ -379,7 +379,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
if (useGames)
|
if (useGames)
|
||||||
intDat.Items.BucketBy(Field.Machine_Name, DedupeType.None);
|
intDat.Items.BucketBy(Field.Machine_Name, DedupeType.None);
|
||||||
else
|
else
|
||||||
intDat.Items.BucketBy(Field.CRC, DedupeType.Full);
|
intDat.Items.BucketBy(Field.DatItem_CRC, DedupeType.Full);
|
||||||
|
|
||||||
// Then we compare against the base DAT
|
// Then we compare against the base DAT
|
||||||
List<string> keys = intDat.Items.Keys.ToList();
|
List<string> keys = intDat.Items.Keys.ToList();
|
||||||
@@ -508,7 +508,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
watch.Stop();
|
watch.Stop();
|
||||||
|
|
||||||
// Then, ensure that the internal dat can be bucketed in the best possible way
|
// Then, ensure that the internal dat can be bucketed in the best possible way
|
||||||
Items.BucketBy(Field.CRC, DedupeType.None);
|
Items.BucketBy(Field.DatItem_CRC, DedupeType.None);
|
||||||
|
|
||||||
// Now, loop through the dictionary and populate the correct DATs
|
// Now, loop through the dictionary and populate the correct DATs
|
||||||
watch.Start("Populating all output DATs");
|
watch.Start("Populating all output DATs");
|
||||||
@@ -1957,7 +1957,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
|
|
||||||
// If the output type isn't set already, get the internal output type
|
// If the output type isn't set already, get the internal output type
|
||||||
Header.DatFormat = (Header.DatFormat == 0 ? currentPath.GetDatFormat() : Header.DatFormat);
|
Header.DatFormat = (Header.DatFormat == 0 ? currentPath.GetDatFormat() : Header.DatFormat);
|
||||||
Items.SetBucketedBy(Field.CRC); // Setting this because it can reduce issues later
|
Items.SetBucketedBy(Field.DatItem_CRC); // Setting this because it can reduce issues later
|
||||||
|
|
||||||
// Now parse the correct type of DAT
|
// Now parse the correct type of DAT
|
||||||
try
|
try
|
||||||
@@ -2083,7 +2083,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get the key and add the file
|
// Get the key and add the file
|
||||||
key = item.GetKey(Field.CRC);
|
key = item.GetKey(Field.DatItem_CRC);
|
||||||
Items.Add(key, item);
|
Items.Add(key, item);
|
||||||
|
|
||||||
return key;
|
return key;
|
||||||
@@ -2255,7 +2255,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
{
|
{
|
||||||
// Add the list if it doesn't exist already
|
// Add the list if it doesn't exist already
|
||||||
Rom rom = new Rom(baseFile);
|
Rom rom = new Rom(baseFile);
|
||||||
Items.Add(rom.GetKey(Field.CRC), rom);
|
Items.Add(rom.GetKey(Field.DatItem_CRC), rom);
|
||||||
Globals.Logger.User($"File added: {Path.GetFileNameWithoutExtension(item)}{Environment.NewLine}");
|
Globals.Logger.User($"File added: {Path.GetFileNameWithoutExtension(item)}{Environment.NewLine}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2379,7 +2379,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
SetDatItemInfo(datItem, item, parent, basepath);
|
SetDatItemInfo(datItem, item, parent, basepath);
|
||||||
|
|
||||||
// Add the file information to the DAT
|
// Add the file information to the DAT
|
||||||
string key = datItem.GetKey(Field.CRC);
|
string key = datItem.GetKey(Field.DatItem_CRC);
|
||||||
Items.Add(key, datItem);
|
Items.Add(key, datItem);
|
||||||
|
|
||||||
Globals.Logger.User($"File added: {datItem.Name}{Environment.NewLine}");
|
Globals.Logger.User($"File added: {datItem.Name}{Environment.NewLine}");
|
||||||
@@ -2571,7 +2571,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
return success;
|
return success;
|
||||||
|
|
||||||
// Now that we have a list of depots, we want to bucket the input DAT by SHA-1
|
// Now that we have a list of depots, we want to bucket the input DAT by SHA-1
|
||||||
Items.BucketBy(Field.SHA1, DedupeType.None);
|
Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
|
||||||
|
|
||||||
// Then we want to loop through each of the hashes and see if we can rebuild
|
// Then we want to loop through each of the hashes and see if we can rebuild
|
||||||
var keys = Items.SortedKeys.ToList();
|
var keys = Items.SortedKeys.ToList();
|
||||||
@@ -3143,7 +3143,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
return success;
|
return success;
|
||||||
|
|
||||||
// Now that we have a list of depots, we want to bucket the input DAT by SHA-1
|
// Now that we have a list of depots, we want to bucket the input DAT by SHA-1
|
||||||
Items.BucketBy(Field.SHA1, DedupeType.None);
|
Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
|
||||||
|
|
||||||
// Then we want to loop through each of the hashes and see if we can rebuild
|
// Then we want to loop through each of the hashes and see if we can rebuild
|
||||||
var keys = Items.SortedKeys.ToList();
|
var keys = Items.SortedKeys.ToList();
|
||||||
@@ -3247,7 +3247,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
if (hashOnly)
|
if (hashOnly)
|
||||||
{
|
{
|
||||||
// First we need to bucket and dedupe by hash to get duplicates
|
// First we need to bucket and dedupe by hash to get duplicates
|
||||||
Items.BucketBy(Field.CRC, DedupeType.Full);
|
Items.BucketBy(Field.DatItem_CRC, DedupeType.Full);
|
||||||
|
|
||||||
// Then follow the same tactics as before
|
// Then follow the same tactics as before
|
||||||
var keys = Items.SortedKeys.ToList();
|
var keys = Items.SortedKeys.ToList();
|
||||||
@@ -3770,7 +3770,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
|
|
||||||
// Bucket and dedupe according to the flag
|
// Bucket and dedupe according to the flag
|
||||||
if (Header.DedupeRoms == DedupeType.Full)
|
if (Header.DedupeRoms == DedupeType.Full)
|
||||||
Items.BucketBy(Field.CRC, Header.DedupeRoms, norename: norename);
|
Items.BucketBy(Field.DatItem_CRC, Header.DedupeRoms, norename: norename);
|
||||||
else if (Header.DedupeRoms == DedupeType.Game)
|
else if (Header.DedupeRoms == DedupeType.Game)
|
||||||
Items.BucketBy(Field.Machine_Name, Header.DedupeRoms, norename: norename);
|
Items.BucketBy(Field.Machine_Name, Header.DedupeRoms, norename: norename);
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
using SabreTools.Library.DatItems;
|
using SabreTools.Library.DatItems;
|
||||||
using SabreTools.Library.IO;
|
using SabreTools.Library.IO;
|
||||||
|
using SabreTools.Library.Tools;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace SabreTools.Library.DatFiles
|
namespace SabreTools.Library.DatFiles
|
||||||
@@ -382,6 +384,133 @@ namespace SabreTools.Library.DatFiles
|
|||||||
|
|
||||||
#region Instance Methods
|
#region Instance Methods
|
||||||
|
|
||||||
|
#region Accessors
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set fields with given values
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="mappings">Mappings dictionary</param>
|
||||||
|
public void SetFields(Dictionary<Field, string> mappings)
|
||||||
|
{
|
||||||
|
#region Common
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_FileName))
|
||||||
|
FileName = mappings[Field.DatHeader_FileName];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Name))
|
||||||
|
Name = mappings[Field.DatHeader_Name];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Description))
|
||||||
|
Description = mappings[Field.DatHeader_Description];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_RootDir))
|
||||||
|
RootDir = mappings[Field.DatHeader_RootDir];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Category))
|
||||||
|
Category = mappings[Field.DatHeader_Category];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Version))
|
||||||
|
Version = mappings[Field.DatHeader_Version];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Date))
|
||||||
|
Date = mappings[Field.DatHeader_Date];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Author))
|
||||||
|
Author = mappings[Field.DatHeader_Author];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Email))
|
||||||
|
Email = mappings[Field.DatHeader_Email];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Homepage))
|
||||||
|
Homepage = mappings[Field.DatHeader_Homepage];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Url))
|
||||||
|
Url = mappings[Field.DatHeader_Url];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Comment))
|
||||||
|
Comment = mappings[Field.DatHeader_Comment];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_HeaderSkipper))
|
||||||
|
HeaderSkipper = mappings[Field.DatHeader_HeaderSkipper];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Type))
|
||||||
|
Type = mappings[Field.DatHeader_Type];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_ForceMerging))
|
||||||
|
ForceMerging = mappings[Field.DatHeader_ForceMerging].AsMergingFlag();
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_ForceNodump))
|
||||||
|
ForceNodump = mappings[Field.DatHeader_ForceNodump].AsNodumpFlag();
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_ForcePacking))
|
||||||
|
ForcePacking = mappings[Field.DatHeader_ForcePacking].AsPackingFlag();
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ListXML
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Debug))
|
||||||
|
Debug = mappings[Field.DatHeader_Debug].AsYesNo();
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_MameConfig))
|
||||||
|
MameConfig = mappings[Field.DatHeader_MameConfig];
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Logiqx
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_Build))
|
||||||
|
Build = mappings[Field.DatHeader_Build];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_RomMode))
|
||||||
|
RomMode = mappings[Field.DatHeader_RomMode].AsMergingFlag();
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_BiosMode))
|
||||||
|
BiosMode = mappings[Field.DatHeader_BiosMode].AsMergingFlag();
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_SampleMode))
|
||||||
|
SampleMode = mappings[Field.DatHeader_SampleMode].AsMergingFlag();
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_LockRomMode))
|
||||||
|
LockRomMode = mappings[Field.DatHeader_LockRomMode].AsYesNo();
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_LockBiosMode))
|
||||||
|
LockBiosMode = mappings[Field.DatHeader_LockBiosMode].AsYesNo();
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_LockSampleMode))
|
||||||
|
LockSampleMode = mappings[Field.DatHeader_LockSampleMode].AsYesNo();
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region OfflineList
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_System))
|
||||||
|
System = mappings[Field.DatHeader_System];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_ScreenshotsWidth))
|
||||||
|
ScreenshotsWidth = mappings[Field.DatHeader_ScreenshotsWidth];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_ScreenshotsHeight))
|
||||||
|
ScreenshotsHeight = mappings[Field.DatHeader_ScreenshotsHeight];
|
||||||
|
|
||||||
|
// TODO: Add DatHeader_Info*
|
||||||
|
// TDOO: Add DatHeader_CanOpen*
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_RomTitle))
|
||||||
|
RomTitle = mappings[Field.DatHeader_RomTitle];
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region RomCenter
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatHeader_RomCenterVersion))
|
||||||
|
RomCenterVersion = mappings[Field.DatHeader_RomCenterVersion];
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Cloning Methods
|
#region Cloning Methods
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -806,33 +806,33 @@ namespace SabreTools.Library.DatFiles
|
|||||||
{
|
{
|
||||||
// If all items are supposed to have a SHA-512, we bucket by that
|
// If all items are supposed to have a SHA-512, we bucket by that
|
||||||
if (RomCount + DiskCount - NodumpCount == SHA512Count)
|
if (RomCount + DiskCount - NodumpCount == SHA512Count)
|
||||||
return Field.SHA512;
|
return Field.DatItem_SHA512;
|
||||||
|
|
||||||
// If all items are supposed to have a SHA-384, we bucket by that
|
// If all items are supposed to have a SHA-384, we bucket by that
|
||||||
else if (RomCount + DiskCount - NodumpCount == SHA384Count)
|
else if (RomCount + DiskCount - NodumpCount == SHA384Count)
|
||||||
return Field.SHA384;
|
return Field.DatItem_SHA384;
|
||||||
|
|
||||||
// If all items are supposed to have a SHA-256, we bucket by that
|
// If all items are supposed to have a SHA-256, we bucket by that
|
||||||
else if (RomCount + DiskCount - NodumpCount == SHA256Count)
|
else if (RomCount + DiskCount - NodumpCount == SHA256Count)
|
||||||
return Field.SHA256;
|
return Field.DatItem_SHA256;
|
||||||
|
|
||||||
// If all items are supposed to have a SHA-1, we bucket by that
|
// If all items are supposed to have a SHA-1, we bucket by that
|
||||||
else if (RomCount + DiskCount - NodumpCount == SHA1Count)
|
else if (RomCount + DiskCount - NodumpCount == SHA1Count)
|
||||||
return Field.SHA1;
|
return Field.DatItem_SHA1;
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
// If all items are supposed to have a RIPEMD160, we bucket by that
|
// If all items are supposed to have a RIPEMD160, we bucket by that
|
||||||
else if (RomCount + DiskCount - NodumpCount == RIPEMD160Count)
|
else if (RomCount + DiskCount - NodumpCount == RIPEMD160Count)
|
||||||
return Field.RIPEMD160;
|
return Field.DatItem_RIPEMD160;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// If all items are supposed to have a MD5, we bucket by that
|
// If all items are supposed to have a MD5, we bucket by that
|
||||||
else if (RomCount + DiskCount - NodumpCount == MD5Count)
|
else if (RomCount + DiskCount - NodumpCount == MD5Count)
|
||||||
return Field.MD5;
|
return Field.DatItem_MD5;
|
||||||
|
|
||||||
// Otherwise, we bucket by CRC
|
// Otherwise, we bucket by CRC
|
||||||
else
|
else
|
||||||
return Field.CRC;
|
return Field.DatItem_CRC;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -41,11 +41,11 @@ namespace SabreTools.Library.DatItems
|
|||||||
base.SetFields(mappings);
|
base.SetFields(mappings);
|
||||||
|
|
||||||
// Handle BiosSet-specific fields
|
// Handle BiosSet-specific fields
|
||||||
if (mappings.Keys.Contains(Field.Default))
|
if (mappings.Keys.Contains(Field.DatItem_Default))
|
||||||
Default = mappings[Field.Default].AsYesNo();
|
Default = mappings[Field.DatItem_Default].AsYesNo();
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.BiosDescription))
|
if (mappings.Keys.Contains(Field.DatItem_Description))
|
||||||
Description = mappings[Field.BiosDescription];
|
Description = mappings[Field.DatItem_Description];
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -155,10 +155,10 @@ namespace SabreTools.Library.DatItems
|
|||||||
base.RemoveFields(fields);
|
base.RemoveFields(fields);
|
||||||
|
|
||||||
// Remove the fields
|
// Remove the fields
|
||||||
if (fields.Contains(Field.BiosDescription))
|
if (fields.Contains(Field.DatItem_Description))
|
||||||
Description = null;
|
Description = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Default))
|
if (fields.Contains(Field.DatItem_Default))
|
||||||
Default = null;
|
Default = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,10 +184,10 @@ namespace SabreTools.Library.DatItems
|
|||||||
BiosSet newItem = item as BiosSet;
|
BiosSet newItem = item as BiosSet;
|
||||||
|
|
||||||
// Replace the fields
|
// Replace the fields
|
||||||
if (fields.Contains(Field.BiosDescription))
|
if (fields.Contains(Field.DatItem_Description))
|
||||||
Description = newItem.Description;
|
Description = newItem.Description;
|
||||||
|
|
||||||
if (fields.Contains(Field.Default))
|
if (fields.Contains(Field.DatItem_Default))
|
||||||
Default = newItem.Default;
|
Default = newItem.Default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -185,6 +185,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fields unique to a DatItem
|
/// Fields unique to a DatItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// TODO: Ensure list
|
||||||
public static readonly List<Field> DatItemFields = new List<Field>()
|
public static readonly List<Field> DatItemFields = new List<Field>()
|
||||||
{
|
{
|
||||||
// Common
|
// Common
|
||||||
@@ -202,51 +203,52 @@ namespace SabreTools.Library.DatItems
|
|||||||
Field.DatItem_Boot,
|
Field.DatItem_Boot,
|
||||||
|
|
||||||
//SoftwareList
|
//SoftwareList
|
||||||
Field.PartName,
|
Field.DatItem_Part_Name,
|
||||||
Field.PartInterface,
|
Field.DatItem_Part_Interface,
|
||||||
Field.Features,
|
Field.DatItem_Features,
|
||||||
Field.AreaName,
|
Field.DatItem_AreaName,
|
||||||
Field.AreaSize,
|
Field.DatItem_AreaSize,
|
||||||
Field.AreaWidth,
|
Field.DatItem_AreaWidth,
|
||||||
Field.AreaEndianness,
|
Field.DatItem_AreaEndianness,
|
||||||
Field.Value,
|
Field.DatItem_Value,
|
||||||
Field.LoadFlag,
|
Field.DatItem_LoadFlag,
|
||||||
|
|
||||||
// BiosSet
|
// BiosSet
|
||||||
Field.BiosDescription,
|
Field.DatItem_Description,
|
||||||
Field.Default,
|
Field.DatItem_Default,
|
||||||
|
|
||||||
// Disk
|
// Disk
|
||||||
Field.MD5,
|
Field.DatItem_MD5,
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
Field.RIPEMD160,
|
Field.DatItem_RIPEMD160,
|
||||||
#endif
|
#endif
|
||||||
Field.SHA1,
|
Field.DatItem_SHA1,
|
||||||
Field.SHA256,
|
Field.DatItem_SHA256,
|
||||||
Field.SHA384,
|
Field.DatItem_SHA384,
|
||||||
Field.SHA512,
|
Field.DatItem_SHA512,
|
||||||
Field.Merge,
|
Field.DatItem_Merge,
|
||||||
Field.Region,
|
Field.DatItem_Region,
|
||||||
Field.Index,
|
Field.DatItem_Index,
|
||||||
Field.Writable,
|
Field.DatItem_Writable,
|
||||||
Field.Optional,
|
Field.DatItem_Optional,
|
||||||
Field.Status,
|
Field.DatItem_Status,
|
||||||
|
|
||||||
// Release
|
// Release
|
||||||
Field.Language,
|
Field.DatItem_Language,
|
||||||
Field.Date,
|
Field.DatItem_Date,
|
||||||
|
|
||||||
// Rom
|
// Rom
|
||||||
Field.Bios,
|
Field.DatItem_Bios,
|
||||||
Field.Size,
|
Field.DatItem_Size,
|
||||||
Field.CRC,
|
Field.DatItem_CRC,
|
||||||
Field.Offset,
|
Field.DatItem_Offset,
|
||||||
Field.Inverted,
|
Field.DatItem_Inverted,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fields unique to a Machine
|
/// Fields unique to a Machine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// TODO: Ensure list
|
||||||
public static readonly List<Field> MachineFields = new List<Field>()
|
public static readonly List<Field> MachineFields = new List<Field>()
|
||||||
{
|
{
|
||||||
// Common
|
// Common
|
||||||
@@ -265,7 +267,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
Field.Machine_Players,
|
Field.Machine_Players,
|
||||||
Field.Machine_Rotation,
|
Field.Machine_Rotation,
|
||||||
Field.Machine_Control,
|
Field.Machine_Control,
|
||||||
Field.Machine_SupportStatus,
|
Field.Machine_Status,
|
||||||
Field.Machine_DisplayCount,
|
Field.Machine_DisplayCount,
|
||||||
Field.Machine_DisplayType,
|
Field.Machine_DisplayType,
|
||||||
Field.Machine_Buttons,
|
Field.Machine_Buttons,
|
||||||
@@ -318,6 +320,9 @@ namespace SabreTools.Library.DatItems
|
|||||||
public virtual void SetFields(Dictionary<Field, string> mappings)
|
public virtual void SetFields(Dictionary<Field, string> mappings)
|
||||||
{
|
{
|
||||||
// Set machine fields
|
// Set machine fields
|
||||||
|
if (Machine == null)
|
||||||
|
Machine = new Machine();
|
||||||
|
|
||||||
Machine.SetFields(mappings);
|
Machine.SetFields(mappings);
|
||||||
|
|
||||||
#region Common
|
#region Common
|
||||||
@@ -358,60 +363,30 @@ namespace SabreTools.Library.DatItems
|
|||||||
|
|
||||||
#region SoftwareList
|
#region SoftwareList
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.PartName))
|
// TODO: Add DatItem_Part*
|
||||||
|
// TODO: Add DatItem_Feature*
|
||||||
|
|
||||||
|
// TODO: These might be replaced by dataarea/diskarea
|
||||||
|
if (mappings.Keys.Contains(Field.DatItem_AreaName))
|
||||||
|
AreaName = mappings[Field.DatItem_AreaName];
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.DatItem_AreaSize))
|
||||||
{
|
{
|
||||||
if (Part == null)
|
if (Int64.TryParse(mappings[Field.DatItem_AreaSize], out long areaSize))
|
||||||
Part = new SoftwareListPart();
|
|
||||||
|
|
||||||
Part.Name = mappings[Field.PartName];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.PartInterface))
|
|
||||||
{
|
|
||||||
if (Part == null)
|
|
||||||
Part = new SoftwareListPart();
|
|
||||||
|
|
||||||
Part.Interface = mappings[Field.PartInterface];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Features))
|
|
||||||
{
|
|
||||||
if (Features == null)
|
|
||||||
Features = new List<SoftwareListFeature>();
|
|
||||||
|
|
||||||
string[] pairs = mappings[Field.Features].Split(';');
|
|
||||||
foreach (string pair in pairs)
|
|
||||||
{
|
|
||||||
string[] split = pair.Split('=');
|
|
||||||
|
|
||||||
var feature = new SoftwareListFeature();
|
|
||||||
feature.Name = split[0];
|
|
||||||
feature.Value = split[1];
|
|
||||||
|
|
||||||
Features.Add(feature);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.AreaName))
|
|
||||||
AreaName = mappings[Field.AreaName];
|
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.AreaSize))
|
|
||||||
{
|
|
||||||
if (Int64.TryParse(mappings[Field.AreaSize], out long areaSize))
|
|
||||||
AreaSize = areaSize;
|
AreaSize = areaSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.AreaWidth))
|
if (mappings.Keys.Contains(Field.DatItem_AreaWidth))
|
||||||
AreaWidth = mappings[Field.AreaWidth];
|
AreaWidth = mappings[Field.DatItem_AreaWidth];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.AreaEndianness))
|
if (mappings.Keys.Contains(Field.DatItem_AreaEndianness))
|
||||||
AreaEndianness = mappings[Field.AreaEndianness];
|
AreaEndianness = mappings[Field.DatItem_AreaEndianness];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Value))
|
if (mappings.Keys.Contains(Field.DatItem_Value))
|
||||||
Value = mappings[Field.Value];
|
Value = mappings[Field.DatItem_Value];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.LoadFlag))
|
if (mappings.Keys.Contains(Field.DatItem_LoadFlag))
|
||||||
LoadFlag = mappings[Field.LoadFlag];
|
LoadFlag = mappings[Field.DatItem_LoadFlag];
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -425,7 +400,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="itemType">Type of the DatItem to be created</param>
|
/// <param name="itemType">Type of the DatItem to be created</param>
|
||||||
/// <returns>DatItem of the specific internal type that corresponds to the inputs</returns>
|
/// <returns>DatItem of the specific internal type that corresponds to the inputs</returns>
|
||||||
public static DatItem Create(ItemType itemType)
|
public static DatItem Create(ItemType? itemType)
|
||||||
{
|
{
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
switch (itemType)
|
switch (itemType)
|
||||||
@@ -773,31 +748,31 @@ namespace SabreTools.Library.DatItems
|
|||||||
|
|
||||||
#region SoftwareList
|
#region SoftwareList
|
||||||
|
|
||||||
if (fields.Contains(Field.PartName) && Part != null)
|
if (fields.Contains(Field.DatItem_Part_Name) && Part != null)
|
||||||
Part.Name = null;
|
Part.Name = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.PartInterface) && Part != null)
|
if (fields.Contains(Field.DatItem_Part_Interface) && Part != null)
|
||||||
Part.Interface = null;
|
Part.Interface = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Features))
|
if (fields.Contains(Field.DatItem_Features))
|
||||||
Features = null;
|
Features = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.AreaName))
|
if (fields.Contains(Field.DatItem_AreaName))
|
||||||
AreaName = null;
|
AreaName = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.AreaSize))
|
if (fields.Contains(Field.DatItem_AreaSize))
|
||||||
AreaSize = null;
|
AreaSize = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.AreaWidth))
|
if (fields.Contains(Field.DatItem_AreaWidth))
|
||||||
AreaWidth = null;
|
AreaWidth = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.AreaEndianness))
|
if (fields.Contains(Field.DatItem_AreaEndianness))
|
||||||
AreaEndianness = null;
|
AreaEndianness = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Value))
|
if (fields.Contains(Field.DatItem_Value))
|
||||||
Value = null;
|
Value = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.LoadFlag))
|
if (fields.Contains(Field.DatItem_LoadFlag))
|
||||||
LoadFlag = null;
|
LoadFlag = null;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -823,7 +798,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
// Now determine what the key should be based on the bucketedBy value
|
// Now determine what the key should be based on the bucketedBy value
|
||||||
switch (bucketedBy)
|
switch (bucketedBy)
|
||||||
{
|
{
|
||||||
case Field.CRC:
|
case Field.DatItem_CRC:
|
||||||
key = Constants.CRCZero;
|
key = Constants.CRCZero;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -843,29 +818,29 @@ namespace SabreTools.Library.DatItems
|
|||||||
key = WebUtility.HtmlEncode(key);
|
key = WebUtility.HtmlEncode(key);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.MD5:
|
case Field.DatItem_MD5:
|
||||||
key = Constants.MD5Zero;
|
key = Constants.MD5Zero;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
case Field.RIPEMD160:
|
case Field.DatItem_RIPEMD160:
|
||||||
key = Constants.RIPEMD160Zero;
|
key = Constants.RIPEMD160Zero;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case Field.SHA1:
|
case Field.DatItem_SHA1:
|
||||||
key = Constants.SHA1Zero;
|
key = Constants.SHA1Zero;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA256:
|
case Field.DatItem_SHA256:
|
||||||
key = Constants.SHA256Zero;
|
key = Constants.SHA256Zero;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA384:
|
case Field.DatItem_SHA384:
|
||||||
key = Constants.SHA384Zero;
|
key = Constants.SHA384Zero;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA512:
|
case Field.DatItem_SHA512:
|
||||||
key = Constants.SHA512Zero;
|
key = Constants.SHA512Zero;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -922,7 +897,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
|
|
||||||
#region SoftwareList
|
#region SoftwareList
|
||||||
|
|
||||||
if (fields.Contains(Field.PartName))
|
if (fields.Contains(Field.DatItem_Part_Name))
|
||||||
{
|
{
|
||||||
if (Part == null)
|
if (Part == null)
|
||||||
Part = new SoftwareListPart();
|
Part = new SoftwareListPart();
|
||||||
@@ -930,7 +905,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
Part.Name = item.Part?.Name;
|
Part.Name = item.Part?.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.PartInterface))
|
if (fields.Contains(Field.DatItem_Part_Interface))
|
||||||
{
|
{
|
||||||
if (Part == null)
|
if (Part == null)
|
||||||
Part = new SoftwareListPart();
|
Part = new SoftwareListPart();
|
||||||
@@ -938,25 +913,25 @@ namespace SabreTools.Library.DatItems
|
|||||||
Part.Interface = item.Part?.Interface;
|
Part.Interface = item.Part?.Interface;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.Features))
|
if (fields.Contains(Field.DatItem_Features))
|
||||||
Features = item.Features;
|
Features = item.Features;
|
||||||
|
|
||||||
if (fields.Contains(Field.AreaName))
|
if (fields.Contains(Field.DatItem_AreaName))
|
||||||
AreaName = item.AreaName;
|
AreaName = item.AreaName;
|
||||||
|
|
||||||
if (fields.Contains(Field.AreaSize))
|
if (fields.Contains(Field.DatItem_AreaSize))
|
||||||
AreaSize = item.AreaSize;
|
AreaSize = item.AreaSize;
|
||||||
|
|
||||||
if (fields.Contains(Field.AreaWidth))
|
if (fields.Contains(Field.DatItem_AreaWidth))
|
||||||
AreaWidth = item.AreaWidth;
|
AreaWidth = item.AreaWidth;
|
||||||
|
|
||||||
if (fields.Contains(Field.AreaEndianness))
|
if (fields.Contains(Field.DatItem_AreaEndianness))
|
||||||
AreaEndianness = item.AreaEndianness;
|
AreaEndianness = item.AreaEndianness;
|
||||||
|
|
||||||
if (fields.Contains(Field.Value))
|
if (fields.Contains(Field.DatItem_Value))
|
||||||
Value = item.Value;
|
Value = item.Value;
|
||||||
|
|
||||||
if (fields.Contains(Field.LoadFlag))
|
if (fields.Contains(Field.DatItem_LoadFlag))
|
||||||
LoadFlag = item.LoadFlag;
|
LoadFlag = item.LoadFlag;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -143,43 +143,43 @@ namespace SabreTools.Library.DatItems
|
|||||||
base.SetFields(mappings);
|
base.SetFields(mappings);
|
||||||
|
|
||||||
// Handle Disk-specific fields
|
// Handle Disk-specific fields
|
||||||
if (mappings.Keys.Contains(Field.MD5))
|
if (mappings.Keys.Contains(Field.DatItem_MD5))
|
||||||
MD5 = mappings[Field.MD5];
|
MD5 = mappings[Field.DatItem_MD5];
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
if (mappings.Keys.Contains(Field.RIPEMD160))
|
if (mappings.Keys.Contains(Field.DatItem_RIPEMD160))
|
||||||
RIPEMD160 = mappings[Field.RIPEMD160];
|
RIPEMD160 = mappings[Field.DatItem_RIPEMD160];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.SHA1))
|
if (mappings.Keys.Contains(Field.DatItem_SHA1))
|
||||||
SHA1 = mappings[Field.SHA1];
|
SHA1 = mappings[Field.DatItem_SHA1];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.SHA256))
|
if (mappings.Keys.Contains(Field.DatItem_SHA256))
|
||||||
SHA256 = mappings[Field.SHA256];
|
SHA256 = mappings[Field.DatItem_SHA256];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.SHA384))
|
if (mappings.Keys.Contains(Field.DatItem_SHA384))
|
||||||
SHA384 = mappings[Field.SHA384];
|
SHA384 = mappings[Field.DatItem_SHA384];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.SHA512))
|
if (mappings.Keys.Contains(Field.DatItem_SHA512))
|
||||||
SHA512 = mappings[Field.SHA512];
|
SHA512 = mappings[Field.DatItem_SHA512];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Merge))
|
if (mappings.Keys.Contains(Field.DatItem_Merge))
|
||||||
MergeTag = mappings[Field.Merge];
|
MergeTag = mappings[Field.DatItem_Merge];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Region))
|
if (mappings.Keys.Contains(Field.DatItem_Region))
|
||||||
Region = mappings[Field.Region];
|
Region = mappings[Field.DatItem_Region];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Index))
|
if (mappings.Keys.Contains(Field.DatItem_Index))
|
||||||
Index = mappings[Field.Index];
|
Index = mappings[Field.DatItem_Index];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Writable))
|
if (mappings.Keys.Contains(Field.DatItem_Writable))
|
||||||
Writable = mappings[Field.Writable].AsYesNo();
|
Writable = mappings[Field.DatItem_Writable].AsYesNo();
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Status))
|
if (mappings.Keys.Contains(Field.DatItem_Status))
|
||||||
ItemStatus = mappings[Field.Status].AsItemStatus();
|
ItemStatus = mappings[Field.DatItem_Status].AsItemStatus();
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Optional))
|
if (mappings.Keys.Contains(Field.DatItem_Optional))
|
||||||
Optional = mappings[Field.Optional].AsYesNo();
|
Optional = mappings[Field.DatItem_Optional].AsYesNo();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -558,42 +558,42 @@ namespace SabreTools.Library.DatItems
|
|||||||
base.RemoveFields(fields);
|
base.RemoveFields(fields);
|
||||||
|
|
||||||
// Remove the fields
|
// Remove the fields
|
||||||
if (fields.Contains(Field.MD5))
|
if (fields.Contains(Field.DatItem_MD5))
|
||||||
MD5 = null;
|
MD5 = null;
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
if (fields.Contains(Field.RIPEMD160))
|
if (fields.Contains(Field.DatItem_RIPEMD160))
|
||||||
RIPEMD160 = null;
|
RIPEMD160 = null;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA1))
|
if (fields.Contains(Field.DatItem_SHA1))
|
||||||
SHA1 = null;
|
SHA1 = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA256))
|
if (fields.Contains(Field.DatItem_SHA256))
|
||||||
SHA256 = null;
|
SHA256 = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA384))
|
if (fields.Contains(Field.DatItem_SHA384))
|
||||||
SHA384 = null;
|
SHA384 = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA512))
|
if (fields.Contains(Field.DatItem_SHA512))
|
||||||
SHA512 = null;
|
SHA512 = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Merge))
|
if (fields.Contains(Field.DatItem_Merge))
|
||||||
MergeTag = null;
|
MergeTag = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Region))
|
if (fields.Contains(Field.DatItem_Region))
|
||||||
Region = null;
|
Region = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Index))
|
if (fields.Contains(Field.DatItem_Index))
|
||||||
Index = null;
|
Index = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Writable))
|
if (fields.Contains(Field.DatItem_Writable))
|
||||||
Writable = null;
|
Writable = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Status))
|
if (fields.Contains(Field.DatItem_Status))
|
||||||
ItemStatus = ItemStatus.NULL;
|
ItemStatus = ItemStatus.NULL;
|
||||||
|
|
||||||
if (fields.Contains(Field.Optional))
|
if (fields.Contains(Field.DatItem_Optional))
|
||||||
Optional = null;
|
Optional = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -616,29 +616,29 @@ namespace SabreTools.Library.DatItems
|
|||||||
// Now determine what the key should be based on the bucketedBy value
|
// Now determine what the key should be based on the bucketedBy value
|
||||||
switch (bucketedBy)
|
switch (bucketedBy)
|
||||||
{
|
{
|
||||||
case Field.MD5:
|
case Field.DatItem_MD5:
|
||||||
key = MD5;
|
key = MD5;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
case Field.RIPEMD160:
|
case Field.DatItem_RIPEMD160:
|
||||||
key = RIPEMD160;
|
key = RIPEMD160;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case Field.SHA1:
|
case Field.DatItem_SHA1:
|
||||||
key = SHA1;
|
key = SHA1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA256:
|
case Field.DatItem_SHA256:
|
||||||
key = SHA256;
|
key = SHA256;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA384:
|
case Field.DatItem_SHA384:
|
||||||
key = SHA384;
|
key = SHA384;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA512:
|
case Field.DatItem_SHA512:
|
||||||
key = SHA512;
|
key = SHA512;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -672,60 +672,60 @@ namespace SabreTools.Library.DatItems
|
|||||||
Disk newItem = item as Disk;
|
Disk newItem = item as Disk;
|
||||||
|
|
||||||
// Replace the fields
|
// Replace the fields
|
||||||
if (fields.Contains(Field.MD5))
|
if (fields.Contains(Field.DatItem_MD5))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5))
|
if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5))
|
||||||
MD5 = newItem.MD5;
|
MD5 = newItem.MD5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
if (fields.Contains(Field.RIPEMD160))
|
if (fields.Contains(Field.DatItem_RIPEMD160))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160))
|
if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160))
|
||||||
RIPEMD160 = newItem.RIPEMD160;
|
RIPEMD160 = newItem.RIPEMD160;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA1))
|
if (fields.Contains(Field.DatItem_SHA1))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1))
|
if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1))
|
||||||
SHA1 = newItem.SHA1;
|
SHA1 = newItem.SHA1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA256))
|
if (fields.Contains(Field.DatItem_SHA256))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256))
|
if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256))
|
||||||
SHA256 = newItem.SHA256;
|
SHA256 = newItem.SHA256;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA384))
|
if (fields.Contains(Field.DatItem_SHA384))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384))
|
if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384))
|
||||||
SHA384 = newItem.SHA384;
|
SHA384 = newItem.SHA384;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA512))
|
if (fields.Contains(Field.DatItem_SHA512))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512))
|
if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512))
|
||||||
SHA512 = newItem.SHA512;
|
SHA512 = newItem.SHA512;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.Merge))
|
if (fields.Contains(Field.DatItem_Merge))
|
||||||
MergeTag = newItem.MergeTag;
|
MergeTag = newItem.MergeTag;
|
||||||
|
|
||||||
if (fields.Contains(Field.Region))
|
if (fields.Contains(Field.DatItem_Region))
|
||||||
Region = newItem.Region;
|
Region = newItem.Region;
|
||||||
|
|
||||||
if (fields.Contains(Field.Index))
|
if (fields.Contains(Field.DatItem_Index))
|
||||||
Index = newItem.Index;
|
Index = newItem.Index;
|
||||||
|
|
||||||
if (fields.Contains(Field.Writable))
|
if (fields.Contains(Field.DatItem_Writable))
|
||||||
Writable = newItem.Writable;
|
Writable = newItem.Writable;
|
||||||
|
|
||||||
if (fields.Contains(Field.Status))
|
if (fields.Contains(Field.DatItem_Status))
|
||||||
ItemStatus = newItem.ItemStatus;
|
ItemStatus = newItem.ItemStatus;
|
||||||
|
|
||||||
if (fields.Contains(Field.Optional))
|
if (fields.Contains(Field.DatItem_Optional))
|
||||||
Optional = newItem.Optional;
|
Optional = newItem.Optional;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
Machine_Players,
|
Machine_Players,
|
||||||
Machine_Rotation,
|
Machine_Rotation,
|
||||||
Machine_Control,
|
Machine_Control,
|
||||||
Machine_SupportStatus,
|
Machine_Status,
|
||||||
Machine_DisplayCount,
|
Machine_DisplayCount,
|
||||||
Machine_DisplayType,
|
Machine_DisplayType,
|
||||||
Machine_Buttons,
|
Machine_Buttons,
|
||||||
@@ -371,51 +371,61 @@ namespace SabreTools.Library.DatItems
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
// TODO: Left off here on renaming
|
|
||||||
#region SoftwareList
|
#region SoftwareList
|
||||||
|
|
||||||
PartName,
|
// Part
|
||||||
PartInterface,
|
DatItem_Part, // TODO: Fully implement Part
|
||||||
Features,
|
DatItem_Part_Name,
|
||||||
AreaName,
|
DatItem_Part_Interface,
|
||||||
AreaSize,
|
|
||||||
AreaWidth,
|
// Feature
|
||||||
AreaEndianness,
|
DatItem_Features, // TODO: Fully implement Feature
|
||||||
Value,
|
DatItem_Feature_Name,
|
||||||
LoadFlag,
|
DatItem_Feature_Value,
|
||||||
|
|
||||||
|
DatItem_AreaName,
|
||||||
|
DatItem_AreaSize,
|
||||||
|
DatItem_AreaWidth,
|
||||||
|
DatItem_AreaEndianness,
|
||||||
|
DatItem_Value,
|
||||||
|
DatItem_LoadFlag,
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Item-Specific
|
||||||
|
|
||||||
// BiosSet
|
// BiosSet
|
||||||
Default,
|
DatItem_Default,
|
||||||
BiosDescription,
|
DatItem_Description,
|
||||||
|
|
||||||
// Disk
|
// Disk
|
||||||
MD5,
|
DatItem_MD5,
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
RIPEMD160,
|
DatItem_RIPEMD160,
|
||||||
#endif
|
#endif
|
||||||
SHA1,
|
DatItem_SHA1,
|
||||||
SHA256,
|
DatItem_SHA256,
|
||||||
SHA384,
|
DatItem_SHA384,
|
||||||
SHA512,
|
DatItem_SHA512,
|
||||||
Merge,
|
DatItem_Merge,
|
||||||
Region,
|
DatItem_Region,
|
||||||
Index,
|
DatItem_Index,
|
||||||
Writable,
|
DatItem_Writable,
|
||||||
Optional,
|
DatItem_Status,
|
||||||
Status,
|
DatItem_Optional,
|
||||||
|
|
||||||
// Release
|
// Release
|
||||||
Language,
|
DatItem_Language,
|
||||||
Date,
|
DatItem_Date,
|
||||||
|
|
||||||
// Rom
|
// Rom
|
||||||
Bios,
|
DatItem_Bios,
|
||||||
Size,
|
DatItem_Size,
|
||||||
CRC,
|
DatItem_CRC,
|
||||||
Offset,
|
DatItem_Offset,
|
||||||
Inverted,
|
DatItem_Inverted,
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#endregion // DatItem
|
#endregion // DatItem
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -432,8 +432,8 @@ namespace SabreTools.Library.DatItems
|
|||||||
if (mappings.Keys.Contains(Field.Machine_Control))
|
if (mappings.Keys.Contains(Field.Machine_Control))
|
||||||
Control = mappings[Field.Machine_Control];
|
Control = mappings[Field.Machine_Control];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Machine_SupportStatus))
|
if (mappings.Keys.Contains(Field.Machine_Status))
|
||||||
Status = mappings[Field.Machine_SupportStatus];
|
Status = mappings[Field.Machine_Status];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Machine_DisplayCount))
|
if (mappings.Keys.Contains(Field.Machine_DisplayCount))
|
||||||
DisplayCount = mappings[Field.Machine_DisplayCount];
|
DisplayCount = mappings[Field.Machine_DisplayCount];
|
||||||
@@ -454,34 +454,22 @@ namespace SabreTools.Library.DatItems
|
|||||||
if (mappings.Keys.Contains(Field.Machine_Runnable))
|
if (mappings.Keys.Contains(Field.Machine_Runnable))
|
||||||
Runnable = mappings[Field.Machine_Runnable].AsRunnable();
|
Runnable = mappings[Field.Machine_Runnable].AsRunnable();
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Machine_DeviceReference_Name))
|
// TODO: Add Machine_DeviceReference*
|
||||||
{
|
// TODO: Add Machine_Chip*
|
||||||
if (DeviceReferences == null)
|
// TODO: Add Machine_Display*
|
||||||
DeviceReferences = new List<ListXmlDeviceReference>();
|
// TODO: Add Machine_Sound*
|
||||||
|
// TODO: Add Machine_Condition*
|
||||||
var devices = mappings[Field.Machine_DeviceReference_Name].Split(';').Select(d => new ListXmlDeviceReference() { Name = d, });
|
// TODO: Add Machine_Input*
|
||||||
DeviceReferences.AddRange(devices);
|
// TODO: Add Machine_DipSwitch*
|
||||||
}
|
// TODO: Add Machine_Configuration*
|
||||||
|
// TODO: Add Machine_Port*
|
||||||
// TODO: Add Field.Slot
|
// TODO: Add Machine_Adjuster*
|
||||||
|
// TODO: Add Machine_Driver*
|
||||||
if (mappings.Keys.Contains(Field.Machine_Infos))
|
// TODO: Add Machine_Feature*
|
||||||
{
|
// TODO: Add Machine_Device*
|
||||||
if (Infos == null)
|
// TODO: Add Machine_Slot*
|
||||||
Infos = new List<SoftwareListInfo>();
|
// TODO: Add Machine_SoftwareList*
|
||||||
|
// TODO: Add Machine_RamOption*
|
||||||
string[] pairs = mappings[Field.Machine_Infos].Split(';');
|
|
||||||
foreach (string pair in pairs)
|
|
||||||
{
|
|
||||||
string[] split = pair.Split('=');
|
|
||||||
|
|
||||||
var infoObj = new SoftwareListInfo();
|
|
||||||
infoObj.Name = split[0];
|
|
||||||
infoObj.Value = split[1];
|
|
||||||
|
|
||||||
Infos.Add(infoObj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -544,31 +532,8 @@ namespace SabreTools.Library.DatItems
|
|||||||
if (mappings.Keys.Contains(Field.Machine_Supported))
|
if (mappings.Keys.Contains(Field.Machine_Supported))
|
||||||
Supported = mappings[Field.Machine_Supported].AsSupported();
|
Supported = mappings[Field.Machine_Supported].AsSupported();
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Machine_SharedFeatures))
|
// TODO: Add Machine_Info*
|
||||||
{
|
// TODO: Add Machine_SharedFeature*
|
||||||
if (SharedFeatures == null)
|
|
||||||
SharedFeatures = new List<SoftwareListSharedFeature>();
|
|
||||||
|
|
||||||
string[] pairs = mappings[Field.Machine_SharedFeatures].Split(';');
|
|
||||||
foreach (string pair in pairs)
|
|
||||||
{
|
|
||||||
string[] split = pair.Split('=');
|
|
||||||
|
|
||||||
var sharedFeature = new SoftwareListSharedFeature();
|
|
||||||
sharedFeature.Name = split[0];
|
|
||||||
sharedFeature.Value = split[1];
|
|
||||||
|
|
||||||
SharedFeatures.Add(sharedFeature);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Machine_DipSwitches))
|
|
||||||
{
|
|
||||||
if (DipSwitches == null)
|
|
||||||
DipSwitches = new List<ListXmlDipSwitch>();
|
|
||||||
|
|
||||||
// TODO: There's no way this will work... just create the new list for now
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -1018,7 +983,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
if (fields.Contains(Field.Machine_Control))
|
if (fields.Contains(Field.Machine_Control))
|
||||||
Control = null;
|
Control = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Machine_SupportStatus))
|
if (fields.Contains(Field.Machine_Status))
|
||||||
Status = null;
|
Status = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Machine_DisplayCount))
|
if (fields.Contains(Field.Machine_DisplayCount))
|
||||||
@@ -1182,7 +1147,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
if (fields.Contains(Field.Machine_Control))
|
if (fields.Contains(Field.Machine_Control))
|
||||||
Control = machine.Control;
|
Control = machine.Control;
|
||||||
|
|
||||||
if (fields.Contains(Field.Machine_SupportStatus))
|
if (fields.Contains(Field.Machine_Status))
|
||||||
Status = machine.Status;
|
Status = machine.Status;
|
||||||
|
|
||||||
if (fields.Contains(Field.Machine_DisplayCount))
|
if (fields.Contains(Field.Machine_DisplayCount))
|
||||||
|
|||||||
@@ -53,17 +53,17 @@ namespace SabreTools.Library.DatItems
|
|||||||
base.SetFields(mappings);
|
base.SetFields(mappings);
|
||||||
|
|
||||||
// Handle Release-specific fields
|
// Handle Release-specific fields
|
||||||
if (mappings.Keys.Contains(Field.Region))
|
if (mappings.Keys.Contains(Field.DatItem_Region))
|
||||||
Region = mappings[Field.Region];
|
Region = mappings[Field.DatItem_Region];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Language))
|
if (mappings.Keys.Contains(Field.DatItem_Language))
|
||||||
Language = mappings[Field.Language];
|
Language = mappings[Field.DatItem_Language];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Date))
|
if (mappings.Keys.Contains(Field.DatItem_Date))
|
||||||
Date = mappings[Field.Date];
|
Date = mappings[Field.DatItem_Date];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Default))
|
if (mappings.Keys.Contains(Field.DatItem_Default))
|
||||||
Default = mappings[Field.Default].AsYesNo();
|
Default = mappings[Field.DatItem_Default].AsYesNo();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -195,16 +195,16 @@ namespace SabreTools.Library.DatItems
|
|||||||
base.RemoveFields(fields);
|
base.RemoveFields(fields);
|
||||||
|
|
||||||
// Remove the fields
|
// Remove the fields
|
||||||
if (fields.Contains(Field.Region))
|
if (fields.Contains(Field.DatItem_Region))
|
||||||
Region = null;
|
Region = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Language))
|
if (fields.Contains(Field.DatItem_Language))
|
||||||
Language = null;
|
Language = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Date))
|
if (fields.Contains(Field.DatItem_Date))
|
||||||
Date = null;
|
Date = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Default))
|
if (fields.Contains(Field.DatItem_Default))
|
||||||
Default = null;
|
Default = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,16 +230,16 @@ namespace SabreTools.Library.DatItems
|
|||||||
Release newItem = item as Release;
|
Release newItem = item as Release;
|
||||||
|
|
||||||
// Replace the fields
|
// Replace the fields
|
||||||
if (fields.Contains(Field.Region))
|
if (fields.Contains(Field.DatItem_Region))
|
||||||
Region = newItem.Region;
|
Region = newItem.Region;
|
||||||
|
|
||||||
if (fields.Contains(Field.Language))
|
if (fields.Contains(Field.DatItem_Language))
|
||||||
Language = newItem.Language;
|
Language = newItem.Language;
|
||||||
|
|
||||||
if (fields.Contains(Field.Date))
|
if (fields.Contains(Field.DatItem_Date))
|
||||||
Date = newItem.Date;
|
Date = newItem.Date;
|
||||||
|
|
||||||
if (fields.Contains(Field.Default))
|
if (fields.Contains(Field.DatItem_Default))
|
||||||
Default = newItem.Default;
|
Default = newItem.Default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -174,58 +174,58 @@ namespace SabreTools.Library.DatItems
|
|||||||
base.SetFields(mappings);
|
base.SetFields(mappings);
|
||||||
|
|
||||||
// Handle Rom-specific fields
|
// Handle Rom-specific fields
|
||||||
if (mappings.Keys.Contains(Field.Bios))
|
if (mappings.Keys.Contains(Field.DatItem_Bios))
|
||||||
Bios = mappings[Field.Bios];
|
Bios = mappings[Field.DatItem_Bios];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Size))
|
if (mappings.Keys.Contains(Field.DatItem_Size))
|
||||||
{
|
{
|
||||||
if (Int64.TryParse(mappings[Field.Size], out long size))
|
if (Int64.TryParse(mappings[Field.DatItem_Size], out long size))
|
||||||
Size = size;
|
Size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.CRC))
|
if (mappings.Keys.Contains(Field.DatItem_CRC))
|
||||||
CRC = mappings[Field.CRC];
|
CRC = mappings[Field.DatItem_CRC];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.MD5))
|
if (mappings.Keys.Contains(Field.DatItem_MD5))
|
||||||
MD5 = mappings[Field.MD5];
|
MD5 = mappings[Field.DatItem_MD5];
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
if (mappings.Keys.Contains(Field.RIPEMD160))
|
if (mappings.Keys.Contains(Field.DatItem_RIPEMD160))
|
||||||
RIPEMD160 = mappings[Field.RIPEMD160];
|
RIPEMD160 = mappings[Field.DatItem_RIPEMD160];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.SHA1))
|
if (mappings.Keys.Contains(Field.DatItem_SHA1))
|
||||||
SHA1 = mappings[Field.SHA1];
|
SHA1 = mappings[Field.DatItem_SHA1];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.SHA256))
|
if (mappings.Keys.Contains(Field.DatItem_SHA256))
|
||||||
SHA256 = mappings[Field.SHA256];
|
SHA256 = mappings[Field.DatItem_SHA256];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.SHA384))
|
if (mappings.Keys.Contains(Field.DatItem_SHA384))
|
||||||
SHA384 = mappings[Field.SHA384];
|
SHA384 = mappings[Field.DatItem_SHA384];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.SHA512))
|
if (mappings.Keys.Contains(Field.DatItem_SHA512))
|
||||||
SHA512 = mappings[Field.SHA512];
|
SHA512 = mappings[Field.DatItem_SHA512];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Merge))
|
if (mappings.Keys.Contains(Field.DatItem_Merge))
|
||||||
MergeTag = mappings[Field.Merge];
|
MergeTag = mappings[Field.DatItem_Merge];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Region))
|
if (mappings.Keys.Contains(Field.DatItem_Region))
|
||||||
Region = mappings[Field.Region];
|
Region = mappings[Field.DatItem_Region];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Offset))
|
if (mappings.Keys.Contains(Field.DatItem_Offset))
|
||||||
Offset = mappings[Field.Offset];
|
Offset = mappings[Field.DatItem_Offset];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Date))
|
if (mappings.Keys.Contains(Field.DatItem_Date))
|
||||||
Date = mappings[Field.Date];
|
Date = mappings[Field.DatItem_Date];
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Status))
|
if (mappings.Keys.Contains(Field.DatItem_Status))
|
||||||
ItemStatus = mappings[Field.Status].AsItemStatus();
|
ItemStatus = mappings[Field.DatItem_Status].AsItemStatus();
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Optional))
|
if (mappings.Keys.Contains(Field.DatItem_Optional))
|
||||||
Optional = mappings[Field.Optional].AsYesNo();
|
Optional = mappings[Field.DatItem_Optional].AsYesNo();
|
||||||
|
|
||||||
if (mappings.Keys.Contains(Field.Inverted))
|
if (mappings.Keys.Contains(Field.DatItem_Inverted))
|
||||||
Inverted = mappings[Field.Optional].AsYesNo();
|
Inverted = mappings[Field.DatItem_Optional].AsYesNo();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -621,54 +621,54 @@ namespace SabreTools.Library.DatItems
|
|||||||
base.RemoveFields(fields);
|
base.RemoveFields(fields);
|
||||||
|
|
||||||
// Remove the fields
|
// Remove the fields
|
||||||
if (fields.Contains(Field.Bios))
|
if (fields.Contains(Field.DatItem_Bios))
|
||||||
Bios = null;
|
Bios = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Size))
|
if (fields.Contains(Field.DatItem_Size))
|
||||||
Size = 0;
|
Size = 0;
|
||||||
|
|
||||||
if (fields.Contains(Field.CRC))
|
if (fields.Contains(Field.DatItem_CRC))
|
||||||
CRC = null;
|
CRC = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.MD5))
|
if (fields.Contains(Field.DatItem_MD5))
|
||||||
MD5 = null;
|
MD5 = null;
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
if (fields.Contains(Field.RIPEMD160))
|
if (fields.Contains(Field.DatItem_RIPEMD160))
|
||||||
RIPEMD160 = null;
|
RIPEMD160 = null;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA1))
|
if (fields.Contains(Field.DatItem_SHA1))
|
||||||
SHA1 = null;
|
SHA1 = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA256))
|
if (fields.Contains(Field.DatItem_SHA256))
|
||||||
SHA256 = null;
|
SHA256 = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA384))
|
if (fields.Contains(Field.DatItem_SHA384))
|
||||||
SHA384 = null;
|
SHA384 = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA512))
|
if (fields.Contains(Field.DatItem_SHA512))
|
||||||
SHA512 = null;
|
SHA512 = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Merge))
|
if (fields.Contains(Field.DatItem_Merge))
|
||||||
MergeTag = null;
|
MergeTag = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Region))
|
if (fields.Contains(Field.DatItem_Region))
|
||||||
Region = null;
|
Region = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Offset))
|
if (fields.Contains(Field.DatItem_Offset))
|
||||||
Offset = null;
|
Offset = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Date))
|
if (fields.Contains(Field.DatItem_Date))
|
||||||
Date = null;
|
Date = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Status))
|
if (fields.Contains(Field.DatItem_Status))
|
||||||
ItemStatus = ItemStatus.NULL;
|
ItemStatus = ItemStatus.NULL;
|
||||||
|
|
||||||
if (fields.Contains(Field.Optional))
|
if (fields.Contains(Field.DatItem_Optional))
|
||||||
Optional = null;
|
Optional = null;
|
||||||
|
|
||||||
if (fields.Contains(Field.Inverted))
|
if (fields.Contains(Field.DatItem_Inverted))
|
||||||
Inverted = null;
|
Inverted = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -691,33 +691,33 @@ namespace SabreTools.Library.DatItems
|
|||||||
// Now determine what the key should be based on the bucketedBy value
|
// Now determine what the key should be based on the bucketedBy value
|
||||||
switch (bucketedBy)
|
switch (bucketedBy)
|
||||||
{
|
{
|
||||||
case Field.CRC:
|
case Field.DatItem_CRC:
|
||||||
key = CRC;
|
key = CRC;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.MD5:
|
case Field.DatItem_MD5:
|
||||||
key = MD5;
|
key = MD5;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
case Field.RIPEMD160:
|
case Field.DatItem_RIPEMD160:
|
||||||
key = RIPEMD160;
|
key = RIPEMD160;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case Field.SHA1:
|
case Field.DatItem_SHA1:
|
||||||
key = SHA1;
|
key = SHA1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA256:
|
case Field.DatItem_SHA256:
|
||||||
key = SHA256;
|
key = SHA256;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA384:
|
case Field.DatItem_SHA384:
|
||||||
key = SHA384;
|
key = SHA384;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA512:
|
case Field.DatItem_SHA512:
|
||||||
key = SHA512;
|
key = SHA512;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -751,75 +751,75 @@ namespace SabreTools.Library.DatItems
|
|||||||
Rom newItem = item as Rom;
|
Rom newItem = item as Rom;
|
||||||
|
|
||||||
// Replace the fields
|
// Replace the fields
|
||||||
if (fields.Contains(Field.Bios))
|
if (fields.Contains(Field.DatItem_Bios))
|
||||||
Bios = newItem.Bios;
|
Bios = newItem.Bios;
|
||||||
|
|
||||||
if (fields.Contains(Field.Size))
|
if (fields.Contains(Field.DatItem_Size))
|
||||||
Size = newItem.Size;
|
Size = newItem.Size;
|
||||||
|
|
||||||
if (fields.Contains(Field.CRC))
|
if (fields.Contains(Field.DatItem_CRC))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(CRC) && !string.IsNullOrEmpty(newItem.CRC))
|
if (string.IsNullOrEmpty(CRC) && !string.IsNullOrEmpty(newItem.CRC))
|
||||||
CRC = newItem.CRC;
|
CRC = newItem.CRC;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.MD5))
|
if (fields.Contains(Field.DatItem_MD5))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5))
|
if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5))
|
||||||
MD5 = newItem.MD5;
|
MD5 = newItem.MD5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
if (fields.Contains(Field.RIPEMD160))
|
if (fields.Contains(Field.DatItem_RIPEMD160))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160))
|
if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160))
|
||||||
RIPEMD160 = newItem.RIPEMD160;
|
RIPEMD160 = newItem.RIPEMD160;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA1))
|
if (fields.Contains(Field.DatItem_SHA1))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1))
|
if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1))
|
||||||
SHA1 = newItem.SHA1;
|
SHA1 = newItem.SHA1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA256))
|
if (fields.Contains(Field.DatItem_SHA256))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256))
|
if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256))
|
||||||
SHA256 = newItem.SHA256;
|
SHA256 = newItem.SHA256;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA384))
|
if (fields.Contains(Field.DatItem_SHA384))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384))
|
if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384))
|
||||||
SHA384 = newItem.SHA384;
|
SHA384 = newItem.SHA384;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.SHA512))
|
if (fields.Contains(Field.DatItem_SHA512))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512))
|
if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512))
|
||||||
SHA512 = newItem.SHA512;
|
SHA512 = newItem.SHA512;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fields.Contains(Field.Merge))
|
if (fields.Contains(Field.DatItem_Merge))
|
||||||
MergeTag = newItem.MergeTag;
|
MergeTag = newItem.MergeTag;
|
||||||
|
|
||||||
if (fields.Contains(Field.Region))
|
if (fields.Contains(Field.DatItem_Region))
|
||||||
Region = newItem.Region;
|
Region = newItem.Region;
|
||||||
|
|
||||||
if (fields.Contains(Field.Offset))
|
if (fields.Contains(Field.DatItem_Offset))
|
||||||
Offset = newItem.Offset;
|
Offset = newItem.Offset;
|
||||||
|
|
||||||
if (fields.Contains(Field.Date))
|
if (fields.Contains(Field.DatItem_Date))
|
||||||
Date = newItem.Date;
|
Date = newItem.Date;
|
||||||
|
|
||||||
if (fields.Contains(Field.Status))
|
if (fields.Contains(Field.DatItem_Status))
|
||||||
ItemStatus = newItem.ItemStatus;
|
ItemStatus = newItem.ItemStatus;
|
||||||
|
|
||||||
if (fields.Contains(Field.Optional))
|
if (fields.Contains(Field.DatItem_Optional))
|
||||||
Optional = newItem.Optional;
|
Optional = newItem.Optional;
|
||||||
|
|
||||||
if (fields.Contains(Field.Inverted))
|
if (fields.Contains(Field.DatItem_Inverted))
|
||||||
Inverted = newItem.Inverted;
|
Inverted = newItem.Inverted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -664,7 +664,7 @@ namespace SabreTools.Library.Filtering
|
|||||||
Control.PositiveSet.Add(value);
|
Control.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Machine_SupportStatus:
|
case Field.Machine_Status:
|
||||||
if (negate)
|
if (negate)
|
||||||
SupportStatus.NegativeSet.Add(value);
|
SupportStatus.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
@@ -931,28 +931,28 @@ namespace SabreTools.Library.Filtering
|
|||||||
|
|
||||||
#region SoftwareList
|
#region SoftwareList
|
||||||
|
|
||||||
case Field.PartName:
|
case Field.DatItem_Part_Name:
|
||||||
if (negate)
|
if (negate)
|
||||||
PartName.NegativeSet.Add(value);
|
PartName.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
PartName.PositiveSet.Add(value);
|
PartName.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.PartInterface:
|
case Field.DatItem_Part_Interface:
|
||||||
if (negate)
|
if (negate)
|
||||||
PartInterface.NegativeSet.Add(value);
|
PartInterface.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
PartInterface.PositiveSet.Add(value);
|
PartInterface.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.AreaName:
|
case Field.DatItem_AreaName:
|
||||||
if (negate)
|
if (negate)
|
||||||
AreaName.NegativeSet.Add(value);
|
AreaName.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
AreaName.PositiveSet.Add(value);
|
AreaName.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.AreaSize:
|
case Field.DatItem_AreaSize:
|
||||||
bool? asOperation = null;
|
bool? asOperation = null;
|
||||||
if (value.StartsWith(">"))
|
if (value.StartsWith(">"))
|
||||||
asOperation = true;
|
asOperation = true;
|
||||||
@@ -1004,28 +1004,28 @@ namespace SabreTools.Library.Filtering
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.AreaWidth:
|
case Field.DatItem_AreaWidth:
|
||||||
if (negate)
|
if (negate)
|
||||||
AreaWidth.NegativeSet.Add(value);
|
AreaWidth.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
AreaWidth.PositiveSet.Add(value);
|
AreaWidth.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.AreaEndianness:
|
case Field.DatItem_AreaEndianness:
|
||||||
if (negate)
|
if (negate)
|
||||||
AreaEndianness.NegativeSet.Add(value);
|
AreaEndianness.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
AreaEndianness.PositiveSet.Add(value);
|
AreaEndianness.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Value:
|
case Field.DatItem_Value:
|
||||||
if (negate)
|
if (negate)
|
||||||
Value.NegativeSet.Add(value);
|
Value.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
Value.PositiveSet.Add(value);
|
Value.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.LoadFlag:
|
case Field.DatItem_LoadFlag:
|
||||||
if (negate)
|
if (negate)
|
||||||
LoadFlag.NegativeSet.Add(value);
|
LoadFlag.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
@@ -1034,21 +1034,21 @@ namespace SabreTools.Library.Filtering
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
case Field.Default:
|
case Field.DatItem_Default:
|
||||||
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
|
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
|
||||||
Default.Neutral = false;
|
Default.Neutral = false;
|
||||||
else
|
else
|
||||||
Default.Neutral = true;
|
Default.Neutral = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.BiosDescription:
|
case Field.DatItem_Description:
|
||||||
if (negate)
|
if (negate)
|
||||||
Description.NegativeSet.Add(value);
|
Description.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
Description.PositiveSet.Add(value);
|
Description.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Size:
|
case Field.DatItem_Size:
|
||||||
bool? sOperation = null;
|
bool? sOperation = null;
|
||||||
if (value.StartsWith(">"))
|
if (value.StartsWith(">"))
|
||||||
sOperation = true;
|
sOperation = true;
|
||||||
@@ -1100,14 +1100,14 @@ namespace SabreTools.Library.Filtering
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.CRC:
|
case Field.DatItem_CRC:
|
||||||
if (negate)
|
if (negate)
|
||||||
CRC.NegativeSet.Add(value);
|
CRC.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
CRC.PositiveSet.Add(value);
|
CRC.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.MD5:
|
case Field.DatItem_MD5:
|
||||||
if (negate)
|
if (negate)
|
||||||
MD5.NegativeSet.Add(value);
|
MD5.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
@@ -1115,7 +1115,7 @@ namespace SabreTools.Library.Filtering
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
case Field.RIPEMD160:
|
case Field.DatItem_RIPEMD160:
|
||||||
if (negate)
|
if (negate)
|
||||||
RIPEMD160.NegativeSet.Add(value);
|
RIPEMD160.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
@@ -1123,105 +1123,105 @@ namespace SabreTools.Library.Filtering
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case Field.SHA1:
|
case Field.DatItem_SHA1:
|
||||||
if (negate)
|
if (negate)
|
||||||
SHA1.NegativeSet.Add(value);
|
SHA1.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
SHA1.PositiveSet.Add(value);
|
SHA1.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA256:
|
case Field.DatItem_SHA256:
|
||||||
if (negate)
|
if (negate)
|
||||||
SHA256.NegativeSet.Add(value);
|
SHA256.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
SHA256.PositiveSet.Add(value);
|
SHA256.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA384:
|
case Field.DatItem_SHA384:
|
||||||
if (negate)
|
if (negate)
|
||||||
SHA384.NegativeSet.Add(value);
|
SHA384.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
SHA384.PositiveSet.Add(value);
|
SHA384.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.SHA512:
|
case Field.DatItem_SHA512:
|
||||||
if (negate)
|
if (negate)
|
||||||
SHA512.NegativeSet.Add(value);
|
SHA512.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
SHA512.PositiveSet.Add(value);
|
SHA512.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Merge:
|
case Field.DatItem_Merge:
|
||||||
if (negate)
|
if (negate)
|
||||||
MergeTag.NegativeSet.Add(value);
|
MergeTag.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
MergeTag.PositiveSet.Add(value);
|
MergeTag.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Region:
|
case Field.DatItem_Region:
|
||||||
if (negate)
|
if (negate)
|
||||||
Region.NegativeSet.Add(value);
|
Region.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
Region.PositiveSet.Add(value);
|
Region.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Index:
|
case Field.DatItem_Index:
|
||||||
if (negate)
|
if (negate)
|
||||||
Index.NegativeSet.Add(value);
|
Index.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
Index.PositiveSet.Add(value);
|
Index.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Writable:
|
case Field.DatItem_Writable:
|
||||||
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
|
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
|
||||||
Writable.Neutral = false;
|
Writable.Neutral = false;
|
||||||
else
|
else
|
||||||
Writable.Neutral = true;
|
Writable.Neutral = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Optional:
|
case Field.DatItem_Optional:
|
||||||
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
|
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
|
||||||
Optional.Neutral = false;
|
Optional.Neutral = false;
|
||||||
else
|
else
|
||||||
Optional.Neutral = true;
|
Optional.Neutral = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Status:
|
case Field.DatItem_Status:
|
||||||
if (negate)
|
if (negate)
|
||||||
Status.Negative |= value.AsItemStatus();
|
Status.Negative |= value.AsItemStatus();
|
||||||
else
|
else
|
||||||
Status.Positive |= value.AsItemStatus();
|
Status.Positive |= value.AsItemStatus();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Language:
|
case Field.DatItem_Language:
|
||||||
if (negate)
|
if (negate)
|
||||||
Language.NegativeSet.Add(value);
|
Language.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
Language.PositiveSet.Add(value);
|
Language.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Date:
|
case Field.DatItem_Date:
|
||||||
if (negate)
|
if (negate)
|
||||||
Date.NegativeSet.Add(value);
|
Date.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
Date.PositiveSet.Add(value);
|
Date.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Bios:
|
case Field.DatItem_Bios:
|
||||||
if (negate)
|
if (negate)
|
||||||
Bios.NegativeSet.Add(value);
|
Bios.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
Bios.PositiveSet.Add(value);
|
Bios.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Offset:
|
case Field.DatItem_Offset:
|
||||||
if (negate)
|
if (negate)
|
||||||
Offset.NegativeSet.Add(value);
|
Offset.NegativeSet.Add(value);
|
||||||
else
|
else
|
||||||
Offset.PositiveSet.Add(value);
|
Offset.PositiveSet.Add(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Field.Inverted:
|
case Field.DatItem_Inverted:
|
||||||
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
|
if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase))
|
||||||
Inverted.Neutral = false;
|
Inverted.Neutral = false;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using SabreTools.Library.DatFiles;
|
using SabreTools.Library.DatFiles;
|
||||||
using SabreTools.Library.DatItems;
|
using SabreTools.Library.DatItems;
|
||||||
using SabreTools.Library.Reports;
|
using SabreTools.Library.Reports;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace SabreTools.Library.Tools
|
namespace SabreTools.Library.Tools
|
||||||
{
|
{
|
||||||
@@ -16,21 +17,21 @@ namespace SabreTools.Library.Tools
|
|||||||
switch (hash)
|
switch (hash)
|
||||||
{
|
{
|
||||||
case Hash.CRC:
|
case Hash.CRC:
|
||||||
return Field.CRC;
|
return Field.DatItem_CRC;
|
||||||
case Hash.MD5:
|
case Hash.MD5:
|
||||||
return Field.MD5;
|
return Field.DatItem_MD5;
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
case Hash.RIPEMD160:
|
case Hash.RIPEMD160:
|
||||||
return Field.RIPEMD160;
|
return Field.DatItem_RIPEMD160;
|
||||||
#endif
|
#endif
|
||||||
case Hash.SHA1:
|
case Hash.SHA1:
|
||||||
return Field.SHA1;
|
return Field.DatItem_SHA1;
|
||||||
case Hash.SHA256:
|
case Hash.SHA256:
|
||||||
return Field.SHA256;
|
return Field.DatItem_SHA256;
|
||||||
case Hash.SHA384:
|
case Hash.SHA384:
|
||||||
return Field.SHA384;
|
return Field.DatItem_SHA384;
|
||||||
case Hash.SHA512:
|
case Hash.SHA512:
|
||||||
return Field.SHA512;
|
return Field.DatItem_SHA512;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return Field.NULL;
|
return Field.NULL;
|
||||||
@@ -128,6 +129,355 @@ namespace SabreTools.Library.Tools
|
|||||||
/// TODO: Needs to be SEVERELY overhauled. Start using dot notation for fields... (where possible)
|
/// TODO: Needs to be SEVERELY overhauled. Start using dot notation for fields... (where possible)
|
||||||
public static Field AsField(this string input)
|
public static Field AsField(this string input)
|
||||||
{
|
{
|
||||||
|
// If the input is null, we return null
|
||||||
|
if (input == null)
|
||||||
|
return Field.NULL;
|
||||||
|
|
||||||
|
// Normalize the input
|
||||||
|
input = input.ToLowerInvariant();
|
||||||
|
|
||||||
|
// Create regex strings
|
||||||
|
string headerRegex = @"^(dat|header|datheader)[.-_\s]";
|
||||||
|
string machineRegex = @"^(game|machine)[.-_\s]";
|
||||||
|
string datItemRegex = @"^(item|datitem|archive|biosset|blank|disk|release|rom|sample)[.-_\s]";
|
||||||
|
|
||||||
|
// If we have a header field
|
||||||
|
if (Regex.IsMatch(input, headerRegex))
|
||||||
|
{
|
||||||
|
// Replace the match and re-normalize
|
||||||
|
string headerInput = Regex.Replace(input, headerRegex, string.Empty)
|
||||||
|
.Replace(' ', '_')
|
||||||
|
.Replace('-', '_')
|
||||||
|
.Replace('.', '_');
|
||||||
|
|
||||||
|
switch (headerInput)
|
||||||
|
{
|
||||||
|
#region Common
|
||||||
|
|
||||||
|
case "file":
|
||||||
|
case "filename":
|
||||||
|
case "file_name":
|
||||||
|
return Field.DatHeader_FileName;
|
||||||
|
|
||||||
|
case "dat":
|
||||||
|
case "datname":
|
||||||
|
case "dat_name":
|
||||||
|
case "internalname":
|
||||||
|
case "internal_name":
|
||||||
|
return Field.DatHeader_Name;
|
||||||
|
|
||||||
|
case "desc":
|
||||||
|
case "description":
|
||||||
|
return Field.DatHeader_Description;
|
||||||
|
|
||||||
|
case "root":
|
||||||
|
case "rootdir":
|
||||||
|
case "root_dir":
|
||||||
|
case "rootdirectory":
|
||||||
|
case "root_directory":
|
||||||
|
return Field.DatHeader_RootDir;
|
||||||
|
|
||||||
|
case "category":
|
||||||
|
return Field.DatHeader_Category;
|
||||||
|
|
||||||
|
case "version":
|
||||||
|
return Field.DatHeader_Version;
|
||||||
|
|
||||||
|
case "date":
|
||||||
|
case "timestamp":
|
||||||
|
case "time_stamp":
|
||||||
|
return Field.DatHeader_Date;
|
||||||
|
|
||||||
|
case "author":
|
||||||
|
return Field.DatHeader_Author;
|
||||||
|
|
||||||
|
case "email":
|
||||||
|
case "e_mail":
|
||||||
|
return Field.DatHeader_Email;
|
||||||
|
|
||||||
|
case "homepage":
|
||||||
|
case "home_page":
|
||||||
|
return Field.DatHeader_Homepage;
|
||||||
|
|
||||||
|
case "url":
|
||||||
|
return Field.DatHeader_Url;
|
||||||
|
|
||||||
|
case "comment":
|
||||||
|
return Field.DatHeader_Comment;
|
||||||
|
|
||||||
|
case "header":
|
||||||
|
case "headerskipper":
|
||||||
|
case "header_skipper":
|
||||||
|
case "skipper":
|
||||||
|
return Field.DatHeader_HeaderSkipper;
|
||||||
|
|
||||||
|
case "dattype":
|
||||||
|
case "type":
|
||||||
|
case "superdat":
|
||||||
|
return Field.DatHeader_Type;
|
||||||
|
|
||||||
|
case "forcemerging":
|
||||||
|
case "force_merging":
|
||||||
|
return Field.DatHeader_ForceMerging;
|
||||||
|
|
||||||
|
case "forcenodump":
|
||||||
|
case "force_nodump":
|
||||||
|
return Field.DatHeader_ForceNodump;
|
||||||
|
|
||||||
|
case "forcepacking":
|
||||||
|
case "force_packing":
|
||||||
|
return Field.DatHeader_ForcePacking;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ListXML
|
||||||
|
|
||||||
|
case "debug":
|
||||||
|
return Field.DatHeader_Debug;
|
||||||
|
|
||||||
|
case "mameconfig":
|
||||||
|
case "mame_config":
|
||||||
|
return Field.DatHeader_MameConfig;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Logiqx
|
||||||
|
|
||||||
|
case "build":
|
||||||
|
return Field.DatHeader_Build;
|
||||||
|
|
||||||
|
case "rommode":
|
||||||
|
case "rom_mode":
|
||||||
|
return Field.DatHeader_RomMode;
|
||||||
|
|
||||||
|
case "biosmode":
|
||||||
|
case "bios_mode":
|
||||||
|
return Field.DatHeader_BiosMode;
|
||||||
|
|
||||||
|
case "samplemode":
|
||||||
|
case "sample_mode":
|
||||||
|
return Field.DatHeader_SampleMode;
|
||||||
|
|
||||||
|
case "lockrommode":
|
||||||
|
case "lockrom_mode":
|
||||||
|
case "lock_rommode":
|
||||||
|
case "lock_rom_mode":
|
||||||
|
return Field.DatHeader_LockRomMode;
|
||||||
|
|
||||||
|
case "lockbiosmode":
|
||||||
|
case "lockbios_mode":
|
||||||
|
case "lock_biosmode":
|
||||||
|
case "lock_bios_mode":
|
||||||
|
return Field.DatHeader_LockBiosMode;
|
||||||
|
|
||||||
|
case "locksamplemode":
|
||||||
|
case "locksample_mode":
|
||||||
|
case "lock_samplemode":
|
||||||
|
case "lock_sample_mode":
|
||||||
|
return Field.DatHeader_LockSampleMode;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region OfflineList
|
||||||
|
|
||||||
|
case "system":
|
||||||
|
case "plugin": // Used with RomCenter
|
||||||
|
return Field.DatHeader_System;
|
||||||
|
|
||||||
|
case "screenshotwidth":
|
||||||
|
case "screenshotswidth":
|
||||||
|
case "screenshot_width":
|
||||||
|
case "screenshots_width":
|
||||||
|
return Field.DatHeader_ScreenshotsWidth;
|
||||||
|
|
||||||
|
case "screenshotheight":
|
||||||
|
case "screenshotsheight":
|
||||||
|
case "screenshot_height":
|
||||||
|
case "screenshots_height":
|
||||||
|
return Field.DatHeader_ScreenshotsHeight;
|
||||||
|
|
||||||
|
case "info":
|
||||||
|
case "infos":
|
||||||
|
return Field.DatHeader_Infos;
|
||||||
|
|
||||||
|
case "info_name":
|
||||||
|
case "infos_name":
|
||||||
|
return Field.DatHeader_Info_Name;
|
||||||
|
|
||||||
|
case "info_visible":
|
||||||
|
case "infos_visible":
|
||||||
|
return Field.DatHeader_Info_Visible;
|
||||||
|
|
||||||
|
case "info_isnamingoption":
|
||||||
|
case "info_is_naming_option":
|
||||||
|
case "infos_isnamingoption":
|
||||||
|
case "infos_is_naming_option":
|
||||||
|
return Field.DatHeader_Info_IsNamingOption;
|
||||||
|
|
||||||
|
case "info_default":
|
||||||
|
case "infos_default":
|
||||||
|
return Field.DatHeader_Info_Default;
|
||||||
|
|
||||||
|
case "canopen":
|
||||||
|
case "can_open":
|
||||||
|
return Field.DatHeader_CanOpen;
|
||||||
|
|
||||||
|
case "romtitle":
|
||||||
|
case "rom_title":
|
||||||
|
return Field.DatHeader_RomTitle;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region RomCenter
|
||||||
|
|
||||||
|
case "rcversion":
|
||||||
|
case "rc_version":
|
||||||
|
case "romcenterversion":
|
||||||
|
case "romcenter_version":
|
||||||
|
case "rom_center_version":
|
||||||
|
return Field.DatHeader_RomCenterVersion;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we have a machine field
|
||||||
|
else if (Regex.IsMatch(input, machineRegex))
|
||||||
|
{
|
||||||
|
// Replace the match and re-normalize
|
||||||
|
string machineInput = Regex.Replace(input, machineRegex, string.Empty)
|
||||||
|
.Replace(' ', '_')
|
||||||
|
.Replace('-', '_')
|
||||||
|
.Replace('.', '_');
|
||||||
|
|
||||||
|
switch (machineInput)
|
||||||
|
{
|
||||||
|
#region Common
|
||||||
|
|
||||||
|
case "name":
|
||||||
|
return Field.Machine_Name;
|
||||||
|
|
||||||
|
case "comment":
|
||||||
|
case "extra": // Used with AttractMode
|
||||||
|
return Field.Machine_Comment;
|
||||||
|
|
||||||
|
case "desc":
|
||||||
|
case "description":
|
||||||
|
return Field.Machine_Description;
|
||||||
|
|
||||||
|
case "year":
|
||||||
|
return Field.Machine_Year;
|
||||||
|
|
||||||
|
case "manufacturer":
|
||||||
|
return Field.Machine_Manufacturer;
|
||||||
|
|
||||||
|
case "publisher":
|
||||||
|
return Field.Machine_Publisher;
|
||||||
|
|
||||||
|
case "category":
|
||||||
|
return Field.Machine_Category;
|
||||||
|
|
||||||
|
case "romof":
|
||||||
|
case "rom_of":
|
||||||
|
return Field.Machine_RomOf;
|
||||||
|
|
||||||
|
case "cloneof":
|
||||||
|
case "clone_of":
|
||||||
|
return Field.Machine_CloneOf;
|
||||||
|
|
||||||
|
case "sampleof":
|
||||||
|
case "sample_of":
|
||||||
|
return Field.Machine_SampleOf;
|
||||||
|
|
||||||
|
case "type":
|
||||||
|
return Field.Machine_Type;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region AttractMode
|
||||||
|
|
||||||
|
case "players":
|
||||||
|
return Field.Machine_Players;
|
||||||
|
|
||||||
|
case "rotation":
|
||||||
|
return Field.Machine_Rotation;
|
||||||
|
|
||||||
|
case "control":
|
||||||
|
return Field.Machine_Control;
|
||||||
|
|
||||||
|
case "amstatus":
|
||||||
|
case "am_status":
|
||||||
|
case "gamestatus":
|
||||||
|
case "supportstatus":
|
||||||
|
case "support_status":
|
||||||
|
return Field.Machine_Status;
|
||||||
|
|
||||||
|
case "displaycount":
|
||||||
|
case "displays":
|
||||||
|
return Field.Machine_DisplayCount;
|
||||||
|
|
||||||
|
case "displaytype":
|
||||||
|
return Field.Machine_DisplayType;
|
||||||
|
|
||||||
|
case "buttons":
|
||||||
|
return Field.Machine_Buttons;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ListXML
|
||||||
|
|
||||||
|
case "sourcefile":
|
||||||
|
case "source_file":
|
||||||
|
return Field.Machine_SourceFile;
|
||||||
|
|
||||||
|
case "runnable":
|
||||||
|
return Field.Machine_Runnable;
|
||||||
|
|
||||||
|
case "devreferences":
|
||||||
|
case "devicereferences":
|
||||||
|
return Field.Machine_DeviceReferences;
|
||||||
|
|
||||||
|
case "devreference_name":
|
||||||
|
case "devicereference_name":
|
||||||
|
return Field.Machine_DeviceReference_Name;
|
||||||
|
|
||||||
|
case "chips":
|
||||||
|
return Field.Machine_Chips;
|
||||||
|
|
||||||
|
case "chip_name":
|
||||||
|
return Field.Machine_Chip_Name;
|
||||||
|
|
||||||
|
case "chip_tag":
|
||||||
|
return Field.Machine_Chip_Tag;
|
||||||
|
|
||||||
|
case "chip_type":
|
||||||
|
return Field.Machine_Chip_Type;
|
||||||
|
|
||||||
|
case "chip_clock":
|
||||||
|
return Field.Machine_Chip_Clock;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we have a datitem field
|
||||||
|
else if (Regex.IsMatch(input, datItemRegex))
|
||||||
|
{
|
||||||
|
// Replace the match and re-normalize
|
||||||
|
string itemInput = Regex.Replace(input, datItemRegex, string.Empty)
|
||||||
|
.Replace(' ', '_')
|
||||||
|
.Replace('-', '_')
|
||||||
|
.Replace('.', '_');
|
||||||
|
|
||||||
|
switch (itemInput)
|
||||||
|
{
|
||||||
|
#region Common
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Else, we fall back on the old matching
|
||||||
switch (input?.ToLowerInvariant())
|
switch (input?.ToLowerInvariant())
|
||||||
{
|
{
|
||||||
#region Machine
|
#region Machine
|
||||||
@@ -212,7 +562,7 @@ namespace SabreTools.Library.Tools
|
|||||||
case "machine-status":
|
case "machine-status":
|
||||||
case "supportstatus":
|
case "supportstatus":
|
||||||
case "support-status":
|
case "support-status":
|
||||||
return Field.Machine_SupportStatus;
|
return Field.Machine_Status;
|
||||||
|
|
||||||
case "displaycount":
|
case "displaycount":
|
||||||
case "display-count":
|
case "display-count":
|
||||||
@@ -403,98 +753,98 @@ namespace SabreTools.Library.Tools
|
|||||||
case "partname":
|
case "partname":
|
||||||
case "part name":
|
case "part name":
|
||||||
case "part-name":
|
case "part-name":
|
||||||
return Field.PartName;
|
return Field.DatItem_Part_Name;
|
||||||
case "partinterface":
|
case "partinterface":
|
||||||
case "part interface":
|
case "part interface":
|
||||||
case "part-interface":
|
case "part-interface":
|
||||||
return Field.PartInterface;
|
return Field.DatItem_Part_Interface;
|
||||||
case "features":
|
case "features":
|
||||||
return Field.Features;
|
return Field.DatItem_Features;
|
||||||
case "areaname":
|
case "areaname":
|
||||||
case "area name":
|
case "area name":
|
||||||
case "area-name":
|
case "area-name":
|
||||||
return Field.AreaName;
|
return Field.DatItem_AreaName;
|
||||||
case "areasize":
|
case "areasize":
|
||||||
case "area size":
|
case "area size":
|
||||||
case "area-size":
|
case "area-size":
|
||||||
return Field.AreaSize;
|
return Field.DatItem_AreaSize;
|
||||||
case "areawidth":
|
case "areawidth":
|
||||||
case "area width":
|
case "area width":
|
||||||
case "area-width":
|
case "area-width":
|
||||||
return Field.AreaWidth;
|
return Field.DatItem_AreaWidth;
|
||||||
case "areaendinanness":
|
case "areaendinanness":
|
||||||
case "area endianness":
|
case "area endianness":
|
||||||
case "area-endianness":
|
case "area-endianness":
|
||||||
return Field.AreaEndianness;
|
return Field.DatItem_AreaEndianness;
|
||||||
case "value":
|
case "value":
|
||||||
return Field.Value;
|
return Field.DatItem_Value;
|
||||||
case "loadflag":
|
case "loadflag":
|
||||||
case "load flag":
|
case "load flag":
|
||||||
case "load-flag":
|
case "load-flag":
|
||||||
return Field.LoadFlag;
|
return Field.DatItem_LoadFlag;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
case "bios":
|
case "bios":
|
||||||
return Field.Bios;
|
return Field.DatItem_Bios;
|
||||||
case "biosdescription":
|
case "biosdescription":
|
||||||
case "bios-description":
|
case "bios-description":
|
||||||
case "biossetdescription":
|
case "biossetdescription":
|
||||||
case "biosset-description":
|
case "biosset-description":
|
||||||
case "bios-set-description":
|
case "bios-set-description":
|
||||||
return Field.BiosDescription;
|
return Field.DatItem_Description;
|
||||||
case "crc":
|
case "crc":
|
||||||
case "crc32":
|
case "crc32":
|
||||||
return Field.CRC;
|
return Field.DatItem_CRC;
|
||||||
case "default":
|
case "default":
|
||||||
return Field.Default;
|
return Field.DatItem_Default;
|
||||||
case "date":
|
case "date":
|
||||||
return Field.Date;
|
return Field.DatItem_Date;
|
||||||
case "equal":
|
case "equal":
|
||||||
case "greater":
|
case "greater":
|
||||||
case "less":
|
case "less":
|
||||||
case "size":
|
case "size":
|
||||||
return Field.Size;
|
return Field.DatItem_Size;
|
||||||
case "index":
|
case "index":
|
||||||
return Field.Index;
|
return Field.DatItem_Index;
|
||||||
case "inverted":
|
case "inverted":
|
||||||
return Field.Inverted;
|
return Field.DatItem_Inverted;
|
||||||
case "itemtatus":
|
case "itemtatus":
|
||||||
case "item-status":
|
case "item-status":
|
||||||
case "status":
|
case "status":
|
||||||
return Field.Status;
|
return Field.DatItem_Status;
|
||||||
case "language":
|
case "language":
|
||||||
return Field.Language;
|
return Field.DatItem_Language;
|
||||||
case "md5":
|
case "md5":
|
||||||
return Field.MD5;
|
return Field.DatItem_MD5;
|
||||||
case "merge":
|
case "merge":
|
||||||
case "mergetag":
|
case "mergetag":
|
||||||
case "merge-tag":
|
case "merge-tag":
|
||||||
return Field.Merge;
|
return Field.DatItem_Merge;
|
||||||
case "offset":
|
case "offset":
|
||||||
return Field.Offset;
|
return Field.DatItem_Offset;
|
||||||
case "optional":
|
case "optional":
|
||||||
return Field.Optional;
|
return Field.DatItem_Optional;
|
||||||
case "region":
|
case "region":
|
||||||
return Field.Region;
|
return Field.DatItem_Region;
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
case "ripemd160":
|
case "ripemd160":
|
||||||
return Field.RIPEMD160;
|
return Field.DatItem_RIPEMD160;
|
||||||
#endif
|
#endif
|
||||||
case "sha1":
|
case "sha1":
|
||||||
case "sha-1":
|
case "sha-1":
|
||||||
return Field.SHA1;
|
return Field.DatItem_SHA1;
|
||||||
case "sha256":
|
case "sha256":
|
||||||
case "sha-256":
|
case "sha-256":
|
||||||
return Field.SHA256;
|
return Field.DatItem_SHA256;
|
||||||
case "sha384":
|
case "sha384":
|
||||||
case "sha-384":
|
case "sha-384":
|
||||||
return Field.SHA384;
|
return Field.DatItem_SHA384;
|
||||||
case "sha512":
|
case "sha512":
|
||||||
case "sha-512":
|
case "sha-512":
|
||||||
return Field.SHA512;
|
return Field.DatItem_SHA512;
|
||||||
case "writable":
|
case "writable":
|
||||||
return Field.Writable;
|
return Field.DatItem_Writable;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -2560,15 +2560,15 @@ Some special strings that can be used:
|
|||||||
if (GetBoolean(features, UpdateHashesValue))
|
if (GetBoolean(features, UpdateHashesValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{(UpdateHashesValue)}' is deprecated, please use {(string.Join(", ", UpdateFieldListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{(UpdateHashesValue)}' is deprecated, please use {(string.Join(", ", UpdateFieldListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
updateFields.Add(Field.CRC);
|
updateFields.Add(Field.DatItem_CRC);
|
||||||
updateFields.Add(Field.MD5);
|
updateFields.Add(Field.DatItem_MD5);
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
updateFields.Add(Field.RIPEMD160);
|
updateFields.Add(Field.DatItem_RIPEMD160);
|
||||||
#endif
|
#endif
|
||||||
updateFields.Add(Field.SHA1);
|
updateFields.Add(Field.DatItem_SHA1);
|
||||||
updateFields.Add(Field.SHA256);
|
updateFields.Add(Field.DatItem_SHA256);
|
||||||
updateFields.Add(Field.SHA384);
|
updateFields.Add(Field.DatItem_SHA384);
|
||||||
updateFields.Add(Field.SHA512);
|
updateFields.Add(Field.DatItem_SHA512);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetBoolean(features, UpdateManufacturerValue))
|
if (GetBoolean(features, UpdateManufacturerValue))
|
||||||
@@ -2768,12 +2768,12 @@ Some special strings that can be used:
|
|||||||
if (features.ContainsKey(NotCrcListValue))
|
if (features.ContainsKey(NotCrcListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{(NotCrcListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{(NotCrcListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.CRC, GetList(features, NotCrcListValue), true);
|
filter.SetFilter(Field.DatItem_CRC, GetList(features, NotCrcListValue), true);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(CrcListValue))
|
if (features.ContainsKey(CrcListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{(CrcListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{(CrcListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.CRC, GetList(features, NotCrcListValue), false);
|
filter.SetFilter(Field.DatItem_CRC, GetList(features, NotCrcListValue), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Item name
|
// Item name
|
||||||
@@ -2792,12 +2792,12 @@ Some special strings that can be used:
|
|||||||
if (features.ContainsKey(NotStatusListValue))
|
if (features.ContainsKey(NotStatusListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{(NotStatusListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{(NotStatusListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.Status, GetList(features, NotStatusListValue), true);
|
filter.SetFilter(Field.DatItem_Status, GetList(features, NotStatusListValue), true);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(StatusListValue))
|
if (features.ContainsKey(StatusListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{(StatusListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{(StatusListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.Status, GetList(features, StatusListValue), false);
|
filter.SetFilter(Field.DatItem_Status, GetList(features, StatusListValue), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Item type
|
// Item type
|
||||||
@@ -2852,12 +2852,12 @@ Some special strings that can be used:
|
|||||||
if (features.ContainsKey(NotMd5ListValue))
|
if (features.ContainsKey(NotMd5ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{(NotMd5ListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{(NotMd5ListValue)}' is deprecated, please use {(string.Join(", ", FilterListInput.Flags))} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.MD5, GetList(features, NotMd5ListValue), true);
|
filter.SetFilter(Field.DatItem_MD5, GetList(features, NotMd5ListValue), true);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(Md5ListValue))
|
if (features.ContainsKey(Md5ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{Md5ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{Md5ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.MD5, GetList(features, Md5ListValue), false);
|
filter.SetFilter(Field.DatItem_MD5, GetList(features, Md5ListValue), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NET_FRAMEWORK
|
#if NET_FRAMEWORK
|
||||||
@@ -2865,12 +2865,12 @@ Some special strings that can be used:
|
|||||||
if (features.ContainsKey(NotRipeMd160ListValue))
|
if (features.ContainsKey(NotRipeMd160ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{NotRipeMd160ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{NotRipeMd160ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.RIPEMD160, GetList(features, NotRipeMd160ListValue), true);
|
filter.SetFilter(Field.DatItem_RIPEMD160, GetList(features, NotRipeMd160ListValue), true);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(RipeMd160ListValue))
|
if (features.ContainsKey(RipeMd160ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{RipeMd160ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{RipeMd160ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.RIPEMD160, GetList(features, RipeMd160ListValue), false);
|
filter.SetFilter(Field.DatItem_RIPEMD160, GetList(features, RipeMd160ListValue), false);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -2890,48 +2890,48 @@ Some special strings that can be used:
|
|||||||
if (features.ContainsKey(NotSha1ListValue))
|
if (features.ContainsKey(NotSha1ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{NotSha1ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{NotSha1ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.SHA1, GetList(features, NotSha1ListValue), true);
|
filter.SetFilter(Field.DatItem_SHA1, GetList(features, NotSha1ListValue), true);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(Sha1ListValue))
|
if (features.ContainsKey(Sha1ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{Sha1ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{Sha1ListValue}' is deprecated, please use {string.Join(", ", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.SHA1, GetList(features, Sha1ListValue), false);
|
filter.SetFilter(Field.DatItem_SHA1, GetList(features, Sha1ListValue), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SHA256
|
// SHA256
|
||||||
if (features.ContainsKey(NotSha256ListValue))
|
if (features.ContainsKey(NotSha256ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{NotSha256ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{NotSha256ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.SHA256, GetList(features, NotSha256ListValue), true);
|
filter.SetFilter(Field.DatItem_SHA256, GetList(features, NotSha256ListValue), true);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(Sha256ListValue))
|
if (features.ContainsKey(Sha256ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{Sha256ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{Sha256ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.SHA256, GetList(features, Sha256ListValue), false);
|
filter.SetFilter(Field.DatItem_SHA256, GetList(features, Sha256ListValue), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SHA384
|
// SHA384
|
||||||
if (features.ContainsKey(NotSha384ListValue))
|
if (features.ContainsKey(NotSha384ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{NotSha384ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{NotSha384ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.SHA384, GetList(features, NotSha384ListValue), true);
|
filter.SetFilter(Field.DatItem_SHA384, GetList(features, NotSha384ListValue), true);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(Sha384ListValue))
|
if (features.ContainsKey(Sha384ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{Sha384ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{Sha384ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.SHA384, GetList(features, Sha384ListValue), false);
|
filter.SetFilter(Field.DatItem_SHA384, GetList(features, Sha384ListValue), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SHA512
|
// SHA512
|
||||||
if (features.ContainsKey(NotSha512ListValue))
|
if (features.ContainsKey(NotSha512ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{NotSha512ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{NotSha512ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.SHA512, GetList(features, NotSha512ListValue), true);
|
filter.SetFilter(Field.DatItem_SHA512, GetList(features, NotSha512ListValue), true);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(Sha512ListValue))
|
if (features.ContainsKey(Sha512ListValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{Sha512ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{Sha512ListValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
filter.SetFilter(Field.SHA512, GetList(features, Sha512ListValue), false);
|
filter.SetFilter(Field.DatItem_SHA512, GetList(features, Sha512ListValue), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Size
|
// Size
|
||||||
@@ -2939,19 +2939,19 @@ Some special strings that can be used:
|
|||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{LessStringValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{LessStringValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
var value = Sanitizer.ToSize(GetString(features, LessStringValue));
|
var value = Sanitizer.ToSize(GetString(features, LessStringValue));
|
||||||
filter.SetFilter(Field.Size, $"<{value}", false);
|
filter.SetFilter(Field.DatItem_Size, $"<{value}", false);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(EqualStringValue))
|
if (features.ContainsKey(EqualStringValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{EqualStringValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{EqualStringValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
var value = Sanitizer.ToSize(GetString(features, EqualStringValue));
|
var value = Sanitizer.ToSize(GetString(features, EqualStringValue));
|
||||||
filter.SetFilter(Field.Size, $"={value}", false);
|
filter.SetFilter(Field.DatItem_Size, $"={value}", false);
|
||||||
}
|
}
|
||||||
if (features.ContainsKey(GreaterStringValue))
|
if (features.ContainsKey(GreaterStringValue))
|
||||||
{
|
{
|
||||||
Globals.Logger.User($"This flag '{GreaterStringValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
Globals.Logger.User($"This flag '{GreaterStringValue}' is deprecated, please use {string.Join(",", FilterListInput.Flags)} instead. Please refer to README.1ST or the help feature for more details.");
|
||||||
var value = Sanitizer.ToSize(GetString(features, GreaterStringValue));
|
var value = Sanitizer.ToSize(GetString(features, GreaterStringValue));
|
||||||
filter.SetFilter(Field.Size, $">{value}", false);
|
filter.SetFilter(Field.DatItem_Size, $">{value}", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
Reference in New Issue
Block a user