using SabreTools.Data.Models.NewExecutable;
namespace SabreTools.Data.Extensions
{
public static class NewExecutableExtensions
{
///
/// Determine if a resource type information entry is an integer or offset
///
/// Resource type information entry to check
/// True if the entry is an integer type, false if an offset, null on error
public static bool IsIntegerType(this ResourceTypeInformationEntry entry)
=> (entry.TypeID & 0x8000) != 0;
///
/// Determine if a resource type resource entry is an integer or offset
///
/// Resource type resource entry to check
/// True if the entry is an integer type, false if an offset, null on error
public static bool IsIntegerType(this ResourceTypeResourceEntry entry)
=> (entry.ResourceID & 0x8000) != 0;
///
/// Get the segment entry type for an entry table bundle
///
/// Entry table bundle to check
/// SegmentEntryType corresponding to the type
public static SegmentEntryType GetEntryType(this EntryTableBundle entry)
{
// Determine the entry type based on segment indicator
if (entry.SegmentIndicator == 0x00)
return SegmentEntryType.Unused;
else if (entry.SegmentIndicator >= 0x01 && entry.SegmentIndicator <= 0xFE)
return SegmentEntryType.FixedSegment;
else if (entry.SegmentIndicator == 0xFF)
return SegmentEntryType.MoveableSegment;
// We should never get here
return SegmentEntryType.Unused;
}
}
}