// dnlib: See LICENSE.txt for more info
using dnlib.IO;
namespace dnlib.DotNet.MD {
///
/// Represents the #Strings stream
///
public sealed class StringsStream : HeapStream {
///
public StringsStream() {
}
///
public StringsStream(DataReaderFactory mdReaderFactory, uint metadataBaseOffset, StreamHeader streamHeader)
: base(mdReaderFactory, metadataBaseOffset, streamHeader) {
}
///
/// Reads a
///
/// Offset of string
/// A instance or null if invalid offset
public UTF8String Read(uint offset) {
if (offset >= StreamLength)
return null;
byte[] data;
var reader = dataReader;
reader.Position = offset;
data = reader.TryReadBytesUntil(0);
if (data is null)
return null;
return new UTF8String(data);
}
///
/// Reads a . The empty string is returned if
/// is invalid.
///
/// Offset of string
/// A instance
public UTF8String ReadNoNull(uint offset) => Read(offset) ?? UTF8String.Empty;
}
}