using System.Collections.Generic;
namespace SabreTools.Data.Models.UDF
{
///
/// A volume (or disc image) with a UDF / ECMA-167 file system
///
///
/// Logical sectors and logical blocks are 2048 bytes on optical media
/// File system structures are addressed by logical block address (partition reference number + logical block);
/// dictionaries are keyed by ((long)PartitionReferenceNumber << 32) | LogicalBlockNumber
///
///
///
public sealed class Volume
{
///
/// Volume Recognition Sequence starting at sector 16
///
public VolumeStructureDescriptor[] VolumeRecognitionSequence { get; set; } = [];
///
/// Anchor Volume Descriptor Pointer
///
public AnchorVolumeDescriptorPointer? AnchorVolumeDescriptorPointer { get; set; }
///
/// Volume Descriptor Sequence (Primary, Partition, Logical Volume, ... up to the Terminating Descriptor)
///
public Descriptor[] VolumeDescriptorSequence { get; set; } = [];
///
/// File Set Descriptor
///
public FileSetDescriptor? FileSetDescriptor { get; set; }
///
/// File Entries (and Extended File Entries) by logical block address
///
public Dictionary FileEntries { get; set; } = [];
///
/// Allocation Extent Descriptors by logical block address
///
public Dictionary AllocationExtentDescriptors { get; set; } = [];
///
/// File Identifier Descriptors of each directory, by logical block address of the directory's File Entry
///
public Dictionary Directories { get; set; } = [];
}
}