private Bits getMissingBits(final long offset) throws IOException { if (offset == -1) { return new Bits.MatchAllBits(maxDoc); } else { int length = (int) ((maxDoc + 7L) >>> 3); final RandomAccessInput in = data.randomAccessSlice(offset, length); return new Bits() { @Override public boolean get(int index) { try { return (in.readByte(index >> 3) & (1 << (index & 7))) != 0; } catch (IOException e) { throw new RuntimeException(e); } } @Override public int length() { return maxDoc; } }; } }
/** * Retrieves an instance from the specified slice written decoding * {@code bitsPerValue} for each value */ public static LongValues getInstance(RandomAccessInput slice, int bitsPerValue) { switch (bitsPerValue) { case 1: return new DirectPackedReader1(slice); case 2: return new DirectPackedReader2(slice); case 4: return new DirectPackedReader4(slice); case 8: return new DirectPackedReader8(slice); case 12: return new DirectPackedReader12(slice); case 16: return new DirectPackedReader16(slice); case 20: return new DirectPackedReader20(slice); case 24: return new DirectPackedReader24(slice); case 28: return new DirectPackedReader28(slice); case 32: return new DirectPackedReader32(slice); case 40: return new DirectPackedReader40(slice); case 48: return new DirectPackedReader48(slice); case 56: return new DirectPackedReader56(slice); case 64: return new DirectPackedReader64(slice); default: throw new IllegalArgumentException("unsupported bitsPerValue: " + bitsPerValue); } }
DirectPackedReader1(RandomAccessInput in) { this.in = in; }
DirectPackedReader2(RandomAccessInput in) { this.in = in; }
DirectPackedReader4(RandomAccessInput in) { this.in = in; }
DirectPackedReader8(RandomAccessInput in) { this.in = in; }
DirectPackedReader12(RandomAccessInput in) { this.in = in; }
DirectPackedReader16(RandomAccessInput in) { this.in = in; }
DirectPackedReader20(RandomAccessInput in) { this.in = in; }
DirectPackedReader24(RandomAccessInput in) { this.in = in; }
DirectPackedReader28(RandomAccessInput in) { this.in = in; }
DirectPackedReader32(RandomAccessInput in) { this.in = in; }
DirectPackedReader40(RandomAccessInput in) { this.in = in; }
DirectPackedReader48(RandomAccessInput in) { this.in = in; }
DirectPackedReader56(RandomAccessInput in) { this.in = in; }
DirectPackedReader64(RandomAccessInput in) { this.in = in; }