예제 #1
0
        public TreeBranch CreateBranch(TreeSystemTransaction tran, int maxBranchChildren)
        {
            NodeId         p    = NextNodePointer();
            HeapTreeBranch node = new HeapTreeBranch(tran, p, maxBranchChildren);

            PutInHash(node);
            return(node);
        }
예제 #2
0
        public ITreeNode Copy(ITreeNode nodeToCopy, int maxBranchSize, int maxLeafSize, TreeSystemTransaction tran)
        {
            // Create a new pointer for the copy
            NodeId    p = NextNodePointer();
            IHashNode node;

            if (nodeToCopy is TreeLeaf)
            {
                node = new HeapTreeLeaf(tran, p, (TreeLeaf)nodeToCopy, maxLeafSize);
            }
            else
            {
                node = new HeapTreeBranch(tran, p, (TreeBranch)nodeToCopy, maxBranchSize);
            }
            PutInHash(node);
            // Return pointer to node
            return(node);
        }
예제 #3
0
파일: TreeNodeHeap.cs 프로젝트: ikvm/cloudb
 public TreeBranch CreateBranch(ITransaction tran, int maxBranchChildren)
 {
     long p = NextNodeId();
     HeapTreeBranch node = new HeapTreeBranch(tran, p, maxBranchChildren);
     HashNode(node);
     return node;
 }
예제 #4
0
파일: TreeNodeHeap.cs 프로젝트: ikvm/cloudb
        public ITreeNode Copy(ITreeNode nodeToCopy, int maxBranchSize, int maxLeafSize, ITransaction tran, bool locked)
        {
            // Create a new pointer for the copy
            long p = NextNodeId();
            if (locked) {
                p = (long)((ulong)p & 0x0DFFFFFFFFFFFFFFFL);
            }
            IHashNode node;
            if (nodeToCopy is TreeLeaf) {
                node = new HeapTreeLeaf(tran, p, (TreeLeaf)nodeToCopy, maxLeafSize);
            } else {
                node = new HeapTreeBranch(tran, p, (TreeBranch)nodeToCopy, maxBranchSize);
            }

            HashNode(node);
            // Return pointer to node
            return node;
        }