Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ MetadataReader() [4/4]

unsafe System.Reflection.Metadata.MetadataReader.MetadataReader ( byte * metadata,
int length,
MetadataReaderOptions options,
MetadataStringDecoder? utf8Decoder,
object? memoryOwner )
inlinepackage

Definition at line 323 of file MetadataReader.cs.

324 {
325 if (length < 0)
326 {
327 Throw.ArgumentOutOfRange("length");
328 }
329 if (metadata == null)
330 {
331 Throw.ArgumentNull("metadata");
332 }
333 if (utf8Decoder == null)
334 {
335 utf8Decoder = MetadataStringDecoder.DefaultUTF8;
336 }
337 if (!(utf8Decoder.Encoding is UTF8Encoding))
338 {
339 Throw.InvalidArgument(System.SR.MetadataStringDecoderEncodingMustBeUtf8, "utf8Decoder");
340 }
341 Block = new MemoryBlock(metadata, length);
345 BlobReader memReader = new BlobReader(Block);
351 if (standalonePdbStream.Length > 0)
352 {
353 int pdbStreamOffset = (int)(standalonePdbStream.Pointer - metadata);
355 }
356 else
357 {
359 }
360 BlobReader reader = new BlobReader(metadataTableStream);
362 InitializeTableReaders(reader.GetMemoryBlockAt(0, reader.RemainingBytes), heapSizes, metadataTableRowCounts, externalTableRowCounts);
363 if (standalonePdbStream.Length == 0 && ModuleTable.NumberOfRows < 1)
364 {
365 throw new BadImageFormatException(System.SR.Format(System.SR.ModuleTableInvalidNumberOfRows, ModuleTable.NumberOfRows));
366 }
367 NamespaceCache = new NamespaceCache(this);
368 if (_metadataKind != 0)
369 {
371 }
372 }
readonly DebugMetadataHeader _debugMetadataHeader
void ReadMetadataTableHeader(ref BlobReader reader, out HeapSizes heapSizes, out int[] metadataTableRowCounts, out TableMask sortedTables)
MetadataKind GetMetadataKind(string versionString)
readonly MetadataStreamKind _metadataStreamKind
StreamHeader[] ReadStreamHeaders(ref BlobReader memReader)
static void ReadStandalonePortablePdbStream(MemoryBlock pdbStreamBlock, int pdbStreamOffset, out DebugMetadataHeader debugMetadataHeader, out int[] externalTableRowCounts)
void InitializeTableReaders(MemoryBlock metadataTablesMemoryBlock, HeapSizes heapSizes, int[] rowCounts, int[] externalRowCountsOpt)
readonly MetadataReaderOptions _options
void InitializeStreamReaders(in MemoryBlock metadataRoot, StreamHeader[] streamHeaders, out MetadataStreamKind metadataStreamKind, out MemoryBlock metadataTableStream, out MemoryBlock standalonePdbStream)
void ReadMetadataHeader(ref BlobReader memReader, out string versionString)
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string ModuleTableInvalidNumberOfRows
Definition SR.cs:60
static string MetadataStringDecoderEncodingMustBeUtf8
Definition SR.cs:126
Definition SR.cs:7

References System.Reflection.Metadata.MetadataReader._debugMetadataHeader, System.Reflection.Metadata.MetadataReader._memoryOwnerObj, System.Reflection.Metadata.MetadataReader._metadataKind, System.Reflection.Metadata.MetadataReader._metadataStreamKind, System.Reflection.Metadata.MetadataReader._options, System.Reflection.Metadata.MetadataReader._sortedTables, System.Reflection.Metadata.MetadataReader._versionString, System.Reflection.Throw.ArgumentNull(), System.Reflection.Throw.ArgumentOutOfRange(), System.Reflection.Metadata.MetadataReader.Block, System.Reflection.Metadata.MetadataStringDecoder.DefaultUTF8, System.Reflection.Metadata.MetadataReader.FindMscorlibAssemblyRefNoProjection(), System.SR.Format(), System.Reflection.Metadata.BlobReader.GetMemoryBlockAt(), System.Reflection.Metadata.MetadataReader.GetMetadataKind(), System.Reflection.Metadata.MetadataReader.InitializeStreamReaders(), System.Reflection.Metadata.MetadataReader.InitializeTableReaders(), System.Reflection.Throw.InvalidArgument(), System.length, System.SR.MetadataStringDecoderEncodingMustBeUtf8, System.Reflection.Metadata.MetadataReader.ModuleTable, System.SR.ModuleTableInvalidNumberOfRows, System.Reflection.Metadata.MetadataReader.NamespaceCache, System.Reflection.Metadata.Ecma335.ModuleTableReader.NumberOfRows, System.options, System.Reflection.Metadata.MetadataReader.ReadMetadataHeader(), System.Reflection.Metadata.MetadataReader.ReadMetadataTableHeader(), System.Reflection.Metadata.MetadataReader.ReadStandalonePortablePdbStream(), System.Reflection.Metadata.MetadataReader.ReadStreamHeaders(), System.Reflection.Metadata.BlobReader.RemainingBytes, System.Reflection.Metadata.MetadataReader.UTF8Decoder, and System.Reflection.Metadata.MetadataReader.WinMDMscorlibRef.