Exemplo n.º 1
0
        protected virtual T NextAsc()
        {
            // Try to go down till a leaf
            while (!currentNode.IsLeaf())
            {
                currentNode     = currentNode.GetChildAt(currentKeyIndex, true);
                currentKeyIndex = 0;
            }
            // If leaf has more keys
            if (currentKeyIndex < currentNode.GetNbKeys())
            {
                nbReturnedKeys++;
                nbReturnedElements++;
                object nodeValue = GetValueAt(currentNode, currentKeyIndex);
                currentKeyIndex++;
                return((T)nodeValue);
            }
            NeoDatis.Btree.IBTreeNode child = null;
            // else go up till a node with keys
            while (currentKeyIndex >= currentNode.GetNbKeys())
            {
                child           = currentNode;
                currentNode     = currentNode.GetParent();
                currentKeyIndex = IndexOfChild(currentNode, child);
            }
            nbReturnedElements++;
            nbReturnedKeys++;
            object value = GetValueAt(currentNode, currentKeyIndex);

            currentKeyIndex++;
            return((T)value);
        }