/** Returns {@code new BooleanBufferIndexer(buffer)} */ public static BooleanIndexer create(ByteBuffer buffer) { return new BooleanBufferIndexer(buffer); } /** Returns {@code create(pointer, { pointer.limit() - pointer.position() }, { 1 }, true)} */
@Override public BooleanIndexer get(long[] indices, boolean[] b, int offset, int length) { for (int n = 0; n < length; n++) { b[offset + n] = buffer.get((int)index(indices) + n) != 0; } return this; }
@Override public BooleanIndexer put(long[] indices, boolean[] b, int offset, int length) { for (int n = 0; n < length; n++) { buffer.put((int)index(indices) + n, b[offset + n] ? (byte)1 : (byte)0); } return this; }
/** Returns {@code new BooleanBufferIndexer(buffer, sizes, strides)} */ public static BooleanIndexer create(ByteBuffer buffer, long[] sizes, long[] strides) { return new BooleanBufferIndexer(buffer, sizes, strides); } /** Returns {@code create(pointer, sizes, strides, true)} */
@Override public BooleanIndexer put(long[] indices, boolean b) { buffer.put((int)index(indices), b ? (byte)1 : (byte)0); return this; } @Override public BooleanIndexer put(long[] indices, boolean[] b, int offset, int length) {
/** * Creates a boolean indexer to access efficiently the data of a pointer. * * @param pointer data to access via a buffer or to copy to an array * @param direct {@code true} to use a direct buffer, see {@link Indexer} for details * @return the new boolean indexer backed by the raw memory interface, a buffer, or an array */ public static BooleanIndexer create(final BooleanPointer pointer, long[] sizes, long[] strides, boolean direct) { if (direct) { return Raw.getInstance() != null ? new BooleanRawIndexer(pointer, sizes, strides) : new BooleanBufferIndexer(pointer.asByteBuffer(), sizes, strides); } else { final long position = pointer.position(); boolean[] array = new boolean[(int)Math.min(pointer.limit() - position, Integer.MAX_VALUE)]; pointer.get(array); return new BooleanArrayIndexer(array, sizes, strides) { @Override public void release() { pointer.position(position).put(array); super.release(); } }; } }
@Override public boolean get(long... indices) { return buffer.get((int)index(indices)) != 0; } @Override public BooleanIndexer get(long[] indices, boolean[] b, int offset, int length) {