Use accelerator table type

This commit is contained in:
Matt Nadareski
2026-02-12 13:04:37 -05:00
parent a2b392234d
commit dc86ed1456
2 changed files with 8 additions and 7 deletions

View File

@@ -157,7 +157,7 @@ namespace SabreTools.Data.Extensions
/// </summary>
/// <param name="entry">Resource data entry to parse into an accelerator table resource</param>
/// <returns>A filled accelerator table resource on success, null on error</returns>
public static AcceleratorTableEntry[]? AsAcceleratorTableResource(this Models.PortableExecutable.Resource.DataEntry? entry)
public static AcceleratorTable? AsAcceleratorTableResource(this Models.PortableExecutable.Resource.DataEntry? entry)
{
// If we have data that's invalid for this resource type, we can't do anything
if (entry?.Data is null || entry.Data.Length % 8 != 0)
@@ -170,12 +170,13 @@ namespace SabreTools.Data.Extensions
int offset = 0;
// Create the output object
var table = new AcceleratorTableEntry[count];
var table = new AcceleratorTable();
table.Entries = new AcceleratorTableEntry[count];
// Read in the table
for (int i = 0; i < count; i++)
{
table[i] = ParseAcceleratorTableEntry(entry.Data, ref offset);
table.Entries[i] = ParseAcceleratorTableEntry(entry.Data, ref offset);
}
return table;

View File

@@ -1317,18 +1317,18 @@ namespace SabreTools.Serialization.Wrappers
{
string padding = new(' ', (level + 1) * 2);
AcceleratorTableEntry[]? acceleratorTable = null;
AcceleratorTable? acceleratorTable = null;
try { acceleratorTable = entry.AsAcceleratorTableResource(); } catch { }
if (acceleratorTable is null)
if (acceleratorTable?.Entries is null)
{
builder.AppendLine($"{padding}Accelerator table resource found, but malformed");
return;
}
for (int i = 0; i < acceleratorTable.Length; i++)
for (int i = 0; i < acceleratorTable.Entries.Length; i++)
{
var acceleratorTableEntry = acceleratorTable[i];
var acceleratorTableEntry = acceleratorTable.Entries[i];
builder.AppendLine($"{padding}Accelerator Table Entry {i}:");
builder.AppendLine($"{padding} Flags: {acceleratorTableEntry.Flags} (0x{acceleratorTableEntry.Flags:X})");
builder.AppendLine(acceleratorTableEntry.Ansi, $"{padding} Ansi");