NodeCursor<K> descend() { Object[] childNode = (Object[]) node[position + getChildStart(node)]; int childOffset = nodeOffset + treeIndexOffsetOfChild(node, position); child.resetNode(childNode, childOffset); inChild = true; return child; }
NodeCursor<K> descend() { Object[] childNode = (Object[]) node[position + getChildStart(node)]; int childOffset = nodeOffset + treeIndexOffsetOfChild(node, position); child.resetNode(childNode, childOffset); inChild = true; return child; }
NodeCursor<K> descend() { Object[] childNode = (Object[]) node[position + getChildStart(node)]; int childOffset = nodeOffset + treeIndexOffsetOfChild(node, position); child.resetNode(childNode, childOffset); inChild = true; return child; }
NodeCursor<K> descend() { Object[] childNode = (Object[]) node[position + getChildStart(node)]; int childOffset = nodeOffset + treeIndexOffsetOfChild(node, position); child.resetNode(childNode, childOffset); inChild = true; return child; }
public static int toArray(Object[] tree, int treeStart, int treeEnd, Object[] target, int targetOffset) { if (isLeaf(tree)) { int count = treeEnd - treeStart; System.arraycopy(tree, treeStart, target, targetOffset, count); return count; } int newTargetOffset = targetOffset; int childCount = getChildCount(tree); int childOffset = getChildStart(tree); for (int i = 0 ; i < childCount ; i++) { int childStart = treeIndexOffsetOfChild(tree, i); int childEnd = treeIndexOfBranchKey(tree, i); if (childStart <= treeEnd && childEnd >= treeStart) { newTargetOffset += toArray((Object[]) tree[childOffset + i], max(0, treeStart - childStart), min(childEnd, treeEnd) - childStart, target, newTargetOffset); if (treeStart <= childEnd && treeEnd > childEnd) // this check will always fail for the non-existent key target[newTargetOffset++] = tree[i]; } } return newTargetOffset - targetOffset; }
public static int toArray(Object[] tree, int treeStart, int treeEnd, Object[] target, int targetOffset) { if (isLeaf(tree)) { int count = treeEnd - treeStart; System.arraycopy(tree, treeStart, target, targetOffset, count); return count; } int newTargetOffset = targetOffset; int childCount = getChildCount(tree); int childOffset = getChildStart(tree); for (int i = 0 ; i < childCount ; i++) { int childStart = treeIndexOffsetOfChild(tree, i); int childEnd = treeIndexOfBranchKey(tree, i); if (childStart <= treeEnd && childEnd >= treeStart) { newTargetOffset += toArray((Object[]) tree[childOffset + i], max(0, treeStart - childStart), min(childEnd, treeEnd) - childStart, target, newTargetOffset); if (treeStart <= childEnd && treeEnd > childEnd) // this check will always fail for the non-existent key target[newTargetOffset++] = tree[i]; } } return newTargetOffset - targetOffset; }
public static int toArray(Object[] tree, int treeStart, int treeEnd, Object[] target, int targetOffset) { if (isLeaf(tree)) { int count = treeEnd - treeStart; System.arraycopy(tree, treeStart, target, targetOffset, count); return count; } int newTargetOffset = targetOffset; int childCount = getChildCount(tree); int childOffset = getChildStart(tree); for (int i = 0 ; i < childCount ; i++) { int childStart = treeIndexOffsetOfChild(tree, i); int childEnd = treeIndexOfBranchKey(tree, i); if (childStart <= treeEnd && childEnd >= treeStart) { newTargetOffset += toArray((Object[]) tree[childOffset + i], max(0, treeStart - childStart), min(childEnd, treeEnd) - childStart, target, newTargetOffset); if (treeStart <= childEnd && treeEnd > childEnd) // this check will always fail for the non-existent key target[newTargetOffset++] = tree[i]; } } return newTargetOffset - targetOffset; }
public static int toArray(Object[] tree, int treeStart, int treeEnd, Object[] target, int targetOffset) { if (isLeaf(tree)) { int count = treeEnd - treeStart; System.arraycopy(tree, treeStart, target, targetOffset, count); return count; } int newTargetOffset = targetOffset; int childCount = getChildCount(tree); int childOffset = getChildStart(tree); for (int i = 0 ; i < childCount ; i++) { int childStart = treeIndexOffsetOfChild(tree, i); int childEnd = treeIndexOfBranchKey(tree, i); if (childStart <= treeEnd && childEnd >= treeStart) { newTargetOffset += toArray((Object[]) tree[childOffset + i], max(0, treeStart - childStart), min(childEnd, treeEnd) - childStart, target, newTargetOffset); if (treeStart <= childEnd && treeEnd > childEnd) // this check will always fail for the non-existent key target[newTargetOffset++] = tree[i]; } } return newTargetOffset - targetOffset; }