// 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;
}
}
}