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

◆ InitializeStreamReaders()

void System.Reflection.Metadata.MetadataReader.InitializeStreamReaders ( in MemoryBlock metadataRoot,
StreamHeader[] streamHeaders,
out MetadataStreamKind metadataStreamKind,
out MemoryBlock metadataTableStream,
out MemoryBlock standalonePdbStream )
inlineprivate

Definition at line 436 of file MetadataReader.cs.

437 {
441 for (int i = 0; i < streamHeaders.Length; i++)
442 {
444 switch (streamHeader.Name)
445 {
446 case "#Strings":
447 if (metadataRoot.Length < streamHeader.Offset + streamHeader.Size)
448 {
449 throw new BadImageFormatException(System.SR.NotEnoughSpaceForStringStream);
450 }
451 StringHeap = new StringHeap(metadataRoot.GetMemoryBlockAt((int)streamHeader.Offset, streamHeader.Size), _metadataKind);
452 break;
453 case "#Blob":
454 if (metadataRoot.Length < streamHeader.Offset + streamHeader.Size)
455 {
456 throw new BadImageFormatException(System.SR.NotEnoughSpaceForBlobStream);
457 }
458 BlobHeap = new BlobHeap(metadataRoot.GetMemoryBlockAt((int)streamHeader.Offset, streamHeader.Size), _metadataKind);
459 break;
460 case "#GUID":
461 if (metadataRoot.Length < streamHeader.Offset + streamHeader.Size)
462 {
463 throw new BadImageFormatException(System.SR.NotEnoughSpaceForGUIDStream);
464 }
465 GuidHeap = new GuidHeap(metadataRoot.GetMemoryBlockAt((int)streamHeader.Offset, streamHeader.Size));
466 break;
467 case "#US":
468 if (metadataRoot.Length < streamHeader.Offset + streamHeader.Size)
469 {
470 throw new BadImageFormatException(System.SR.NotEnoughSpaceForBlobStream);
471 }
472 UserStringHeap = new UserStringHeap(metadataRoot.GetMemoryBlockAt((int)streamHeader.Offset, streamHeader.Size));
473 break;
474 case "#~":
475 if (metadataRoot.Length < streamHeader.Offset + streamHeader.Size)
476 {
477 throw new BadImageFormatException(System.SR.NotEnoughSpaceForMetadataStream);
478 }
480 metadataTableStream = metadataRoot.GetMemoryBlockAt((int)streamHeader.Offset, streamHeader.Size);
481 break;
482 case "#-":
483 if (metadataRoot.Length < streamHeader.Offset + streamHeader.Size)
484 {
485 throw new BadImageFormatException(System.SR.NotEnoughSpaceForMetadataStream);
486 }
488 metadataTableStream = metadataRoot.GetMemoryBlockAt((int)streamHeader.Offset, streamHeader.Size);
489 break;
490 case "#JTD":
491 if (metadataRoot.Length < streamHeader.Offset + streamHeader.Size)
492 {
493 throw new BadImageFormatException(System.SR.NotEnoughSpaceForMetadataStream);
494 }
495 IsMinimalDelta = true;
496 break;
497 case "#Pdb":
498 if (metadataRoot.Length < streamHeader.Offset + streamHeader.Size)
499 {
500 throw new BadImageFormatException(System.SR.NotEnoughSpaceForMetadataStream);
501 }
502 standalonePdbStream = metadataRoot.GetMemoryBlockAt((int)streamHeader.Offset, streamHeader.Size);
503 break;
504 }
505 }
507 {
508 throw new BadImageFormatException(System.SR.InvalidMetadataStreamFormat);
509 }
510 }
static string InvalidMetadataStreamFormat
Definition SR.cs:90
static string NotEnoughSpaceForMetadataStream
Definition SR.cs:88
static string NotEnoughSpaceForGUIDStream
Definition SR.cs:86
static string NotEnoughSpaceForStringStream
Definition SR.cs:82
static string NotEnoughSpaceForBlobStream
Definition SR.cs:84
Definition SR.cs:7

References System.Reflection.Metadata.MetadataReader._metadataKind, System.Reflection.Metadata.MetadataReader.BlobHeap, System.Reflection.Metadata.MetadataReader.GuidHeap, System.SR.InvalidMetadataStreamFormat, System.Reflection.Metadata.MetadataReader.IsMinimalDelta, System.SR.NotEnoughSpaceForBlobStream, System.SR.NotEnoughSpaceForGUIDStream, System.SR.NotEnoughSpaceForMetadataStream, System.SR.NotEnoughSpaceForStringStream, System.Reflection.Metadata.MetadataReader.StringHeap, and System.Reflection.Metadata.MetadataReader.UserStringHeap.

Referenced by System.Reflection.Metadata.MetadataReader.MetadataReader().