LUCENE-2777: Revise PagedBytes#fillUsingLengthPrefix* methods names

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1039382 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Simon Willnauer 2010-11-26 14:36:10 +00:00
parent 57a7862f82
commit 4067f5aaad
4 changed files with 57 additions and 18 deletions

View File

@ -358,7 +358,7 @@ public class FixedGapTermsIndexReader extends TermsIndexReaderBase {
private void fillResult(int idx, TermsIndexResult result) {
final long offset = termOffsets.get(idx);
final int length = (int) (termOffsets.get(1+idx) - offset);
termBytesReader.fill(result.term, termBytesStart + offset, length);
termBytesReader.fillSlice(result.term, termBytesStart + offset, length);
result.position = idx * totalIndexInterval;
result.offset = termsStart + termsDictOffsets.get(idx);
}
@ -373,7 +373,7 @@ public class FixedGapTermsIndexReader extends TermsIndexReaderBase {
final long offset = termOffsets.get(mid);
final int length = (int) (termOffsets.get(1+mid) - offset);
termBytesReader.fill(result.term, termBytesStart + offset, length);
termBytesReader.fillSlice(result.term, termBytesStart + offset, length);
int delta = termComp.compare(term, result.term);
if (delta < 0) {
@ -394,7 +394,7 @@ public class FixedGapTermsIndexReader extends TermsIndexReaderBase {
final long offset = termOffsets.get(hi);
final int length = (int) (termOffsets.get(1+hi) - offset);
termBytesReader.fill(result.term, termBytesStart + offset, length);
termBytesReader.fillSlice(result.term, termBytesStart + offset, length);
result.position = hi*totalIndexInterval;
result.offset = termsStart + termsDictOffsets.get(hi);

View File

@ -165,7 +165,7 @@ public class DocTermsCreator extends EntryCreatorWithOptions<DocTerms>
@Override
public BytesRef getTerm(int docID, BytesRef ret) {
final long pointer = docToOffset.get(docID);
return bytes.fillUsingLengthPrefix(ret, pointer);
return bytes.fill(ret, pointer);
}
}
}

View File

@ -213,7 +213,7 @@ public class DocTermsIndexCreator extends EntryCreatorWithOptions<DocTermsIndex>
@Override
public BytesRef lookup(int ord, BytesRef ret) {
return bytes.fillUsingLengthPrefix(ret, termOrdToBytesOffset.get(ord));
return bytes.fill(ret, termOrdToBytesOffset.get(ord));
}
@Override
@ -235,7 +235,7 @@ public class DocTermsIndexCreator extends EntryCreatorWithOptions<DocTermsIndex>
currentBlockNumber = 0;
blocks = bytes.getBlocks();
blockEnds = bytes.getBlockEnds();
currentBlockNumber = bytes.fillUsingLengthPrefix2(term, termOrdToBytesOffset.get(0));
currentBlockNumber = bytes.fillAndGetIndex(term, termOrdToBytesOffset.get(0));
end = blockEnds[currentBlockNumber];
}
@ -249,7 +249,7 @@ public class DocTermsIndexCreator extends EntryCreatorWithOptions<DocTermsIndex>
public SeekStatus seek(long ord) throws IOException {
assert(ord >= 0 && ord <= numOrd);
// TODO: if gap is small, could iterate from current position? Or let user decide that?
currentBlockNumber = bytes.fillUsingLengthPrefix2(term, termOrdToBytesOffset.get((int)ord));
currentBlockNumber = bytes.fillAndGetIndex(term, termOrdToBytesOffset.get((int)ord));
end = blockEnds[currentBlockNumber];
currentOrd = (int)ord;
return SeekStatus.FOUND;

View File

@ -29,7 +29,8 @@ import java.io.IOException;
* using copy, and then retrieve slices (BytesRef) into it
* using fill.
*
* <p>@lucene.internal</p>*/
* @lucene.internal
**/
public final class PagedBytes {
private final List<byte[]> blocks = new ArrayList<byte[]>();
private final List<Integer> blockEnd = new ArrayList<Integer>();
@ -63,8 +64,16 @@ public final class PagedBytes {
blockSize = pagedBytes.blockSize;
}
/** Get a slice out of the byte array. */
public BytesRef fill(BytesRef b, long start, int length) {
/**
* Gets a slice out of {@link PagedBytes} starting at <i>start</i> with a
* given length. Iff the slice spans across a block border this method will
* allocate sufficient resources and copy the paged data.
* <p>
* Slices spanning more than one block are not supported.
* </p>
* @lucene.internal
**/
public BytesRef fillSlice(BytesRef b, long start, int length) {
assert length >= 0: "length=" + length;
final int index = (int) (start >> blockBits);
final int offset = (int) (start & blockMask);
@ -91,8 +100,18 @@ public final class PagedBytes {
return b;
}
/** Reads length as 1 or 2 byte vInt prefix, starting @ start */
public BytesRef fillUsingLengthPrefix(BytesRef b, long start) {
/**
* Reads length as 1 or 2 byte vInt prefix, starting at <i>start</i>.
* <p>
* <b>Note:</b> this method does not support slices spanning across block
* borders.
* </p>
*
* @return the given {@link BytesRef}
*
* @lucene.internal
**/
public BytesRef fill(BytesRef b, long start) {
final int index = (int) (start >> blockBits);
final int offset = (int) (start & blockMask);
final byte[] block = b.bytes = blocks[index];
@ -108,8 +127,17 @@ public final class PagedBytes {
return b;
}
/** @lucene.internal Reads length as 1 or 2 byte vInt prefix, starting @ start. Returns the block number of the term. */
public int fillUsingLengthPrefix2(BytesRef b, long start) {
/**
* Reads length as 1 or 2 byte vInt prefix, starting at <i>start</i>. *
* <p>
* <b>Note:</b> this method does not support slices spanning across block
* borders.
* </p>
*
* @return the internal block number of the slice.
* @lucene.internal
**/
public int fillAndGetIndex(BytesRef b, long start) {
final int index = (int) (start >> blockBits);
final int offset = (int) (start & blockMask);
final byte[] block = b.bytes = blocks[index];
@ -125,10 +153,21 @@ public final class PagedBytes {
return index;
}
/** @lucene.internal Reads length as 1 or 2 byte vInt prefix, starting @ start.
* Returns the start offset of the next part, suitable as start parameter on next call
* to sequentially read all BytesRefs. */
public long fillUsingLengthPrefix3(BytesRef b, long start) {
/**
* Reads length as 1 or 2 byte vInt prefix, starting at <i>start</i> and
* returns the start offset of the next part, suitable as start parameter on
* next call to sequentially read all {@link BytesRef}.
*
* <p>
* <b>Note:</b> this method does not support slices spanning across block
* borders.
* </p>
*
* @return the start offset of the next part, suitable as start parameter on
* next call to sequentially read all {@link BytesRef}.
* @lucene.internal
**/
public long fillAndGetStart(BytesRef b, long start) {
final int index = (int) (start >> blockBits);
final int offset = (int) (start & blockMask);
final byte[] block = b.bytes = blocks[index];