Move some more extension methods
This commit is contained in:
parent
01506da244
commit
a726fde352
|
@ -9,11 +9,30 @@ namespace BizHawk.Common
|
||||||
{
|
{
|
||||||
public static class Extensions
|
public static class Extensions
|
||||||
{
|
{
|
||||||
|
public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dict, TKey key)
|
||||||
|
{
|
||||||
|
TValue ret;
|
||||||
|
dict.TryGetValue(key, out ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dict, TKey key, TValue defaultvalue)
|
||||||
|
{
|
||||||
|
TValue ret;
|
||||||
|
if (!dict.TryGetValue(key, out ret))
|
||||||
|
{
|
||||||
|
return defaultvalue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
public static string GetDirectory(this Assembly asm)
|
public static string GetDirectory(this Assembly asm)
|
||||||
{
|
{
|
||||||
string codeBase = asm.CodeBase;
|
var codeBase = asm.CodeBase;
|
||||||
UriBuilder uri = new UriBuilder(codeBase);
|
var uri = new UriBuilder(codeBase);
|
||||||
string path = Uri.UnescapeDataString(uri.Path);
|
var path = Uri.UnescapeDataString(uri.Path);
|
||||||
|
|
||||||
return Path.GetDirectoryName(path);
|
return Path.GetDirectoryName(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +144,7 @@ namespace BizHawk.Common
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
foreach (string opt in options)
|
foreach (var opt in options)
|
||||||
{
|
{
|
||||||
if (opt.StartsWith(str))
|
if (opt.StartsWith(str))
|
||||||
{
|
{
|
||||||
|
@ -139,7 +158,7 @@ namespace BizHawk.Common
|
||||||
|
|
||||||
public static void SaveAsHex(this byte[] buffer, TextWriter writer)
|
public static void SaveAsHex(this byte[] buffer, TextWriter writer)
|
||||||
{
|
{
|
||||||
foreach (byte b in buffer)
|
foreach (var b in buffer)
|
||||||
{
|
{
|
||||||
writer.Write("{0:X2}", b);
|
writer.Write("{0:X2}", b);
|
||||||
}
|
}
|
||||||
|
@ -173,7 +192,7 @@ namespace BizHawk.Common
|
||||||
|
|
||||||
public static void SaveAsHex(this short[] buffer, TextWriter writer)
|
public static void SaveAsHex(this short[] buffer, TextWriter writer)
|
||||||
{
|
{
|
||||||
foreach (short b in buffer)
|
foreach (var b in buffer)
|
||||||
{
|
{
|
||||||
writer.Write("{0:X4}", b);
|
writer.Write("{0:X4}", b);
|
||||||
}
|
}
|
||||||
|
@ -182,7 +201,7 @@ namespace BizHawk.Common
|
||||||
|
|
||||||
public static void SaveAsHex(this ushort[] buffer, TextWriter writer)
|
public static void SaveAsHex(this ushort[] buffer, TextWriter writer)
|
||||||
{
|
{
|
||||||
foreach (ushort b in buffer)
|
foreach (var b in buffer)
|
||||||
{
|
{
|
||||||
writer.Write("{0:X4}", b);
|
writer.Write("{0:X4}", b);
|
||||||
}
|
}
|
||||||
|
@ -200,7 +219,7 @@ namespace BizHawk.Common
|
||||||
|
|
||||||
public static void SaveAsHex(this uint[] buffer, TextWriter writer)
|
public static void SaveAsHex(this uint[] buffer, TextWriter writer)
|
||||||
{
|
{
|
||||||
foreach (uint b in buffer)
|
foreach (var b in buffer)
|
||||||
{
|
{
|
||||||
writer.Write("{0:X8}", b);
|
writer.Write("{0:X8}", b);
|
||||||
}
|
}
|
||||||
|
@ -216,7 +235,7 @@ namespace BizHawk.Common
|
||||||
|
|
||||||
for (int i = 0; i < buffer.Length && i * 2 < hex.Length; i++)
|
for (int i = 0; i < buffer.Length && i * 2 < hex.Length; i++)
|
||||||
{
|
{
|
||||||
string bytehex = "" + hex[i * 2] + hex[i * 2 + 1];
|
var bytehex = "" + hex[i * 2] + hex[i * 2 + 1];
|
||||||
buffer[i] = byte.Parse(bytehex, NumberStyles.HexNumber);
|
buffer[i] = byte.Parse(bytehex, NumberStyles.HexNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -224,7 +243,10 @@ namespace BizHawk.Common
|
||||||
public static unsafe void ReadFromHexFast(this byte[] buffer, string hex)
|
public static unsafe void ReadFromHexFast(this byte[] buffer, string hex)
|
||||||
{
|
{
|
||||||
if (buffer.Length * 2 != hex.Length)
|
if (buffer.Length * 2 != hex.Length)
|
||||||
|
{
|
||||||
throw new Exception("Data size mismatch");
|
throw new Exception("Data size mismatch");
|
||||||
|
}
|
||||||
|
|
||||||
int count = buffer.Length;
|
int count = buffer.Length;
|
||||||
fixed (byte* _dst = buffer)
|
fixed (byte* _dst = buffer)
|
||||||
fixed (char* _src = hex)
|
fixed (char* _src = hex)
|
||||||
|
@ -243,10 +265,13 @@ namespace BizHawk.Common
|
||||||
public static void ReadFromHex(this short[] buffer, string hex)
|
public static void ReadFromHex(this short[] buffer, string hex)
|
||||||
{
|
{
|
||||||
if (hex.Length % 4 != 0)
|
if (hex.Length % 4 != 0)
|
||||||
|
{
|
||||||
throw new Exception("Hex value string does not appear to be properly formatted.");
|
throw new Exception("Hex value string does not appear to be properly formatted.");
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < buffer.Length && i * 4 < hex.Length; i++)
|
for (int i = 0; i < buffer.Length && i * 4 < hex.Length; i++)
|
||||||
{
|
{
|
||||||
string shorthex = "" + hex[i * 4] + hex[(i * 4) + 1] + hex[(i * 4) + 2] + hex[(i * 4) + 3];
|
var shorthex = "" + hex[i * 4] + hex[(i * 4) + 1] + hex[(i * 4) + 2] + hex[(i * 4) + 3];
|
||||||
buffer[i] = short.Parse(shorthex, NumberStyles.HexNumber);
|
buffer[i] = short.Parse(shorthex, NumberStyles.HexNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -254,10 +279,13 @@ namespace BizHawk.Common
|
||||||
public static void ReadFromHex(this ushort[] buffer, string hex)
|
public static void ReadFromHex(this ushort[] buffer, string hex)
|
||||||
{
|
{
|
||||||
if (hex.Length % 4 != 0)
|
if (hex.Length % 4 != 0)
|
||||||
|
{
|
||||||
throw new Exception("Hex value string does not appear to be properly formatted.");
|
throw new Exception("Hex value string does not appear to be properly formatted.");
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < buffer.Length && i * 4 < hex.Length; i++)
|
for (int i = 0; i < buffer.Length && i * 4 < hex.Length; i++)
|
||||||
{
|
{
|
||||||
string ushorthex = "" + hex[i * 4] + hex[(i * 4) + 1] + hex[(i * 4) + 2] + hex[(i * 4) + 3];
|
var ushorthex = "" + hex[i * 4] + hex[(i * 4) + 1] + hex[(i * 4) + 2] + hex[(i * 4) + 3];
|
||||||
buffer[i] = ushort.Parse(ushorthex, NumberStyles.HexNumber);
|
buffer[i] = ushort.Parse(ushorthex, NumberStyles.HexNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -272,7 +300,7 @@ namespace BizHawk.Common
|
||||||
for (int i = 0; i < buffer.Length && i * 8 < hex.Length; i++)
|
for (int i = 0; i < buffer.Length && i * 8 < hex.Length; i++)
|
||||||
{
|
{
|
||||||
//string inthex = "" + hex[i * 8] + hex[(i * 8) + 1] + hex[(i * 4) + 2] + hex[(i * 4) + 3] + hex[(i*4
|
//string inthex = "" + hex[i * 8] + hex[(i * 8) + 1] + hex[(i * 4) + 2] + hex[(i * 4) + 3] + hex[(i*4
|
||||||
string inthex = hex.Substring(i * 8, 8);
|
var inthex = hex.Substring(i * 8, 8);
|
||||||
buffer[i] = int.Parse(inthex, NumberStyles.HexNumber);
|
buffer[i] = int.Parse(inthex, NumberStyles.HexNumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,16 @@ namespace BizHawk.Common.NumberExtensions
|
||||||
return options.Any(j => i == j);
|
return options.Any(j => i == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static byte BinToBCD(this byte v)
|
||||||
|
{
|
||||||
|
return (byte)(((v / 10) * 16) + (v % 10));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte BCDtoBin(this byte v)
|
||||||
|
{
|
||||||
|
return (byte)(((v / 16) * 10) + (v % 16));
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Receives a number and returns the number of hexadecimal digits it is
|
/// Receives a number and returns the number of hexadecimal digits it is
|
||||||
/// Note: currently only returns 2, 4, 6, or 8
|
/// Note: currently only returns 2, 4, 6, or 8
|
||||||
|
|
|
@ -325,16 +325,6 @@ namespace BizHawk.Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte BinToBCD(this byte v)
|
|
||||||
{
|
|
||||||
return (byte)(((v / 10) * 16) + (v % 10));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static byte BCDtoBin(this byte v)
|
|
||||||
{
|
|
||||||
return (byte)(((v / 16) * 10) + (v % 16));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string FormatFileSize(long filesize)
|
public static string FormatFileSize(long filesize)
|
||||||
{
|
{
|
||||||
decimal size = filesize;
|
decimal size = filesize;
|
||||||
|
@ -401,24 +391,6 @@ namespace BizHawk.Common
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dict, TKey key)
|
|
||||||
{
|
|
||||||
TValue ret;
|
|
||||||
dict.TryGetValue(key, out ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dict, TKey key, TValue defaultvalue)
|
|
||||||
{
|
|
||||||
TValue ret;
|
|
||||||
if (!dict.TryGetValue(key, out ret))
|
|
||||||
{
|
|
||||||
return defaultvalue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System.IO;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
|
||||||
using BizHawk.Common;
|
using BizHawk.Common;
|
||||||
|
using BizHawk.Common.NumberExtensions;
|
||||||
using BizHawk.Emulation.Common;
|
using BizHawk.Emulation.Common;
|
||||||
using BizHawk.Emulation.DiscSystem;
|
using BizHawk.Emulation.DiscSystem;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue