namespace SabreTools.Models.LinearExecutable
{
///
/// The `LINEAR` executable-file header contains information that the loader requires for
/// segmented executable files. This information includes the linker version number, data
/// specified by linker, data specified by resource compiler, tables of segment data, tables
/// of resource data, and so on. The following illustrations shows the LE file header:
///
///
///
public sealed class Executable
{
///
/// MS-DOS executable stub
///
#if NET48
public MSDOS.Executable Stub { get; set; }
#else
public MSDOS.Executable? Stub { get; set; }
#endif
///
/// Information block
///
#if NET48
public InformationBlock InformationBlock { get; set; }
#else
public InformationBlock? InformationBlock { get; set; }
#endif
///
/// Object table
///
#if NET48
public ObjectTableEntry[] ObjectTable { get; set; }
#else
public ObjectTableEntry[]? ObjectTable { get; set; }
#endif
///
/// Object page map
///
#if NET48
public ObjectPageMapEntry[] ObjectPageMap { get; set; }
#else
public ObjectPageMapEntry[]? ObjectPageMap { get; set; }
#endif
// TODO: Object iterate data map table (Undefined)
///
/// Resource table
///
#if NET48
public ResourceTableEntry[] ResourceTable { get; set; }
#else
public ResourceTableEntry[]? ResourceTable { get; set; }
#endif
///
/// Resident Name table
///
#if NET48
public ResidentNamesTableEntry[] ResidentNamesTable { get; set; }
#else
public ResidentNamesTableEntry[]? ResidentNamesTable { get; set; }
#endif
///
/// Entry table
///
#if NET48
public EntryTableBundle[] EntryTable { get; set; }
#else
public EntryTableBundle[]? EntryTable { get; set; }
#endif
///
/// Module format directives table (optional)
///
#if NET48
public ModuleFormatDirectivesTableEntry[] ModuleFormatDirectivesTable { get; set; }
#else
public ModuleFormatDirectivesTableEntry[]? ModuleFormatDirectivesTable { get; set; }
#endif
///
/// Verify record directive table (optional)
///
#if NET48
public VerifyRecordDirectiveTableEntry[] VerifyRecordDirectiveTable { get; set; }
#else
public VerifyRecordDirectiveTableEntry[]? VerifyRecordDirectiveTable { get; set; }
#endif
///
/// Fix-up page table
///
#if NET48
public FixupPageTableEntry[] FixupPageTable { get; set; }
#else
public FixupPageTableEntry[]? FixupPageTable { get; set; }
#endif
///
/// Fix-up record table
///
#if NET48
public FixupRecordTableEntry[] FixupRecordTable { get; set; }
#else
public FixupRecordTableEntry[]? FixupRecordTable { get; set; }
#endif
///
/// Import module name table
///
#if NET48
public ImportModuleNameTableEntry[] ImportModuleNameTable { get; set; }
#else
public ImportModuleNameTableEntry[]? ImportModuleNameTable { get; set; }
#endif
///
/// Import procedure name table
///
#if NET48
public ImportModuleProcedureNameTableEntry[] ImportModuleProcedureNameTable { get; set; }
#else
public ImportModuleProcedureNameTableEntry[]? ImportModuleProcedureNameTable { get; set; }
#endif
///
/// Per-Page checksum table
///
#if NET48
public PerPageChecksumTableEntry[] PerPageChecksumTable { get; set; }
#else
public PerPageChecksumTableEntry[]? PerPageChecksumTable { get; set; }
#endif
///
/// Non-Resident Name table
///
#if NET48
public NonResidentNamesTableEntry[] NonResidentNamesTable { get; set; }
#else
public NonResidentNamesTableEntry[]? NonResidentNamesTable { get; set; }
#endif
// TODO: Non-resident directives data (Undefined)
///
/// Debug information
///
#if NET48
public DebugInformation DebugInformation { get; set; }
#else
public DebugInformation? DebugInformation { get; set; }
#endif
}
}