90 _slotMap =
new int[(size + 32 - 1) / 32];
102 if ((uint)
_slotMap[num] < uint.MaxValue)
110 tree.MarkPageFull(
this);
112 tree._inUseNodeCount++;
271 int[]
array2 =
new int[(array.Length + 32 - 1) / 32];
327 int num =
nodeId & 0xFFFF;
329 treePage._slotMap[num / 32] &= ~(1 << num % 32);
355 uint
num2 = ~num & (num + 1);
394 treePage._slots[num]._selfId = (treePage.PageId << 16) | num;
395 treePage._slots[num]._subTreeSize = 1;
397 return treePage._slots[num]._selfId;
669 num6 = ((position > 0) ? 1 : (-1));
1069 if (!
Key(num).Equals(
key))
1111 if (
path._mainTreeNodeID == 0)
1296 for (
int i = 0; i <
count; i++)
1319 for (
int i = 0; i <
count; i++)
static unsafe void Copy(Array sourceArray, Array destinationArray, int length)
static Exception EnumeratorModified()
static Exception ArgumentOutOfRange(string paramName)
static Exception InvalidOffsetLength()
static Exception InternalRBTreeError(RBTreeError internalError)
static Exception RowOutOfRange()
static Exception ArgumentNull(string paramName)
int AllocSlot(RBTree< K > tree)
int ComputeNodeByIndex(int index, out int satelliteRootId)
NodeColor color(int nodeId)
int Insert(int position, K item)
int GetIndexOfPageWithFreeSlot(bool allocatedPage)
int ComputeIndexWithSatelliteByNode(int nodeId)
void SetNext(int nodeId, int nextNodeId)
void SetRight(int nodeId, int rightNodeId)
void MarkPageFree(TreePage page)
int IndexOf(int nodeId, K item)
void UpdateNodeKey(K currentKey, K newKey)
TreePage AllocPage(int size)
int GetIndexByNodePath(NodePath path)
void CopyTo(Array array, int index)
void SetColor(int nodeId, NodeColor color)
int SubTreeSize(int nodeId)
int ComputeNodeByIndex(int x_id, int index)
readonly TreeAccessMethod _accessMethod
int LeftRotate(int root_id, int x_id, int mainTreeNode)
void RemoveAt(int position)
int SearchSubTree(int root_id, K key)
void SetLeft(int nodeId, int leftNodeId)
int _inUseSatelliteTreeCount
void IncreaseSize(int nodeId)
int InsertAt(int position, K item, bool append)
int RBInsert(int root_id, int x_id, int mainTreeNodeID, int position, bool append)
int GetIndexByNode(int node)
void FreePage(TreePage page)
static int GetIntValueFromBitMap(uint bitMap)
int RBDeleteFixup(int root_id, int x_id, int px_id, int mainTreeNodeID)
int RightRotate(int root_id, int x_id, int mainTreeNode)
int CompareSateliteTreeNode(K record1, K record2)
void DecreaseSize(int nodeId)
RBTree(TreeAccessMethod accessMethod)
IEnumerator GetEnumerator()
void SetParent(int nodeId, int parentNodeId)
int ComputeIndexByNode(int nodeId)
int RBDeleteX(int root_id, int z_id, int mainTreeNodeID)
NodePath GetNodeByKey(K key)
NodePath GetNodeByIndex(int userIndex)
void SetSubTreeSize(int nodeId, int size)
void CopyTo(K[] array, int index)
void SetKey(int nodeId, K key)
void FreeNode(int nodeId)
int CompareNode(K record1, K record2)
bool Successor(ref int nodeId, ref int mainTreeNodeId)
void MarkPageFull(TreePage page)
void RecomputeSize(int nodeId)
NodePath(int nodeID, int mainTreeNodeID)
readonly int _mainTreeNodeID
object IEnumerator. Current
readonly RBTree< K > _tree
RBTreeEnumerator(RBTree< K > tree)
RBTreeEnumerator(RBTree< K > tree, int position)