Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetNewNode()

int System.Data.RBTree< K >.GetNewNode ( K key)
inlineprivate

Definition at line 384 of file RBTree.cs.

385 {
386 TreePage treePage = null;
388 treePage = ((indexOfPageWithFreeSlot != -1) ? _pageTable[indexOfPageWithFreeSlot] : ((_inUsePageCount < 4) ? AllocPage(32) : ((_inUsePageCount < 32) ? AllocPage(256) : ((_inUsePageCount < 128) ? AllocPage(1024) : ((_inUsePageCount < 4096) ? AllocPage(4096) : ((_inUsePageCount >= 32768) ? AllocPage(65536) : AllocPage(8192)))))));
389 int num = treePage.AllocSlot(this);
390 if (num == -1)
391 {
392 throw ExceptionBuilder.InternalRBTreeError(RBTreeError.NoFreeSlots);
393 }
394 treePage._slots[num]._selfId = (treePage.PageId << 16) | num;
395 treePage._slots[num]._subTreeSize = 1;
396 treePage._slots[num]._keyOfNode = key;
397 return treePage._slots[num]._selfId;
398 }
int GetIndexOfPageWithFreeSlot(bool allocatedPage)
Definition RBTree.cs:342
TreePage AllocPage(int size)
Definition RBTree.cs:259
TreePage[] _pageTable
Definition RBTree.cs:201

References System.Data.RBTree< K >._inUsePageCount, System.Data.RBTree< K >._pageTable, System.Data.RBTree< K >.AllocPage(), System.Data.RBTree< K >.GetIndexOfPageWithFreeSlot(), System.Data.ExceptionBuilder.InternalRBTreeError(), and System.key.

Referenced by System.Data.RBTree< K >.Add(), System.Data.RBTree< K >.Insert(), System.Data.RBTree< K >.InsertAt(), and System.Data.RBTree< K >.RBInsert().