internal static void HandleRootSplit <K, T>(this IAListTreeObserver <K, T> self, AListNode <K, T> oldRoot, AListNode <K, T> newLeft, AListNode <K, T> newRight, AListInnerBase <K, T> newRoot) { self.HandleNodeReplaced(oldRoot, newLeft, newRight); self.NodeAdded(newLeft, newRoot); self.NodeAdded(newRight, newRoot); self.RootChanged(newRoot, false); }
internal static void DoAttach <K, T>(this IAListTreeObserver <K, T> observer, AListBase <K, T> list, AListNode <K, T> root) { var childrenFirst = observer.Attach(list); observer.RootChanged(list, root, false); if (childrenFirst != null && root != null) { AddAllRecursively(observer, childrenFirst.Value, root); } }
internal static void HandleRootUnsplit <K, T>(this IAListTreeObserver <K, T> self, AListInnerBase <K, T> oldRoot, AListNode <K, T> newRoot) { Debug.Assert(oldRoot.LocalCount == 0 || (oldRoot.LocalCount == 1 && oldRoot.Child(0) == newRoot)); self.NodeRemoved(newRoot, oldRoot); self.RootChanged(newRoot, false); }
internal static void Clear <K, T>(this IAListTreeObserver <K, T> self) { self.RootChanged(null, true); }
internal static void Clear <K, T>(this IAListTreeObserver <K, T> self, AListBase <K, T> list) { self.RootChanged(list, null, true); }