namespace SabreTools.Data.Models.GCZ
{
///
/// Represents a parsed GCZ (GameCube Zip) compressed disc image.
/// Contains header metadata and block lookup tables.
/// Actual compressed block data is accessed via the source stream.
///
public class DiscImage
{
///
/// GCZ file header
///
public GczHeader Header { get; set; } = new();
///
/// Block pointer table (one entry per block).
/// Each value encodes both the offset of the block within the compressed data section
/// and a compression flag in the top bit:
///
/// - Top bit CLEAR -> block is zlib/deflate-compressed at that offset.
/// - Top bit SET -> block is stored uncompressed at that offset.
///
/// Offset is value & ~UncompressedFlag.
///
public ulong[] BlockPointers { get; set; } = [];
///
/// Adler-32 checksums of the uncompressed block data, one per block.
/// Used for integrity verification after decompression.
///
public uint[] BlockHashes { get; set; } = [];
}
}