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

◆ GetVirtualHandleMemoryBlock()

MemoryBlock System.Reflection.Metadata.Ecma335.StringHeap.GetVirtualHandleMemoryBlock ( StringHandle handle)
inlineprivate

Definition at line 111 of file StringHeap.cs.

112 {
113 VirtualHeap orCreateVirtualHeap = VirtualHeap.GetOrCreateVirtualHeap(ref _lazyVirtualHeap);
114 lock (orCreateVirtualHeap)
115 {
116 if (!orCreateVirtualHeap.TryGetMemoryBlock(handle.RawValue, out var block))
117 {
118 byte[] value = handle.StringKind switch
119 {
120 StringKind.Virtual => Encoding.UTF8.GetBytes(GetVirtualString(handle.GetVirtualIndex())),
121 StringKind.WinRTPrefixed => GetNonVirtualStringBytes(handle, MetadataReader.WinRTPrefix),
122 _ => throw ExceptionUtilities.UnexpectedValue(handle.StringKind),
123 };
124 return orCreateVirtualHeap.AddBlob(handle.RawValue, value);
125 }
126 return block;
127 }
128 }
static Exception UnexpectedValue(object value)
static Encoding UTF8
Definition Encoding.cs:526
unsafe byte[] GetNonVirtualStringBytes(StringHandle handle, byte[] prefix)
Definition StringHeap.cs:92
static string GetVirtualString(StringHandle.VirtualIndex index)
Definition StringHeap.cs:71

References System.Reflection.Metadata.Ecma335.StringHeap._lazyVirtualHeap, System.Reflection.Metadata.Ecma335.VirtualHeap.AddBlob(), System.Reflection.Metadata.Ecma335.StringHeap.GetNonVirtualStringBytes(), System.Reflection.Metadata.Ecma335.VirtualHeap.GetOrCreateVirtualHeap(), System.Reflection.Metadata.Ecma335.StringHeap.GetVirtualString(), System.handle, System.Reflection.Metadata.Ecma335.VirtualHeap.TryGetMemoryBlock(), System.Reflection.Internal.ExceptionUtilities.UnexpectedValue(), System.Text.Encoding.UTF8, System.value, and System.Reflection.Metadata.MetadataReader.WinRTPrefix.

Referenced by System.Reflection.Metadata.Ecma335.StringHeap.GetMemoryBlock().