Esempio n. 1
0
 internal static void HandleNodeReplaced <K, T>(this IAListTreeObserver <K, T> self, AListNode <K, T> oldNode, AListNode <K, T> newLeft, AListNode <K, T> newRight)
 {
     if (newRight == null)
     {                   // cloned, not split
         Debug.Assert(oldNode.IsFrozen && !newLeft.IsFrozen);
         Debug.Assert(oldNode.LocalCount == newLeft.LocalCount);
     }
     self.RemoveAll(oldNode);
     self.AddAll(newLeft);
     if (newRight != null)
     {
         self.AddAll(newRight);
     }
 }
Esempio n. 2
0
        private static void AddAllRecursively <K, T>(IAListTreeObserver <K, T> observer, bool childrenFirst, AListNode <K, T> node)
        {
            if (!childrenFirst)
            {
                observer.AddAll(node);
            }

            var inner = node as AListInnerBase <K, T>;

            if (inner != null)
            {
                for (int i = 0; i < inner.LocalCount; i++)
                {
                    AddAllRecursively(observer, childrenFirst, inner.Child(i));
                }
            }

            if (childrenFirst)
            {
                observer.AddAll(node);
            }
        }