mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add notes, numeric helper
This commit is contained in:
123
SabreTools.Core/Tools/NumberHelper.cs
Normal file
123
SabreTools.Core/Tools/NumberHelper.cs
Normal file
@@ -0,0 +1,123 @@
|
||||
using System;
|
||||
|
||||
namespace SabreTools.Core.Tools
|
||||
{
|
||||
public static class NumberHelper
|
||||
{
|
||||
#region Constants
|
||||
|
||||
#region Byte (1000-based) size comparisons
|
||||
|
||||
private const long KiloByte = 1000;
|
||||
private readonly static long MegaByte = (long)Math.Pow(KiloByte, 2);
|
||||
private readonly static long GigaByte = (long)Math.Pow(KiloByte, 3);
|
||||
private readonly static long TeraByte = (long)Math.Pow(KiloByte, 4);
|
||||
private readonly static long PetaByte = (long)Math.Pow(KiloByte, 5);
|
||||
private readonly static long ExaByte = (long)Math.Pow(KiloByte, 6);
|
||||
private readonly static long ZettaByte = (long)Math.Pow(KiloByte, 7);
|
||||
private readonly static long YottaByte = (long)Math.Pow(KiloByte, 8);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Byte (1024-based) size comparisons
|
||||
|
||||
private const long KibiByte = 1024;
|
||||
private readonly static long MibiByte = (long)Math.Pow(KibiByte, 2);
|
||||
private readonly static long GibiByte = (long)Math.Pow(KibiByte, 3);
|
||||
private readonly static long TibiByte = (long)Math.Pow(KibiByte, 4);
|
||||
private readonly static long PibiByte = (long)Math.Pow(KibiByte, 5);
|
||||
private readonly static long ExiByte = (long)Math.Pow(KibiByte, 6);
|
||||
private readonly static long ZittiByte = (long)Math.Pow(KibiByte, 7);
|
||||
private readonly static long YittiByte = (long)Math.Pow(KibiByte, 8);
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Convert a string to an Int64
|
||||
/// </summary>
|
||||
public static double? ConvertToDouble(string? numeric)
|
||||
{
|
||||
// If we don't have a valid string, we can't do anything
|
||||
if (string.IsNullOrWhiteSpace(numeric))
|
||||
return null;
|
||||
|
||||
if (!double.TryParse(numeric, out double doubleValue))
|
||||
return null;
|
||||
|
||||
return doubleValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert a string to an Int64
|
||||
/// </summary>
|
||||
public static long? ConvertToInt64(string? numeric)
|
||||
{
|
||||
// If we don't have a valid string, we can't do anything
|
||||
if (string.IsNullOrWhiteSpace(numeric))
|
||||
return null;
|
||||
|
||||
// Normalize the string for easier comparison
|
||||
numeric = numeric.ToLowerInvariant();
|
||||
|
||||
// Get the multiplication modifier and trim characters
|
||||
long multiplier = DetermineMultiplier(numeric);
|
||||
numeric = numeric.TrimEnd(new char[] { 'k', 'm', 'g', 't', 'p', 'e', 'z', 'y', 'i', 'b', ' ' });
|
||||
|
||||
// Parse the numeric string, if possible
|
||||
long value;
|
||||
if (numeric.StartsWith("0x"))
|
||||
value = Convert.ToInt64(numeric, 16);
|
||||
else if (long.TryParse(numeric, out long longValue))
|
||||
value = longValue;
|
||||
else
|
||||
return null;
|
||||
|
||||
// Apply the multiplier and return
|
||||
return value * multiplier;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determine the multiplier from a numeric string
|
||||
/// </summary>
|
||||
private static long DetermineMultiplier(string numeric)
|
||||
{
|
||||
long multiplier = 1;
|
||||
if (numeric.EndsWith("k") || numeric.EndsWith("kb"))
|
||||
multiplier = KiloByte;
|
||||
else if (numeric.EndsWith("ki") || numeric.EndsWith("kib"))
|
||||
multiplier = KibiByte;
|
||||
else if (numeric.EndsWith("m") || numeric.EndsWith("mb"))
|
||||
multiplier = MegaByte;
|
||||
else if (numeric.EndsWith("mi") || numeric.EndsWith("mib"))
|
||||
multiplier = MibiByte;
|
||||
else if (numeric.EndsWith("g") || numeric.EndsWith("gb"))
|
||||
multiplier = GigaByte;
|
||||
else if (numeric.EndsWith("gi") || numeric.EndsWith("gib"))
|
||||
multiplier = GibiByte;
|
||||
else if (numeric.EndsWith("t") || numeric.EndsWith("tb"))
|
||||
multiplier = TeraByte;
|
||||
else if (numeric.EndsWith("ti") || numeric.EndsWith("tib"))
|
||||
multiplier = TibiByte;
|
||||
else if (numeric.EndsWith("p") || numeric.EndsWith("pb"))
|
||||
multiplier = PetaByte;
|
||||
else if (numeric.EndsWith("pi") || numeric.EndsWith("pib"))
|
||||
multiplier = PibiByte;
|
||||
else if (numeric.EndsWith("e") || numeric.EndsWith("eb"))
|
||||
multiplier = ExaByte;
|
||||
else if (numeric.EndsWith("ei") || numeric.EndsWith("eib"))
|
||||
multiplier = ExiByte;
|
||||
else if (numeric.EndsWith("z") || numeric.EndsWith("zb"))
|
||||
multiplier = ZettaByte;
|
||||
else if (numeric.EndsWith("zi") || numeric.EndsWith("zib"))
|
||||
multiplier = ZittiByte;
|
||||
else if (numeric.EndsWith("y") || numeric.EndsWith("yb"))
|
||||
multiplier = YottaByte;
|
||||
else if (numeric.EndsWith("yi") || numeric.EndsWith("yib"))
|
||||
multiplier = YittiByte;
|
||||
|
||||
return multiplier;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -62,43 +62,6 @@ namespace SabreTools.Core.Tools
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a sanitized double from an input string
|
||||
/// </summary>
|
||||
/// <param name="input">String to get value from</param>
|
||||
/// <returns>Value as a double?, if possible</returns>
|
||||
public static double? CleanDouble(string input)
|
||||
{
|
||||
double? value = null;
|
||||
if (input != null)
|
||||
{
|
||||
if (Double.TryParse(input, out double doubleValue))
|
||||
value = doubleValue;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a sanitized size from an input string
|
||||
/// </summary>
|
||||
/// <param name="input">String to get value from</param>
|
||||
/// <returns>Size as a long?, if possible</returns>
|
||||
public static long? CleanLong(string input)
|
||||
{
|
||||
long? size = null;
|
||||
if (input != null && input.Contains("0x"))
|
||||
size = Convert.ToInt64(input, 16);
|
||||
|
||||
else if (input != null)
|
||||
{
|
||||
if (Int64.TryParse(input, out long longSize))
|
||||
size = longSize;
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert .NET DateTime to MS-DOS date format
|
||||
/// </summary>
|
||||
|
||||
@@ -107,7 +107,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
ArchiveDotOrgSource = file.Source,
|
||||
//BitTorrentMagnetHash = file.BitTorrentMagnetHash, // TODO: Add to internal model
|
||||
Date = file.LastModifiedTime?.ToString(),
|
||||
Size = Utilities.CleanLong(file.Size),
|
||||
Size = NumberHelper.ConvertToInt64(file.Size),
|
||||
MD5 = file.MD5,
|
||||
CRC = file.CRC32,
|
||||
SHA1 = file.SHA1,
|
||||
|
||||
@@ -247,7 +247,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var item = new Rom
|
||||
{
|
||||
Name = rom.Name,
|
||||
Size = Utilities.CleanLong(rom.Size),
|
||||
Size = NumberHelper.ConvertToInt64(rom.Size),
|
||||
CRC = rom.CRC,
|
||||
MD5 = rom.MD5,
|
||||
SHA1 = rom.SHA1,
|
||||
@@ -414,7 +414,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
ChipType = chip.Type?.AsChipType() ?? ChipType.NULL,
|
||||
Name = chip.Name,
|
||||
//Flags = chip.Flags, // TODO: Add to internal model
|
||||
Clock = Utilities.CleanLong(chip.Clock),
|
||||
Clock = NumberHelper.ConvertToInt64(chip.Clock),
|
||||
|
||||
Source = new Source
|
||||
{
|
||||
@@ -449,11 +449,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
var item = new Display
|
||||
{
|
||||
DisplayType = video.Screen?.AsDisplayType() ?? DisplayType.NULL,
|
||||
Width = Utilities.CleanLong(video.X),
|
||||
Height = Utilities.CleanLong(video.Y),
|
||||
Width = NumberHelper.ConvertToInt64(video.X),
|
||||
Height = NumberHelper.ConvertToInt64(video.Y),
|
||||
//AspectX = video.AspectX, // TODO: Add to internal model or find mapping
|
||||
//AspectY = video.AspectY, // TODO: Add to internal model or find mapping
|
||||
Refresh = Utilities.CleanDouble(video.Freq),
|
||||
Refresh = NumberHelper.ConvertToDouble(video.Freq),
|
||||
|
||||
Source = new Source
|
||||
{
|
||||
@@ -495,7 +495,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
containsItems = true;
|
||||
var item = new Sound
|
||||
{
|
||||
Channels = Utilities.CleanLong(sound.Channels),
|
||||
Channels = NumberHelper.ConvertToInt64(sound.Channels),
|
||||
|
||||
Source = new Source
|
||||
{
|
||||
@@ -526,16 +526,16 @@ namespace SabreTools.DatFiles.Formats
|
||||
containsItems = true;
|
||||
var item = new Input
|
||||
{
|
||||
Players = Utilities.CleanLong(input.Players),
|
||||
Players = NumberHelper.ConvertToInt64(input.Players),
|
||||
//Control = input.Control, // TODO: Add to internal model or find mapping
|
||||
Controls = new List<Control>
|
||||
{
|
||||
new Control
|
||||
{
|
||||
Buttons = Utilities.CleanLong(input.Buttons),
|
||||
Buttons = NumberHelper.ConvertToInt64(input.Buttons),
|
||||
},
|
||||
},
|
||||
Coins = Utilities.CleanLong(input.Coins),
|
||||
Coins = NumberHelper.ConvertToInt64(input.Coins),
|
||||
Tilt = input.Tilt?.AsYesNo(),
|
||||
Service = input.Service?.AsYesNo(),
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var item = new Rom
|
||||
{
|
||||
Name = rom.Name,
|
||||
Size = Utilities.CleanLong(rom.Size),
|
||||
Size = NumberHelper.ConvertToInt64(rom.Size),
|
||||
CRC = rom.CRC,
|
||||
Date = rom.Date,
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var rom = new Rom()
|
||||
{
|
||||
Name = name,
|
||||
Size = Utilities.CleanLong(row.Size),
|
||||
Size = NumberHelper.ConvertToInt64(row.Size),
|
||||
CRC = row.CRC32,
|
||||
MD5 = row.MD5,
|
||||
SHA1 = row.SHA1,
|
||||
|
||||
@@ -144,7 +144,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var rom = new Rom
|
||||
{
|
||||
Name = row.Name,
|
||||
Size = Utilities.CleanLong(row.Size),
|
||||
Size = NumberHelper.ConvertToInt64(row.Size),
|
||||
CRC = row.CRC,
|
||||
SHA1 = row.SHA1,
|
||||
ItemStatus = ItemStatus.None,
|
||||
@@ -221,7 +221,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var rom = new Rom
|
||||
{
|
||||
Name = row.Name,
|
||||
Size = Utilities.CleanLong(row.Size),
|
||||
Size = NumberHelper.ConvertToInt64(row.Size),
|
||||
CRC = row.CRC,
|
||||
SHA1 = row.SHA1,
|
||||
ItemStatus = ItemStatus.BadDump,
|
||||
@@ -245,7 +245,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var rom = new Rom
|
||||
{
|
||||
Name = row.Name,
|
||||
Size = Utilities.CleanLong(row.Size),
|
||||
Size = NumberHelper.ConvertToInt64(row.Size),
|
||||
CRC = null,
|
||||
SHA1 = null,
|
||||
ItemStatus = ItemStatus.Nodump,
|
||||
|
||||
@@ -214,7 +214,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
Name = rom.Name,
|
||||
Bios = rom.Bios,
|
||||
Size = Utilities.CleanLong(rom.Size),
|
||||
Size = NumberHelper.ConvertToInt64(rom.Size),
|
||||
CRC = rom.CRC,
|
||||
SHA1 = rom.SHA1,
|
||||
MergeTag = rom.Merge,
|
||||
@@ -371,7 +371,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
Tag = chip.Tag,
|
||||
ChipType = chip.Type.AsChipType(),
|
||||
//SoundOnly = chip.SoundOnly, // TODO: Add to internal model
|
||||
Clock = Utilities.CleanLong(chip.Clock),
|
||||
Clock = NumberHelper.ConvertToInt64(chip.Clock),
|
||||
|
||||
Source = new Source
|
||||
{
|
||||
@@ -407,18 +407,18 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
Tag = display.Tag,
|
||||
DisplayType = display.Type.AsDisplayType(),
|
||||
Rotate = Utilities.CleanLong(display.Rotate),
|
||||
Rotate = NumberHelper.ConvertToInt64(display.Rotate),
|
||||
FlipX = display.FlipX.AsYesNo(),
|
||||
Width = Utilities.CleanLong(display.Width),
|
||||
Height = Utilities.CleanLong(display.Height),
|
||||
Refresh = Utilities.CleanDouble(display.Refresh),
|
||||
PixClock = Utilities.CleanLong(display.PixClock),
|
||||
HTotal = Utilities.CleanLong(display.HTotal),
|
||||
HBEnd = Utilities.CleanLong(display.HBEnd),
|
||||
HBStart = Utilities.CleanLong(display.HBStart),
|
||||
VTotal = Utilities.CleanLong(display.VTotal),
|
||||
VBEnd = Utilities.CleanLong(display.VBEnd),
|
||||
VBStart = Utilities.CleanLong(display.VBStart),
|
||||
Width = NumberHelper.ConvertToInt64(display.Width),
|
||||
Height = NumberHelper.ConvertToInt64(display.Height),
|
||||
Refresh = NumberHelper.ConvertToDouble(display.Refresh),
|
||||
PixClock = NumberHelper.ConvertToInt64(display.PixClock),
|
||||
HTotal = NumberHelper.ConvertToInt64(display.HTotal),
|
||||
HBEnd = NumberHelper.ConvertToInt64(display.HBEnd),
|
||||
HBStart = NumberHelper.ConvertToInt64(display.HBStart),
|
||||
VTotal = NumberHelper.ConvertToInt64(display.VTotal),
|
||||
VBEnd = NumberHelper.ConvertToInt64(display.VBEnd),
|
||||
VBStart = NumberHelper.ConvertToInt64(display.VBStart),
|
||||
|
||||
Source = new Source
|
||||
{
|
||||
@@ -453,11 +453,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
var item = new Display
|
||||
{
|
||||
DisplayType = video.Screen?.AsDisplayType() ?? DisplayType.NULL,
|
||||
Width = Utilities.CleanLong(video.Width),
|
||||
Height = Utilities.CleanLong(video.Height),
|
||||
Width = NumberHelper.ConvertToInt64(video.Width),
|
||||
Height = NumberHelper.ConvertToInt64(video.Height),
|
||||
//AspectX = video.AspectX, // TODO: Add to internal model or find mapping
|
||||
//AspectY = video.AspectY, // TODO: Add to internal model or find mapping
|
||||
Refresh = Utilities.CleanDouble(video.Refresh),
|
||||
Refresh = NumberHelper.ConvertToDouble(video.Refresh),
|
||||
|
||||
Source = new Source
|
||||
{
|
||||
@@ -499,7 +499,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
containsItems = true;
|
||||
var item = new Sound
|
||||
{
|
||||
Channels = Utilities.CleanLong(sound.Channels),
|
||||
Channels = NumberHelper.ConvertToInt64(sound.Channels),
|
||||
|
||||
Source = new Source
|
||||
{
|
||||
@@ -532,10 +532,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
Service = input.Service.AsYesNo(),
|
||||
Tilt = input.Tilt.AsYesNo(),
|
||||
Players = Utilities.CleanLong(input.Players),
|
||||
Players = NumberHelper.ConvertToInt64(input.Players),
|
||||
//ControlAttr = input.ControlAttr, // TODO: Add to internal model
|
||||
//Buttons = input.Buttons, // TODO: Add to internal model
|
||||
Coins = Utilities.CleanLong(input.Coins),
|
||||
Coins = NumberHelper.ConvertToInt64(input.Coins),
|
||||
|
||||
Source = new Source
|
||||
{
|
||||
@@ -550,13 +550,13 @@ namespace SabreTools.DatFiles.Formats
|
||||
var controlItem = new Control
|
||||
{
|
||||
ControlType = control.Type.AsControlType(),
|
||||
Player = Utilities.CleanLong(control.Player),
|
||||
Buttons = Utilities.CleanLong(control.Buttons),
|
||||
RequiredButtons = Utilities.CleanLong(control.ReqButtons),
|
||||
Minimum = Utilities.CleanLong(control.Minimum),
|
||||
Maximum = Utilities.CleanLong(control.Maximum),
|
||||
Sensitivity = Utilities.CleanLong(control.Sensitivity),
|
||||
KeyDelta = Utilities.CleanLong(control.KeyDelta),
|
||||
Player = NumberHelper.ConvertToInt64(control.Player),
|
||||
Buttons = NumberHelper.ConvertToInt64(control.Buttons),
|
||||
RequiredButtons = NumberHelper.ConvertToInt64(control.ReqButtons),
|
||||
Minimum = NumberHelper.ConvertToInt64(control.Minimum),
|
||||
Maximum = NumberHelper.ConvertToInt64(control.Maximum),
|
||||
Sensitivity = NumberHelper.ConvertToInt64(control.Sensitivity),
|
||||
KeyDelta = NumberHelper.ConvertToInt64(control.KeyDelta),
|
||||
Reverse = control.Reverse.AsYesNo(),
|
||||
Ways = control.Ways,
|
||||
Ways2 = control.Ways2,
|
||||
@@ -621,7 +621,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var locationItem = new Location
|
||||
{
|
||||
Name = diplocation.Name,
|
||||
Number = Utilities.CleanLong(diplocation.Number),
|
||||
Number = NumberHelper.ConvertToInt64(diplocation.Number),
|
||||
Inverted = diplocation.Inverted.AsYesNo(),
|
||||
};
|
||||
locations.Add(locationItem);
|
||||
@@ -712,7 +712,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var locationItem = new Location
|
||||
{
|
||||
Name = confLocation.Name,
|
||||
Number = Utilities.CleanLong(confLocation.Number),
|
||||
Number = NumberHelper.ConvertToInt64(confLocation.Number),
|
||||
Inverted = confLocation.Inverted.AsYesNo(),
|
||||
};
|
||||
locations.Add(locationItem);
|
||||
@@ -869,7 +869,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
Status = driver.Status.AsSupportStatus(),
|
||||
//Color = driver.Color.AsSupportStatus(), // TODO: Add to internal model
|
||||
//Sound = driver.Sound.AsSupportStatus(), // TODO: Add to internal model
|
||||
//PaletteSize = Utilities.CleanLong(driver.PaletteSize), // TODO: Add to internal model
|
||||
//PaletteSize = NumberHelper.ConvertToInt64(driver.PaletteSize), // TODO: Add to internal model
|
||||
Emulation = driver.Emulation.AsSupportStatus(),
|
||||
Cocktail = driver.Cocktail.AsSupportStatus(),
|
||||
SaveState = driver.SaveState.AsSupported(),
|
||||
@@ -948,7 +948,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
DeviceType = device.Type.AsDeviceType(),
|
||||
Tag = device.Tag,
|
||||
FixedImage = device.FixedImage,
|
||||
Mandatory = Utilities.CleanLong(device.Mandatory),
|
||||
Mandatory = NumberHelper.ConvertToInt64(device.Mandatory),
|
||||
Interface = device.Interface,
|
||||
|
||||
Source = new Source
|
||||
|
||||
@@ -388,7 +388,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var item = new Rom
|
||||
{
|
||||
Name = rom.Name,
|
||||
Size = Utilities.CleanLong(rom.Size),
|
||||
Size = NumberHelper.ConvertToInt64(rom.Size),
|
||||
CRC = rom.CRC,
|
||||
MD5 = rom.MD5,
|
||||
SHA1 = rom.SHA1,
|
||||
|
||||
@@ -316,7 +316,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
Comment = game.Comment,
|
||||
};
|
||||
|
||||
long? size = Utilities.CleanLong(game.RomSize);
|
||||
long? size = NumberHelper.ConvertToInt64(game.RomSize);
|
||||
if (game.DuplicateID != "0")
|
||||
machine.CloneOf = game.DuplicateID;
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var item = new Rom
|
||||
{
|
||||
Name = rom.RomName,
|
||||
Size = Utilities.CleanLong(rom.RomSize),
|
||||
Size = NumberHelper.ConvertToInt64(rom.RomSize),
|
||||
CRC = rom.RomCRC,
|
||||
MergeTag = rom.MergeName,
|
||||
ItemStatus = ItemStatus.None,
|
||||
|
||||
@@ -256,8 +256,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var item = new DataArea
|
||||
{
|
||||
Name = dataarea.Name,
|
||||
Size = Utilities.CleanLong(dataarea.Size),
|
||||
Width = Utilities.CleanLong(dataarea.Width),
|
||||
Size = NumberHelper.ConvertToInt64(dataarea.Size),
|
||||
Width = NumberHelper.ConvertToInt64(dataarea.Width),
|
||||
Endianness = dataarea.Endianness.AsEndianness(),
|
||||
|
||||
Source = new Source
|
||||
@@ -295,7 +295,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var item = new Rom
|
||||
{
|
||||
Name = rom.Name,
|
||||
Size = Utilities.CleanLong(rom.Size ?? rom.Length),
|
||||
Size = NumberHelper.ConvertToInt64(rom.Size ?? rom.Length),
|
||||
CRC = rom.CRC,
|
||||
SHA1 = rom.SHA1,
|
||||
Offset = rom.Offset,
|
||||
|
||||
@@ -472,7 +472,7 @@ namespace SabreTools.DatFiles
|
||||
chip.ChipType = DatItemMappings[DatItemField.ChipType].AsChipType();
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Clock))
|
||||
chip.Clock = Utilities.CleanLong(DatItemMappings[DatItemField.Clock]);
|
||||
chip.Clock = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Clock]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Tag))
|
||||
chip.Tag = DatItemMappings[DatItemField.Tag];
|
||||
@@ -559,31 +559,31 @@ namespace SabreTools.DatFiles
|
||||
private void SetFields(Control control)
|
||||
{
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_Buttons))
|
||||
control.Buttons = Utilities.CleanLong(DatItemMappings[DatItemField.Control_Buttons]);
|
||||
control.Buttons = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Buttons]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_Type))
|
||||
control.ControlType = DatItemMappings[DatItemField.Control_Type].AsControlType();
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_KeyDelta))
|
||||
control.KeyDelta = Utilities.CleanLong(DatItemMappings[DatItemField.Control_KeyDelta]);
|
||||
control.KeyDelta = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_KeyDelta]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_Maximum))
|
||||
control.Maximum = Utilities.CleanLong(DatItemMappings[DatItemField.Control_Maximum]);
|
||||
control.Maximum = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Maximum]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_Minimum))
|
||||
control.Minimum = Utilities.CleanLong(DatItemMappings[DatItemField.Control_Minimum]);
|
||||
control.Minimum = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Minimum]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_Player))
|
||||
control.Player = Utilities.CleanLong(DatItemMappings[DatItemField.Control_Player]);
|
||||
control.Player = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Player]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_RequiredButtons))
|
||||
control.RequiredButtons = Utilities.CleanLong(DatItemMappings[DatItemField.Control_RequiredButtons]);
|
||||
control.RequiredButtons = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_RequiredButtons]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_Reverse))
|
||||
control.Reverse = DatItemMappings[DatItemField.Control_Reverse].AsYesNo();
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_Sensitivity))
|
||||
control.Sensitivity = Utilities.CleanLong(DatItemMappings[DatItemField.Control_Sensitivity]);
|
||||
control.Sensitivity = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Sensitivity]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Control_Ways))
|
||||
control.Ways = DatItemMappings[DatItemField.Control_Ways];
|
||||
@@ -608,10 +608,10 @@ namespace SabreTools.DatFiles
|
||||
dataArea.Name = DatItemMappings[DatItemField.AreaName];
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.AreaSize))
|
||||
dataArea.Size = Utilities.CleanLong(DatItemMappings[DatItemField.AreaSize]);
|
||||
dataArea.Size = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.AreaSize]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.AreaWidth))
|
||||
dataArea.Width = Utilities.CleanLong(DatItemMappings[DatItemField.AreaWidth]);
|
||||
dataArea.Width = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.AreaWidth]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -630,7 +630,7 @@ namespace SabreTools.DatFiles
|
||||
device.Interface = DatItemMappings[DatItemField.Interface];
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Mandatory))
|
||||
device.Mandatory = Utilities.CleanLong(DatItemMappings[DatItemField.Mandatory]);
|
||||
device.Mandatory = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Mandatory]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Tag))
|
||||
device.Tag = DatItemMappings[DatItemField.Tag];
|
||||
@@ -752,40 +752,40 @@ namespace SabreTools.DatFiles
|
||||
display.FlipX = DatItemMappings[DatItemField.FlipX].AsYesNo();
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Height))
|
||||
display.Height = Utilities.CleanLong(DatItemMappings[DatItemField.Height]);
|
||||
display.Height = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Height]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.HBEnd))
|
||||
display.HBEnd = Utilities.CleanLong(DatItemMappings[DatItemField.HBEnd]);
|
||||
display.HBEnd = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.HBEnd]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.HBStart))
|
||||
display.HBStart = Utilities.CleanLong(DatItemMappings[DatItemField.HBStart]);
|
||||
display.HBStart = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.HBStart]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.HTotal))
|
||||
display.HTotal = Utilities.CleanLong(DatItemMappings[DatItemField.HTotal]);
|
||||
display.HTotal = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.HTotal]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.PixClock))
|
||||
display.PixClock = Utilities.CleanLong(DatItemMappings[DatItemField.PixClock]);
|
||||
display.PixClock = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.PixClock]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Refresh))
|
||||
display.Refresh = Utilities.CleanDouble(DatItemMappings[DatItemField.Refresh]);
|
||||
display.Refresh = NumberHelper.ConvertToDouble(DatItemMappings[DatItemField.Refresh]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Rotate))
|
||||
display.Rotate = Utilities.CleanLong(DatItemMappings[DatItemField.Rotate]);
|
||||
display.Rotate = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Rotate]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Tag))
|
||||
display.Tag = DatItemMappings[DatItemField.Tag];
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.VBEnd))
|
||||
display.VBEnd = Utilities.CleanLong(DatItemMappings[DatItemField.VBEnd]);
|
||||
display.VBEnd = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.VBEnd]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.VBStart))
|
||||
display.VBStart = Utilities.CleanLong(DatItemMappings[DatItemField.VBStart]);
|
||||
display.VBStart = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.VBStart]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.VTotal))
|
||||
display.VTotal = Utilities.CleanLong(DatItemMappings[DatItemField.VTotal]);
|
||||
display.VTotal = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.VTotal]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Width))
|
||||
display.Width = Utilities.CleanLong(DatItemMappings[DatItemField.Width]);
|
||||
display.Width = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Width]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -862,10 +862,10 @@ namespace SabreTools.DatFiles
|
||||
private void SetFields(Input input)
|
||||
{
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Coins))
|
||||
input.Coins = Utilities.CleanLong(DatItemMappings[DatItemField.Coins]);
|
||||
input.Coins = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Coins]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Players))
|
||||
input.Players = Utilities.CleanLong(DatItemMappings[DatItemField.Players]);
|
||||
input.Players = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Players]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Service))
|
||||
input.Service = DatItemMappings[DatItemField.Service].AsYesNo();
|
||||
@@ -908,7 +908,7 @@ namespace SabreTools.DatFiles
|
||||
location.Name = DatItemMappings[DatItemField.Location_Name];
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Location_Number))
|
||||
location.Number = Utilities.CleanLong(DatItemMappings[DatItemField.Location_Number]);
|
||||
location.Number = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Location_Number]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1099,7 +1099,7 @@ namespace SabreTools.DatFiles
|
||||
rom.SHA512 = DatItemMappings[DatItemField.SHA512];
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Size))
|
||||
rom.Size = Utilities.CleanLong(DatItemMappings[DatItemField.Size]);
|
||||
rom.Size = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Size]);
|
||||
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.SpamSum))
|
||||
rom.SpamSum = DatItemMappings[DatItemField.SpamSum];
|
||||
@@ -1208,7 +1208,7 @@ namespace SabreTools.DatFiles
|
||||
private void SetFields(Sound sound)
|
||||
{
|
||||
if (DatItemMappings!.ContainsKey(DatItemField.Channels))
|
||||
sound.Channels = Utilities.CleanLong(DatItemMappings[DatItemField.Channels]);
|
||||
sound.Channels = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Channels]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -84,7 +84,10 @@ namespace SabreTools.Filter
|
||||
/// <summary>
|
||||
/// Determines if a value matches exactly
|
||||
/// </summary>
|
||||
/// <remarks>TODO: Add regex matching to this method</remarks>
|
||||
/// <remarks>
|
||||
/// TODO: Add regex matching to this method
|
||||
/// TODO: Add logic to convert SI suffixes and hex
|
||||
/// </remarks>
|
||||
private bool MatchesEqual(DictionaryBase dictionaryBase)
|
||||
{
|
||||
if (!dictionaryBase.ContainsKey(this.Key[1]))
|
||||
@@ -97,7 +100,10 @@ namespace SabreTools.Filter
|
||||
/// <summary>
|
||||
/// Determines if a value does not match exactly
|
||||
/// </summary>
|
||||
/// <remarks>TODO: Add regex matching to this method</remarks>
|
||||
/// <remarks>
|
||||
/// TODO: Add regex matching to this method
|
||||
/// TODO: Add logic to convert SI suffixes and hex
|
||||
/// </remarks>
|
||||
private bool MatchesNotEqual(DictionaryBase dictionaryBase)
|
||||
{
|
||||
if (!dictionaryBase.ContainsKey(this.Key[1]))
|
||||
@@ -110,6 +116,7 @@ namespace SabreTools.Filter
|
||||
/// <summary>
|
||||
/// Determines if a value is strictly greater than
|
||||
/// </summary>
|
||||
/// <remarks>TODO: Add logic to convert SI suffixes and hex</remarks>
|
||||
private bool MatchesGreaterThan(DictionaryBase dictionaryBase)
|
||||
{
|
||||
if (!dictionaryBase.ContainsKey(this.Key[1]))
|
||||
@@ -139,6 +146,7 @@ namespace SabreTools.Filter
|
||||
/// <summary>
|
||||
/// Determines if a value is greater than or equal
|
||||
/// </summary>
|
||||
/// <remarks>TODO: Add logic to convert SI suffixes and hex</remarks>
|
||||
private bool MatchesGreaterThanOrEqual(DictionaryBase dictionaryBase)
|
||||
{
|
||||
if (!dictionaryBase.ContainsKey(this.Key[1]))
|
||||
@@ -168,6 +176,7 @@ namespace SabreTools.Filter
|
||||
/// <summary>
|
||||
/// Determines if a value is strictly less than
|
||||
/// </summary>
|
||||
/// <remarks>TODO: Add logic to convert SI suffixes and hex</remarks>
|
||||
private bool MatchesLessThan(DictionaryBase dictionaryBase)
|
||||
{
|
||||
if (!dictionaryBase.ContainsKey(this.Key[1]))
|
||||
@@ -197,6 +206,7 @@ namespace SabreTools.Filter
|
||||
/// <summary>
|
||||
/// Determines if a value is less than or equal
|
||||
/// </summary>
|
||||
/// <remarks>TODO: Add logic to convert SI suffixes and hex</remarks>
|
||||
private bool MatchesLessThanOrEqual(DictionaryBase dictionaryBase)
|
||||
{
|
||||
if (!dictionaryBase.ContainsKey(this.Key[1]))
|
||||
|
||||
@@ -62,6 +62,7 @@ namespace SabreTools.Models.Internal
|
||||
/// <summary>
|
||||
/// Read a key as a long, returning null on error
|
||||
/// </summary>
|
||||
/// <remarks>TODO: Add logic to convert SI suffixes and hex</remarks>
|
||||
public long? ReadLong(string key)
|
||||
{
|
||||
if (!ValidateKey(key))
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace SabreTools.Test.Core
|
||||
[InlineData(" 12345 ", 12345L)]
|
||||
public void CleanLongTest(string input, long? expected)
|
||||
{
|
||||
long? actual = Utilities.CleanLong(input);
|
||||
long? actual = NumberHelper.ConvertToInt64(input);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user