private static void fill(final LongArray a, final int b, final int e, final long l) { for (int i = b; i < e; ++i) a.set(i, l); }
public void get(final long index, final LongArray longs, final long start, final long length) { longs.set(start, this, index, length); }
public void set(final long index, final long[] longs) { set(index, longs, 0, longs.length); }
public void set(final long index, final LongArray longs) { set(index, longs, 0, longs.length); }
public final void invertAll() { for (int i = 0; i < arraySize; ++i) bits.set(i, ~bits.get(i)); }
public final void set(final int i) { bits.set(i >> 6, bits.get(i >> 6) | (1L << (i & 0x3F))); }
public final void clear(final int i) { bits.set(i >> 6, bits.get(i >> 6) & ~(1L << (i & 0x3F))); }
public final void setRange(final int b, final int e) { final int bt = b >> 6; final int et = e >> 6; if (bt != et) { fill(bits, bt + 1, et, -1L); bits.set(bt, bits.get(bt) | (-1L << (b & 0x3F))); bits.set(et, bits.get(et) | ~(-1L << (e & 0x3F))); } else { bits.set(bt, bits.get(bt) | ((-1L << (b & 0x3F)) & ~(-1L << (e & 0x3F)))); } }
public final void clearRange(final int b, final int e) { final int bt = b >> 6; final int et = e >> 6; if (bt != et) { fill(bits, bt + 1, et, 0L); bits.set(bt, bits.get(bt) & ~(-1L << (b & 0x3F))); bits.set(et, bits.get(et) & (-1L << (e & 0x3F))); } else { bits.set(bt, bits.get(bt) & (~(-1L << (b & 0x3F)) | (-1L << (e & 0x3F)))); } }
public final void and(final MMapFastBitSet other) { for (int i = 0; i < arraySize; ++i) bits.set(i, bits.get(i) & other.bits.get(i)); }
public final void nand(final MMapFastBitSet other) { for (int i = 0; i < arraySize; ++i) bits.set(i, ~(bits.get(i) & other.bits.get(i))); }
public final void or(final MMapFastBitSet other) { for (int i = 0; i < arraySize; ++i) bits.set(i, bits.get(i) | other.bits.get(i)); }
public final void nor(final MMapFastBitSet other) { for (int i = 0; i < arraySize; ++i) bits.set(i, ~(bits.get(i) | other.bits.get(i))); }
public final void xor(final MMapFastBitSet other) { for (int i = 0; i < arraySize; ++i) bits.set(i, bits.get(i) ^ other.bits.get(i)); }
public static MMapBuffer cacheLongFieldToFile(UnsortedIntTermDocIterator iterator, int numDocs, File file) throws IOException { final int[] docIdBuf = new int[BUFFER_SIZE]; final int length = numDocs * 8; final MMapBuffer buffer = new MMapBuffer(file, 0L, length, FileChannel.MapMode.READ_WRITE, ByteOrder.LITTLE_ENDIAN); final LongArray longArray = buffer.memory().longArray(0, numDocs); try { while (iterator.nextTerm()) { final long term = iterator.term(); while (true) { final int n = iterator.nextDocs(docIdBuf); for (int i = 0; i < n; ++i) { longArray.set(docIdBuf[i], term); } if (n < docIdBuf.length) { break; } } } buffer.sync(0, length); } catch (RuntimeException e) { Closeables2.closeQuietly(buffer, LOG); throw e; } catch (IOException e) { Closeables2.closeQuietly(buffer, LOG); throw e; } return buffer; }