Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ImplMapTableReader.cs
Go to the documentation of this file.
2
4
5internal readonly struct ImplMapTableReader
6{
7 internal readonly int NumberOfRows;
8
9 private readonly bool _IsModuleRefTableRowRefSizeSmall;
10
11 private readonly bool _IsMemberForwardRowRefSizeSmall;
12
13 private readonly bool _IsStringHeapRefSizeSmall;
14
15 private readonly int _FlagsOffset;
16
17 private readonly int _MemberForwardedOffset;
18
19 private readonly int _ImportNameOffset;
20
21 private readonly int _ImportScopeOffset;
22
23 internal readonly int RowSize;
24
25 internal readonly MemoryBlock Block;
26
27 internal ImplMapTableReader(int numberOfRows, bool declaredSorted, int moduleRefTableRowRefSize, int memberForwardedRefSize, int stringHeapRefSize, MemoryBlock containingBlock, int containingBlockOffset)
28 {
29 NumberOfRows = numberOfRows;
30 _IsModuleRefTableRowRefSizeSmall = moduleRefTableRowRefSize == 2;
31 _IsMemberForwardRowRefSizeSmall = memberForwardedRefSize == 2;
32 _IsStringHeapRefSizeSmall = stringHeapRefSize == 2;
33 _FlagsOffset = 0;
35 _ImportNameOffset = _MemberForwardedOffset + memberForwardedRefSize;
36 _ImportScopeOffset = _ImportNameOffset + stringHeapRefSize;
37 RowSize = _ImportScopeOffset + moduleRefTableRowRefSize;
38 Block = containingBlock.GetMemoryBlockAt(containingBlockOffset, RowSize * numberOfRows);
39 if (!declaredSorted && !CheckSorted())
40 {
42 }
43 }
44
53
59
61 {
62 uint searchCodedTag = MemberForwardedTag.ConvertMethodDefToTag(methodDef);
63 return BinarySearchTag(searchCodedTag);
64 }
65
66 private int BinarySearchTag(uint searchCodedTag)
67 {
69 return num + 1;
70 }
71
76}
static uint ConvertMethodDefToTag(MethodDefinitionHandle methodDef)
static EntityHandle ConvertToHandle(uint memberForwarded)
static void TableNotSorted(TableIndex tableIndex)
Definition Throw.cs:250
int PeekReference(int offset, bool smallRefSize)
unsafe ushort PeekUInt16(int offset)
unsafe MemoryBlock GetMemoryBlockAt(int offset, int length)
bool IsOrderedByReferenceAscending(int rowSize, int referenceOffset, bool isReferenceSmall)
int BinarySearchReference(int rowCount, int rowSize, int referenceOffset, uint referenceValue, bool isReferenceSmall)
int PeekHeapReference(int offset, bool smallRefSize)
uint PeekTaggedReference(int offset, bool smallRefSize)
int FindImplForMethod(MethodDefinitionHandle methodDef)
ImplMapTableReader(int numberOfRows, bool declaredSorted, int moduleRefTableRowRefSize, int memberForwardedRefSize, int stringHeapRefSize, MemoryBlock containingBlock, int containingBlockOffset)
static ModuleReferenceHandle FromRowId(int rowId)
static StringHandle FromOffset(int heapOffset)