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

◆ PeekCompressedInteger()

unsafe int System.Reflection.Internal.MemoryBlock.PeekCompressedInteger ( int offset,
out int numberOfBytesRead )
inlinepackage

Definition at line 132 of file MemoryBlock.cs.

133 {
135 byte* ptr = Pointer + offset;
136 long num = Length - offset;
137 if (num == 0L)
138 {
139 numberOfBytesRead = 0;
140 return int.MaxValue;
141 }
142 byte b = *ptr;
143 if ((b & 0x80) == 0)
144 {
145 numberOfBytesRead = 1;
146 return b;
147 }
148 if ((b & 0x40) == 0)
149 {
150 if (num >= 2)
151 {
152 numberOfBytesRead = 2;
153 return ((b & 0x3F) << 8) | ptr[1];
154 }
155 }
156 else if ((b & 0x20) == 0 && num >= 4)
157 {
158 numberOfBytesRead = 4;
159 return ((b & 0x1F) << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3];
160 }
161 numberOfBytesRead = 0;
162 return int.MaxValue;
163 }
void CheckBounds(int offset, int byteCount)

References System.Reflection.Internal.MemoryBlock.CheckBounds(), System.L, System.Reflection.Internal.MemoryBlock.Length, and System.offset.

Referenced by System.Reflection.Metadata.Ecma335.BlobHeap.GetBytes(), System.Reflection.Internal.MemoryBlock.PeekHeapValueOffsetAndSize(), System.Reflection.Metadata.BlobReader.ReadCompressedIntegerOrInvalid(), and System.Reflection.Metadata.BlobReader.TryReadCompressedSignedInteger().