Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
FieldLayoutTableReader.cs
Go to the documentation of this file.
2
4
5internal readonly struct FieldLayoutTableReader
6{
7 internal readonly int NumberOfRows;
8
9 private readonly bool _IsFieldTableRowRefSizeSmall;
10
11 private readonly int _OffsetOffset;
12
13 private readonly int _FieldOffset;
14
15 internal readonly int RowSize;
16
17 internal readonly MemoryBlock Block;
18
19 internal FieldLayoutTableReader(int numberOfRows, bool declaredSorted, int fieldTableRowRefSize, MemoryBlock containingBlock, int containingBlockOffset)
20 {
21 NumberOfRows = numberOfRows;
22 _IsFieldTableRowRefSizeSmall = fieldTableRowRefSize == 2;
23 _OffsetOffset = 0;
25 RowSize = _FieldOffset + fieldTableRowRefSize;
26 Block = containingBlock.GetMemoryBlockAt(containingBlockOffset, RowSize * numberOfRows);
27 if (!declaredSorted && !CheckSorted())
28 {
29 Throw.TableNotSorted(TableIndex.FieldLayout);
30 }
31 }
32
38
39 internal uint GetOffset(int rowId)
40 {
41 int num = (rowId - 1) * RowSize;
42 return Block.PeekUInt32(num + _OffsetOffset);
43 }
44
45 internal FieldDefinitionHandle GetField(int rowId)
46 {
47 int num = (rowId - 1) * RowSize;
49 }
50
55}
static void TableNotSorted(TableIndex tableIndex)
Definition Throw.cs:250
int PeekReference(int offset, bool smallRefSize)
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)
unsafe uint PeekUInt32(int offset)
FieldLayoutTableReader(int numberOfRows, bool declaredSorted, int fieldTableRowRefSize, MemoryBlock containingBlock, int containingBlockOffset)
static FieldDefinitionHandle FromRowId(int rowId)