Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
GenericParamConstraintTableReader.cs
Go to the documentation of this file.
2
4
5internal readonly struct GenericParamConstraintTableReader
6{
7 internal readonly int NumberOfRows;
8
10
11 private readonly bool _IsTypeDefOrRefRefSizeSmall;
12
13 private readonly int _OwnerOffset;
14
15 private readonly int _ConstraintOffset;
16
17 internal readonly int RowSize;
18
19 internal readonly MemoryBlock Block;
20
21 internal GenericParamConstraintTableReader(int numberOfRows, bool declaredSorted, int genericParamTableRowRefSize, int typeDefOrRefRefSize, MemoryBlock containingBlock, int containingBlockOffset)
22 {
23 NumberOfRows = numberOfRows;
24 _IsGenericParamTableRowRefSizeSmall = genericParamTableRowRefSize == 2;
25 _IsTypeDefOrRefRefSizeSmall = typeDefOrRefRefSize == 2;
26 _OwnerOffset = 0;
27 _ConstraintOffset = _OwnerOffset + genericParamTableRowRefSize;
28 RowSize = _ConstraintOffset + typeDefOrRefRefSize;
29 Block = containingBlock.GetMemoryBlockAt(containingBlockOffset, RowSize * numberOfRows);
30 if (!declaredSorted && !CheckSorted())
31 {
32 Throw.TableNotSorted(TableIndex.GenericParamConstraint);
33 }
34 }
35
37 {
38 Block.BinarySearchReferenceRange(NumberOfRows, RowSize, _OwnerOffset, (uint)genericParameter.RowId, _IsGenericParamTableRowRefSizeSmall, out var startRowNumber, out var endRowNumber);
39 if (startRowNumber == -1)
40 {
42 }
43 return new GenericParameterConstraintHandleCollection(startRowNumber + 1, (ushort)(endRowNumber - startRowNumber + 1));
44 }
45
50
56
62}
static EntityHandle ConvertToHandle(uint typeDefOrRefTag)
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)
void BinarySearchReferenceRange(int rowCount, int rowSize, int referenceOffset, uint referenceValue, bool isReferenceSmall, out int startRowNumber, out int endRowNumber)
uint PeekTaggedReference(int offset, bool smallRefSize)
GenericParameterHandle GetOwner(GenericParameterConstraintHandle handle)
GenericParameterConstraintHandleCollection FindConstraintsForGenericParam(GenericParameterHandle genericParameter)
GenericParamConstraintTableReader(int numberOfRows, bool declaredSorted, int genericParamTableRowRefSize, int typeDefOrRefRefSize, MemoryBlock containingBlock, int containingBlockOffset)
static GenericParameterHandle FromRowId(int rowId)