private int computeEndOffset() { // ensure that 0 length end returns start if (length == 0) return getStartOffset(); int iMax = baseOffsets.length; if (nonBaseChars != null) { // end is the last real end in this sequence for (int i = baseStartOffset + length; i-- > 0; ) { if (baseOffsets[i] >= 0) return baseOffsets[i] + 1; } // failing that it is the same as startOffset return getStartOffset(); } // here there are no nonBaseChars, all sequences are based sequences return baseOffsets[baseStartOffset + length - 1] + 1; }
@Override public Range getSourceRange() { return new Range(getStartOffset(), getEndOffset()); }
private int computeEndOffset() { // ensure that 0 length end returns start if (length == 0) return getStartOffset(); int iMax = baseOffsets.length; if (nonBaseChars != null) { // end is the last real end in this sequence for (int i = baseStartOffset + length; i-- > 0; ) { if (baseOffsets[i] >= 0) return baseOffsets[i] + 1; } // failing that it is the same as startOffset return getStartOffset(); } // here there are no nonBaseChars, all sequences are based sequences return baseOffsets[baseStartOffset + length - 1] + 1; }
@Override public Range getSourceRange() { return new Range(getStartOffset(), getEndOffset()); }