@Override public final CharTermAttribute setLength(int length) { FutureObjects.checkFromIndexSize(0, length, termBuffer.length); termLength = length; return this; }
@Override public BytesReference slice(int from, int length) { FutureObjects.checkFromIndexSize(from, length, this.length); if (length == 0) { return BytesArray.EMPTY; } // for slices we only need to find the start and the end reference // adjust them and pass on the references in between as they are fully contained final int to = from + length; final int limit = getOffsetIndex(to - 1); final int start = getOffsetIndex(from); final BytesReference[] inSlice = new BytesReference[1 + (limit - start)]; for (int i = 0, j = start; i < inSlice.length; i++) { inSlice[i] = references[j++]; } int inSliceOffset = from - offsets[start]; if (inSlice.length == 1) { return inSlice[0].slice(inSliceOffset, length); } // now adjust slices in front and at the end inSlice[0] = inSlice[0].slice(inSliceOffset, inSlice[0].length() - inSliceOffset); inSlice[inSlice.length-1] = inSlice[inSlice.length-1].slice(0, to - offsets[limit]); return new CompositeBytesReference(inSlice); }
@Override public final CharTermAttribute setLength(int length) { FutureObjects.checkFromIndexSize(0, length, termBuffer.length); termLength = length; return this; }