Files
SabreTools.Serialization/SabreTools.Data.Models/NewExecutable/Executable.cs
Matt Nadareski 7689c6dd07 Libraries
This change looks dramatic, but it's just separating out the already-split namespaces into separate top-level folders. In theory, every single one could be built into their own Nuget package. `SabreTools.Serialization` still builds the normal Nuget package that is used by all other projects and includes all namespaces.
2026-03-21 16:26:56 -04:00

68 lines
2.2 KiB
C#

using System.Collections.Generic;
namespace SabreTools.Data.Models.NewExecutable
{
/// <summary>
/// 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.
/// </summary>
/// <see href="https://web.archive.org/web/20240422070115/http://bytepointer.com/resources/win16_ne_exe_format_win3.0.htm"/>
/// <see href="https://wiki.osdev.org/NE"/>
public sealed class Executable
{
/// <summary>
/// MS-DOS executable stub
/// </summary>
public MSDOS.Executable Stub { get; set; } = new();
/// <summary>
/// New Executable header
/// </summary>
public ExecutableHeader Header { get; set; } = new();
/// <summary>
/// Segment table
/// </summary>
public SegmentTableEntry[] SegmentTable { get; set; } = [];
/// <summary>
/// Resource table
/// </summary>
public ResourceTable ResourceTable { get; set; } = new();
/// <summary>
/// Resident-Name table
/// </summary>
public ResidentNameTableEntry[] ResidentNameTable { get; set; } = [];
/// <summary>
/// Module-Reference table
/// </summary>
public ModuleReferenceTableEntry[] ModuleReferenceTable { get; set; } = [];
/// <summary>
/// Imported-Name table
/// </summary>
public Dictionary<ushort, ImportedNameTableEntry> ImportedNameTable { get; set; } = [];
/// <summary>
/// Entry table
/// </summary>
public EntryTableBundle[] EntryTable { get; set; } = [];
/// <summary>
/// Nonresident-Name table
/// </summary>
public NonResidentNameTableEntry[] NonResidentNameTable { get; set; } = [];
/// <summary>
/// Segment relocation data
/// </summary>
public PerSegmentData[] SegmentRelocationData { get; set; } = [];
}
}