Add both-endian StringBuilder extensions

This has to use a new name for the both-endian handling because otherwise the implicit type handling will otherwise cause compilation errors.
This commit is contained in:
Matt Nadareski
2025-10-28 09:49:38 -04:00
parent db1f94775b
commit 1e94163693

View File

@@ -1,5 +1,6 @@
using System;
using System.Text;
using SabreTools.Numerics;
namespace SabreTools.Data.Printers
{
@@ -34,6 +35,19 @@ namespace SabreTools.Data.Printers
return sb.AppendLine($"{prefixString}: {valueString}");
}
/// <summary>
/// Append a line containing a potentially both-endian Int8 to a StringBuilder
/// </summary>
public static StringBuilder AppendLineBothEndian(this StringBuilder sb, BothInt8? value, string prefixString)
{
value ??= 0;
if (value.IsValid)
return sb.AppendLine(value, prefixString);
sb = sb.AppendLine(value.LittleEndian, $"{prefixString} (Little-Endian)");
return sb.AppendLine(value.BigEndian, $"{prefixString} (Big-Endian)");
}
/// <summary>
/// Append a line containing a UInt8 to a StringBuilder
/// </summary>
@@ -44,6 +58,19 @@ namespace SabreTools.Data.Printers
return sb.AppendLine($"{prefixString}: {valueString}");
}
/// <summary>
/// Append a line containing a potentially both-endian UInt8 to a StringBuilder
/// </summary>
public static StringBuilder AppendLineBothEndian(this StringBuilder sb, BothUInt8? value, string prefixString)
{
value ??= 0;
if (value.IsValid)
return sb.AppendLine(value, prefixString);
sb = sb.AppendLine(value.LittleEndian, $"{prefixString} (Little-Endian)");
return sb.AppendLine(value.BigEndian, $"{prefixString} (Big-Endian)");
}
/// <summary>
/// Append a line containing a Int16 to a StringBuilder
/// </summary>
@@ -54,6 +81,19 @@ namespace SabreTools.Data.Printers
return sb.AppendLine($"{prefixString}: {valueString}");
}
/// <summary>
/// Append a line containing a potentially both-endian Int16 to a StringBuilder
/// </summary>
public static StringBuilder AppendLineBothEndian(this StringBuilder sb, BothInt16? value, string prefixString)
{
value ??= 0;
if (value.IsValid)
return sb.AppendLine(value, prefixString);
sb = sb.AppendLine(value.LittleEndian, $"{prefixString} (Little-Endian)");
return sb.AppendLine(value.BigEndian, $"{prefixString} (Big-Endian)");
}
/// <summary>
/// Append a line containing a UInt16 to a StringBuilder
/// </summary>
@@ -64,6 +104,19 @@ namespace SabreTools.Data.Printers
return sb.AppendLine($"{prefixString}: {valueString}");
}
/// <summary>
/// Append a line containing a potentially both-endian UInt16 to a StringBuilder
/// </summary>
public static StringBuilder AppendLineBothEndian(this StringBuilder sb, BothUInt16? value, string prefixString)
{
value ??= 0;
if (value.IsValid)
return sb.AppendLine(value, prefixString);
sb = sb.AppendLine(value.LittleEndian, $"{prefixString} (Little-Endian)");
return sb.AppendLine(value.BigEndian, $"{prefixString} (Big-Endian)");
}
/// <summary>
/// Append a line containing a Int32 to a StringBuilder
/// </summary>
@@ -74,6 +127,19 @@ namespace SabreTools.Data.Printers
return sb.AppendLine($"{prefixString}: {valueString}");
}
/// <summary>
/// Append a line containing a potentially both-endian Int32 to a StringBuilder
/// </summary>
public static StringBuilder AppendLineBothEndian(this StringBuilder sb, BothInt32? value, string prefixString)
{
value ??= 0;
if (value.IsValid)
return sb.AppendLine(value, prefixString);
sb = sb.AppendLine(value.LittleEndian, $"{prefixString} (Little-Endian)");
return sb.AppendLine(value.BigEndian, $"{prefixString} (Big-Endian)");
}
/// <summary>
/// Append a line containing a UInt32 to a StringBuilder
/// </summary>
@@ -84,6 +150,19 @@ namespace SabreTools.Data.Printers
return sb.AppendLine($"{prefixString}: {valueString}");
}
/// <summary>
/// Append a line containing a potentially both-endian UInt32 to a StringBuilder
/// </summary>
public static StringBuilder AppendLineBothEndian(this StringBuilder sb, BothUInt32? value, string prefixString)
{
value ??= 0;
if (value.IsValid)
return sb.AppendLine(value, prefixString);
sb = sb.AppendLine(value.LittleEndian, $"{prefixString} (Little-Endian)");
return sb.AppendLine(value.BigEndian, $"{prefixString} (Big-Endian)");
}
/// <summary>
/// Append a line containing a Single to a StringBuilder
/// </summary>
@@ -104,6 +183,19 @@ namespace SabreTools.Data.Printers
return sb.AppendLine($"{prefixString}: {valueString}");
}
/// <summary>
/// Append a line containing a potentially both-endian Int64 to a StringBuilder
/// </summary>
public static StringBuilder AppendLineBothEndian(this StringBuilder sb, BothInt64? value, string prefixString)
{
value ??= 0;
if (value.IsValid)
return sb.AppendLine(value, prefixString);
sb = sb.AppendLine(value.LittleEndian, $"{prefixString} (Little-Endian)");
return sb.AppendLine(value.BigEndian, $"{prefixString} (Big-Endian)");
}
/// <summary>
/// Append a line containing a UInt64 to a StringBuilder
/// </summary>
@@ -114,6 +206,19 @@ namespace SabreTools.Data.Printers
return sb.AppendLine($"{prefixString}: {valueString}");
}
/// <summary>
/// Append a line containing a potentially both-endian UInt64 to a StringBuilder
/// </summary>
public static StringBuilder AppendLineBothEndian(this StringBuilder sb, BothUInt64? value, string prefixString)
{
value ??= 0;
if (value.IsValid)
return sb.AppendLine(value, prefixString);
sb = sb.AppendLine(value.LittleEndian, $"{prefixString} (Little-Endian)");
return sb.AppendLine(value.BigEndian, $"{prefixString} (Big-Endian)");
}
/// <summary>
/// Append a line containing a Double to a StringBuilder
/// </summary>