Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
FieldRVATableReader.cs
Go to the documentation of this file.
2
4
5internal readonly struct FieldRVATableReader
6{
7 internal readonly int NumberOfRows;
8
9 private readonly bool _IsFieldTableRowRefSizeSmall;
10
11 private readonly int _RvaOffset;
12
13 private readonly int _FieldOffset;
14
15 internal readonly int RowSize;
16
17 internal readonly MemoryBlock Block;
18
19 internal FieldRVATableReader(int numberOfRows, bool declaredSorted, int fieldTableRowRefSize, MemoryBlock containingBlock, int containingBlockOffset)
20 {
21 NumberOfRows = numberOfRows;
22 _IsFieldTableRowRefSizeSmall = fieldTableRowRefSize == 2;
23 _RvaOffset = 0;
25 RowSize = _FieldOffset + fieldTableRowRefSize;
26 Block = containingBlock.GetMemoryBlockAt(containingBlockOffset, RowSize * numberOfRows);
27 if (!declaredSorted && !CheckSorted())
28 {
30 }
31 }
32
33 internal int GetRva(int rowId)
34 {
35 int num = (rowId - 1) * RowSize;
36 return Block.PeekInt32(num + _RvaOffset);
37 }
38
39 internal int FindFieldRvaRowId(int fieldDefRowId)
40 {
42 return num + 1;
43 }
44
49}
static void TableNotSorted(TableIndex tableIndex)
Definition Throw.cs:250
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)
FieldRVATableReader(int numberOfRows, bool declaredSorted, int fieldTableRowRefSize, MemoryBlock containingBlock, int containingBlockOffset)