// dnlib: See LICENSE.txt for more info using System; using dnlib.IO; namespace dnlib.W32Resources { /// /// A resource blob /// public sealed class ResourceData : ResourceDirectoryEntry { readonly DataReaderFactory dataReaderFactory; readonly uint resourceStartOffset; readonly uint resourceLength; uint codePage; uint reserved; /// /// Gets the data reader /// /// public DataReader CreateReader() => dataReaderFactory.CreateReader(resourceStartOffset, resourceLength); /// /// Gets/sets the code page /// public uint CodePage { get => codePage; set => codePage = value; } /// /// Gets/sets the reserved field /// public uint Reserved { get => reserved; set => reserved = value; } /// /// Constructor /// /// Name public ResourceData(ResourceName name) : this(name, ByteArrayDataReaderFactory.Create(Array2.Empty(), filename: null), 0, 0) { } /// /// Constructor /// /// Data reader factory /// Offset of resource data /// Length of resource data /// Name public ResourceData(ResourceName name, DataReaderFactory dataReaderFactory, uint offset, uint length) : this(name, dataReaderFactory, offset, length, 0, 0) { } /// /// Constructor /// /// Data reader factory /// Offset of resource data /// Length of resource data /// Name /// Code page /// Reserved value public ResourceData(ResourceName name, DataReaderFactory dataReaderFactory, uint offset, uint length, uint codePage, uint reserved) : base(name) { this.dataReaderFactory = dataReaderFactory ?? throw new ArgumentNullException(nameof(dataReaderFactory)); resourceStartOffset = offset; resourceLength = length; this.codePage = codePage; this.reserved = reserved; } } }