Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ClassLayoutTableReader.cs
Go to the documentation of this file.
2
4
5internal struct ClassLayoutTableReader
6{
7 internal int NumberOfRows;
8
9 private readonly bool _IsTypeDefTableRowRefSizeSmall;
10
11 private readonly int _PackagingSizeOffset;
12
13 private readonly int _ClassSizeOffset;
14
15 private readonly int _ParentOffset;
16
17 internal readonly int RowSize;
18
20
21 internal ClassLayoutTableReader(int numberOfRows, bool declaredSorted, int typeDefTableRowRefSize, MemoryBlock containingBlock, int containingBlockOffset)
22 {
23 NumberOfRows = numberOfRows;
24 _IsTypeDefTableRowRefSizeSmall = typeDefTableRowRefSize == 2;
28 RowSize = _ParentOffset + typeDefTableRowRefSize;
29 Block = containingBlock.GetMemoryBlockAt(containingBlockOffset, RowSize * numberOfRows);
30 if (!declaredSorted && !CheckSorted())
31 {
32 Throw.TableNotSorted(TableIndex.ClassLayout);
33 }
34 }
35
36 internal TypeDefinitionHandle GetParent(int rowId)
37 {
38 int num = (rowId - 1) * RowSize;
40 }
41
42 internal ushort GetPackingSize(int rowId)
43 {
44 int num = (rowId - 1) * RowSize;
46 }
47
48 internal uint GetClassSize(int rowId)
49 {
50 int num = (rowId - 1) * RowSize;
51 return Block.PeekUInt32(num + _ClassSizeOffset);
52 }
53
58
63}
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)
unsafe uint PeekUInt32(int offset)
ClassLayoutTableReader(int numberOfRows, bool declaredSorted, int typeDefTableRowRefSize, MemoryBlock containingBlock, int containingBlockOffset)
static TypeDefinitionHandle FromRowId(int rowId)