private void setNodeData() { if (isLeafNode()) { leafBlockFP = leafBlockFPs[nodeID - leafNodeOffset]; splitDim = -1; } else { leafBlockFP = -1; int address = nodeID * bytesPerIndexEntry; if (numIndexDims == 1) { splitDim = 0; if (version < BKDWriter.VERSION_IMPLICIT_SPLIT_DIM_1D) { // skip over wastefully encoded 0 splitDim: assert splitPackedValues[address] == 0; address++; } } else { splitDim = splitPackedValues[address++] & 0xff; } System.arraycopy(splitPackedValues, address, splitDimValue, 0, bytesPerDim); } }
private void setNodeData() { if (isLeafNode()) { leafBlockFP = leafBlockFPs[nodeID - leafNodeOffset]; splitDim = -1; } else { leafBlockFP = -1; int address = nodeID * bytesPerIndexEntry; if (numIndexDims == 1) { splitDim = 0; if (version < BKDWriter.VERSION_IMPLICIT_SPLIT_DIM_1D) { // skip over wastefully encoded 0 splitDim: assert splitPackedValues[address] == 0; address++; } } else { splitDim = splitPackedValues[address++] & 0xff; } System.arraycopy(splitPackedValues, address, splitDimValue, 0, bytesPerDim); } }
/** Create a new {@link IntersectState} */ public IntersectState getIntersectState(IntersectVisitor visitor) { IndexTree index; if (packedIndex != null) { index = new PackedIndexTree(); } else { index = new LegacyIndexTree(); } return new IntersectState(in.clone(), numDataDims, packedBytesLength, packedIndexBytesLength, maxPointsInLeafNode, visitor, index); }
public LegacyIndexTree() { setNodeData(); scratch.bytes = splitDimValue; scratch.length = bytesPerDim; }
@Override public void pushRight() { super.pushRight(); setNodeData(); }
@Override public void pushLeft() { super.pushLeft(); setNodeData(); }
@Override public BytesRef getSplitDimValue() { assert isLeafNode() == false; return scratch; }
@Override public long getLeafBlockFP() { assert isLeafNode(); return leafBlockFP; }
@Override public LegacyIndexTree clone() { LegacyIndexTree index = new LegacyIndexTree(); index.nodeID = nodeID; index.level = level; index.splitDim = splitDim; index.leafBlockFP = leafBlockFP; index.splitPackedValueStack[index.level] = splitPackedValueStack[index.level].clone(); return index; }
/** Create a new {@link IntersectState} */ public IntersectState getIntersectState(IntersectVisitor visitor) { IndexTree index; if (packedIndex != null) { index = new PackedIndexTree(); } else { index = new LegacyIndexTree(); } return new IntersectState(in.clone(), numDataDims, packedBytesLength, packedIndexBytesLength, maxPointsInLeafNode, visitor, index); }
@Override public void pushLeft() { super.pushLeft(); setNodeData(); }
@Override public BytesRef getSplitDimValue() { assert isLeafNode() == false; return scratch; }
public LegacyIndexTree() { setNodeData(); scratch.bytes = splitDimValue; scratch.length = bytesPerDim; }
@Override public long getLeafBlockFP() { assert isLeafNode(); return leafBlockFP; }
@Override public void pushRight() { super.pushRight(); setNodeData(); }
@Override public LegacyIndexTree clone() { LegacyIndexTree index = new LegacyIndexTree(); index.nodeID = nodeID; index.level = level; index.splitDim = splitDim; index.leafBlockFP = leafBlockFP; index.splitPackedValueStack[index.level] = splitPackedValueStack[index.level].clone(); return index; }