namespace SabreTools.Models.Compression.LZX
{
///
/// An aligned offset block is identical to the verbatim block except for the presence of the aligned offset
/// tree preceding the other trees.
///
///
public class AlignedOffsetBlock
{
///
/// Generic block header
///
#if NET48
public BlockHeader Header;
#else
public BlockHeader? Header;
#endif
///
/// Aligned offset tree
///
/// 8 elements, 3 bits each
#if NET48
public byte[] AlignedOffsetTree;
#else
public byte[]? AlignedOffsetTree;
#endif
///
/// Pretree for first 256 elements of main tree
///
/// 20 elements, 4 bits each
#if NET48
public byte[] PretreeFirst256;
#else
public byte[]? PretreeFirst256;
#endif
///
/// Path lengths of first 256 elements of main tree
///
/// Encoded using pretree
#if NET48
public int[] PathLengthsFirst256;
#else
public int[]? PathLengthsFirst256;
#endif
///
/// Pretree for remainder of main tree
///
/// 20 elements, 4 bits each
#if NET48
public byte[] PretreeRemainder;
#else
public byte[]? PretreeRemainder;
#endif
///
/// Path lengths of remaining elements of main tree
///
/// Encoded using pretree
#if NET48
public int[] PathLengthsRemainder;
#else
public int[]? PathLengthsRemainder;
#endif
///
/// Pretree for length tree
///
/// 20 elements, 4 bits each
#if NET48
public byte[] PretreeLengthTree;
#else
public byte[]? PretreeLengthTree;
#endif
///
/// Path lengths of elements in length tree
///
/// Encoded using pretree
#if NET48
public int[] PathLengthsLengthTree;
#else
public int[]? PathLengthsLengthTree;
#endif
// Entry Comments Size
// ---------------------------------------------------------------------------------------
// Token sequence (matches and literals) Specified in section 2.6 Variable
}
}