// Token: 0x06003DB0 RID: 15792 RVA: 0x0011C904 File Offset: 0x0011AB04 internal static void Remove(TextTreeTextBlock firstNode, TextTreeTextBlock lastNode) { SplayTreeNode previousNode = firstNode.GetPreviousNode(); SplayTreeNode splayTreeNode; if (previousNode != null) { previousNode.Split(); splayTreeNode = previousNode.ParentNode; previousNode.ParentNode = null; } else { splayTreeNode = firstNode.GetContainingNode(); } SplayTreeNode rightSubTree = lastNode.Split(); SplayTreeNode splayTreeNode2 = SplayTreeNode.Join(previousNode, rightSubTree); if (splayTreeNode != null) { splayTreeNode.ContainedNode = splayTreeNode2; } if (splayTreeNode2 != null) { splayTreeNode2.ParentNode = splayTreeNode; } }
// Removes a run of nodes from a tree. internal static void Remove(TextTreeTextBlock firstNode, TextTreeTextBlock lastNode) { SplayTreeNode leftTree; SplayTreeNode rightTree; SplayTreeNode rootNode; SplayTreeNode containerNode; // // Break the tree into three subtrees. // leftTree = firstNode.GetPreviousNode(); if (leftTree != null) { // Splitting moves leftTree to local root. leftTree.Split(); containerNode = leftTree.ParentNode; leftTree.ParentNode = null; // We'll fixup leftTree.ParentNode.ContainedNode below. // Join requires that leftTree has a null ParentNode. } else { // There are no preceeding nodes. containerNode = firstNode.GetContainingNode(); } rightTree = lastNode.Split(); // // Recombine the two outer trees. // rootNode = SplayTreeNode.Join(leftTree, rightTree); if (containerNode != null) { containerNode.ContainedNode = rootNode; } if (rootNode != null) { rootNode.ParentNode = containerNode; } }