/** * Retrieves an instance from the specified slice written decoding * {@code bitsPerValue} for each value */ public static LongValues getInstance(RandomAccessInput slice, int bitsPerValue) { return getInstance(slice, bitsPerValue, 0); }
/** * Retrieves an instance from the specified slice. */ public static LongValues getInstance(Meta meta, RandomAccessInput data) throws IOException { final LongValues[] readers = new LongValues[meta.numBlocks]; for (int i = 0; i < meta.mins.length; ++i) { if (meta.bpvs[i] == 0) { readers[i] = EMPTY; } else { readers[i] = DirectReader.getInstance(data, meta.bpvs[i], meta.offsets[i]); } } final int blockShift = meta.blockShift; final long[] mins = meta.mins; final float[] avgs = meta.avgs; return new LongValues() { @Override public long get(long index) { final int block = (int) (index >>> blockShift); final long blockIndex = index & ((1 << blockShift) - 1); final long delta = readers[block].get(blockIndex); return mins[block] + (long) (avgs[block] * blockIndex) + delta; } }; } }
final LongValues values = DirectReader.getInstance(slice, entry.bitsPerValue); if (entry.table != null) { final long[] table = entry.table;
public long get(long index) { final long block = index >>> shift; if (this.block != block) { assert block > this.block : "Reading backwards is illegal: " + this.block + " < " + block; int bitsPerValue; do { offset = blockEndOffset; try { bitsPerValue = slice.readByte(offset++); delta = slice.readLong(offset); offset += Long.BYTES; if (bitsPerValue == 0) { blockEndOffset = offset; } else { final int length = slice.readInt(offset); offset += Integer.BYTES; blockEndOffset = offset + length; } } catch (IOException e) { throw new RuntimeException(e); } this.block ++; } while (this.block != block); values = bitsPerValue == 0 ? LongValues.ZEROES : DirectReader.getInstance(slice, bitsPerValue, offset); } return mul * values.get(index & mask) + delta; } };
@Override public long longValue() throws IOException { final int block = doc >>> shift; if (this.block != block) { int bitsPerValue; do { offset = blockEndOffset; bitsPerValue = slice.readByte(offset++); delta = slice.readLong(offset); offset += Long.BYTES; if (bitsPerValue == 0) { blockEndOffset = offset; } else { final int length = slice.readInt(offset); offset += Integer.BYTES; blockEndOffset = offset + length; } this.block ++; } while (this.block != block); values = bitsPerValue == 0 ? LongValues.ZEROES : DirectReader.getInstance(slice, bitsPerValue, offset); } return mul * values.get(doc & mask) + delta; } };
final LongValues values = DirectReader.getInstance(slice, entry.bitsPerValue); if (entry.table != null) { final long[] table = entry.table; final LongValues values = DirectReader.getInstance(slice, entry.bitsPerValue); if (entry.table != null) { final long[] table = entry.table;
} else { final RandomAccessInput slice = data.randomAccessSlice(entry.ordsOffset, entry.ordsLength); ords = DirectReader.getInstance(slice, entry.bitsPerValue);
@Override public long longValue() throws IOException { final int index = disi.index(); final int block = index >>> shift; if (this.block != block) { int bitsPerValue; do { offset = blockEndOffset; bitsPerValue = slice.readByte(offset++); delta = slice.readLong(offset); offset += Long.BYTES; if (bitsPerValue == 0) { blockEndOffset = offset; } else { final int length = slice.readInt(offset); offset += Integer.BYTES; blockEndOffset = offset + length; } this.block ++; } while (this.block != block); values = bitsPerValue == 0 ? LongValues.ZEROES : DirectReader.getInstance(slice, bitsPerValue, offset); } return mul * values.get(index & mask) + delta; } };
final LongValues ords = DirectReader.getInstance(slice, entry.bitsPerValue);
/** * Retrieves an instance from the specified slice written decoding * {@code bitsPerValue} for each value */ public static LongValues getInstance(RandomAccessInput slice, int bitsPerValue) { return getInstance(slice, bitsPerValue, 0); }
/** * Retrieves an instance from the specified slice written decoding * {@code bitsPerValue} for each value */ public static LongValues getInstance(RandomAccessInput slice, int bitsPerValue) { return getInstance(slice, bitsPerValue, 0); }
/** * Retrieves an instance from the specified slice written decoding * {@code bitsPerValue} for each value */ public static LongValues getInstance(RandomAccessInput slice, int bitsPerValue) { return getInstance(slice, bitsPerValue, 0); }
/** * Retrieves an instance from the specified slice. */ public static LongValues getInstance(Meta meta, RandomAccessInput data) throws IOException { final LongValues[] readers = new LongValues[meta.numBlocks]; for (int i = 0; i < meta.mins.length; ++i) { if (meta.bpvs[i] == 0) { readers[i] = EMPTY; } else { readers[i] = DirectReader.getInstance(data, meta.bpvs[i], meta.offsets[i]); } } final int blockShift = meta.blockShift; final long[] mins = meta.mins; final float[] avgs = meta.avgs; return new LongValues() { @Override public long get(long index) { final int block = (int) (index >>> blockShift); final long blockIndex = index & ((1 << blockShift) - 1); final long delta = readers[block].get(blockIndex); return mins[block] + (long) (avgs[block] * blockIndex) + delta; } }; } }
/** * Retrieves an instance from the specified slice. */ public static LongValues getInstance(Meta meta, RandomAccessInput data) throws IOException { final LongValues[] readers = new LongValues[meta.numBlocks]; for (int i = 0; i < meta.mins.length; ++i) { if (meta.bpvs[i] == 0) { readers[i] = EMPTY; } else { readers[i] = DirectReader.getInstance(data, meta.bpvs[i], meta.offsets[i]); } } final int blockShift = meta.blockShift; final long[] mins = meta.mins; final float[] avgs = meta.avgs; return new LongValues() { @Override public long get(long index) { final int block = (int) (index >>> blockShift); final long blockIndex = index & ((1 << blockShift) - 1); final long delta = readers[block].get(blockIndex); return mins[block] + (long) (avgs[block] * blockIndex) + delta; } }; } }
/** * Retrieves an instance from the specified slice. */ public static LongValues getInstance(Meta meta, RandomAccessInput data) throws IOException { final LongValues[] readers = new LongValues[meta.numBlocks]; for (int i = 0; i < meta.mins.length; ++i) { if (meta.bpvs[i] == 0) { readers[i] = EMPTY; } else { readers[i] = DirectReader.getInstance(data, meta.bpvs[i], meta.offsets[i]); } } final int blockShift = meta.blockShift; final long[] mins = meta.mins; final float[] avgs = meta.avgs; return new LongValues() { @Override public long get(long index) { final int block = (int) (index >>> blockShift); final long blockIndex = index & ((1 << blockShift) - 1); final long delta = readers[block].get(blockIndex); return mins[block] + (long) (avgs[block] * blockIndex) + delta; } }; } }
case DELTA_COMPRESSED: final long delta = entry.minValue; final LongValues values = DirectReader.getInstance(slice, entry.bitsPerValue); return new LongValues() { @Override final long min = entry.minValue; final long mult = entry.gcd; final LongValues quotientReader = DirectReader.getInstance(slice, entry.bitsPerValue); return new LongValues() { @Override case TABLE_COMPRESSED: final long table[] = entry.table; final LongValues ords = DirectReader.getInstance(slice, entry.bitsPerValue); return new LongValues() { @Override
case DELTA_COMPRESSED: final long delta = entry.minValue; final LongValues values = DirectReader.getInstance(slice, entry.bitsPerValue); return new LongValues() { @Override final long min = entry.minValue; final long mult = entry.gcd; final LongValues quotientReader = DirectReader.getInstance(slice, entry.bitsPerValue); return new LongValues() { @Override case TABLE_COMPRESSED: final long table[] = entry.table; final LongValues ords = DirectReader.getInstance(slice, entry.bitsPerValue); return new LongValues() { @Override
public long get(long index) { final long block = index >>> shift; if (this.block != block) { assert block > this.block : "Reading backwards is illegal: " + this.block + " < " + block; int bitsPerValue; do { offset = blockEndOffset; try { bitsPerValue = slice.readByte(offset++); delta = slice.readLong(offset); offset += Long.BYTES; if (bitsPerValue == 0) { blockEndOffset = offset; } else { final int length = slice.readInt(offset); offset += Integer.BYTES; blockEndOffset = offset + length; } } catch (IOException e) { throw new RuntimeException(e); } this.block ++; } while (this.block != block); values = bitsPerValue == 0 ? LongValues.ZEROES : DirectReader.getInstance(slice, bitsPerValue, offset); } return mul * values.get(index & mask) + delta; } };
@Override public long longValue() throws IOException { final int block = doc >>> shift; if (this.block != block) { int bitsPerValue; do { offset = blockEndOffset; bitsPerValue = slice.readByte(offset++); delta = slice.readLong(offset); offset += Long.BYTES; if (bitsPerValue == 0) { blockEndOffset = offset; } else { final int length = slice.readInt(offset); offset += Integer.BYTES; blockEndOffset = offset + length; } this.block ++; } while (this.block != block); values = bitsPerValue == 0 ? LongValues.ZEROES : DirectReader.getInstance(slice, bitsPerValue, offset); } return mul * values.get(doc & mask) + delta; } };
@Override public long longValue() throws IOException { final int index = disi.index(); final int block = index >>> shift; if (this.block != block) { int bitsPerValue; do { offset = blockEndOffset; bitsPerValue = slice.readByte(offset++); delta = slice.readLong(offset); offset += Long.BYTES; if (bitsPerValue == 0) { blockEndOffset = offset; } else { final int length = slice.readInt(offset); offset += Integer.BYTES; blockEndOffset = offset + length; } this.block ++; } while (this.block != block); values = bitsPerValue == 0 ? LongValues.ZEROES : DirectReader.getInstance(slice, bitsPerValue, offset); } return mul * values.get(index & mask) + delta; } };