Files
SabreTools.Models/Compression/LZX/VerbatimBlockData.cs

79 lines
2.2 KiB
C#
Raw Permalink Normal View History

2023-09-04 00:12:49 -04:00
namespace SabreTools.Models.Compression.LZX
2023-09-04 00:11:04 -04:00
{
/// <summary>
/// The fields of a verbatim block that follow the generic block header
/// </summary>
/// <see href="https://interoperability.blob.core.windows.net/files/MS-PATCH/%5bMS-PATCH%5d.pdf"/>
2023-09-22 20:40:22 -04:00
public class VerbatimBlockData : BlockData
2023-09-04 00:11:04 -04:00
{
/// <summary>
/// Pretree for first 256 elements of main tree
/// </summary>
/// <remarks>20 elements, 4 bits each</remarks>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-10 21:24:10 -04:00
public byte[] PretreeFirst256 { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 21:24:10 -04:00
public byte[]? PretreeFirst256 { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Path lengths of first 256 elements of main tree
/// </summary>
/// <remarks>Encoded using pretree</remarks>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-10 21:24:10 -04:00
public int[] PathLengthsFirst256 { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 21:24:10 -04:00
public int[]? PathLengthsFirst256 { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Pretree for remainder of main tree
/// </summary>
/// <remarks>20 elements, 4 bits each</remarks>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-10 21:24:10 -04:00
public byte[] PretreeRemainder { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 21:24:10 -04:00
public byte[]? PretreeRemainder { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Path lengths of remaining elements of main tree
/// </summary>
/// <remarks>Encoded using pretree</remarks>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-10 21:24:10 -04:00
public int[] PathLengthsRemainder { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 21:24:10 -04:00
public int[]? PathLengthsRemainder { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Pretree for length tree
/// </summary>
/// <remarks>20 elements, 4 bits each</remarks>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-10 21:24:10 -04:00
public byte[] PretreeLengthTree { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 21:24:10 -04:00
public byte[]? PretreeLengthTree { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Path lengths of elements in length tree
/// </summary>
/// <remarks>Encoded using pretree</remarks>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-10 21:24:10 -04:00
public int[] PathLengthsLengthTree { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 21:24:10 -04:00
public int[]? PathLengthsLengthTree { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
2023-09-22 20:47:29 -04:00
/// <summary>
/// Token sequence (matches and literals)
/// </summary>
/// <remarks>Variable</remarks>
#if NET48
public byte[] TokenSequence { get; set; }
#else
public byte[]? TokenSequence { get; set; }
#endif
2023-09-04 00:11:04 -04:00
}
}