using System.Collections.Generic;
namespace SabreTools.Models.NewExecutable
{
///
/// The segmented EXE header contains general information about the EXE
/// file and contains information on the location and size of the other
/// sections. The Windows loader copies this section, along with other
/// data, into the module table in the system data. The module table is
/// internal data used by the loader to manage the loaded executable
/// modules in the system and to support dynamic linking.
///
///
public sealed class Executable
{
///
/// MS-DOS executable stub
///
#if NET48
public MSDOS.Executable Stub { get; set; }
#else
public MSDOS.Executable? Stub { get; set; }
#endif
///
/// New Executable header
///
#if NET48
public ExecutableHeader Header { get; set; }
#else
public ExecutableHeader? Header { get; set; }
#endif
///
/// Segment table
///
#if NET48
public SegmentTableEntry[] SegmentTable { get; set; }
#else
public SegmentTableEntry?[]? SegmentTable { get; set; }
#endif
///
/// Resource table
///
#if NET48
public ResourceTable ResourceTable { get; set; }
#else
public ResourceTable? ResourceTable { get; set; }
#endif
///
/// Resident-Name table
///
#if NET48
public ResidentNameTableEntry[] ResidentNameTable { get; set; }
#else
public ResidentNameTableEntry?[]? ResidentNameTable { get; set; }
#endif
///
/// Module-Reference table
///
#if NET48
public ModuleReferenceTableEntry[] ModuleReferenceTable { get; set; }
#else
public ModuleReferenceTableEntry?[]? ModuleReferenceTable { get; set; }
#endif
///
/// Imported-Name table
///
#if NET48
public Dictionary ImportedNameTable { get; set; }
#else
public Dictionary? ImportedNameTable { get; set; }
#endif
///
/// Entry table
///
#if NET48
public EntryTableBundle[] EntryTable { get; set; }
#else
public EntryTableBundle?[]? EntryTable { get; set; }
#endif
///
/// Nonresident-Name table
///
#if NET48
public NonResidentNameTableEntry[] NonResidentNameTable { get; set; }
#else
public NonResidentNameTableEntry?[]? NonResidentNameTable { get; set; }
#endif
}
}