Skip to content

Commit

Permalink
bytedeco#391 Apply changes to all indexers
Browse files Browse the repository at this point in the history
  • Loading branch information
matteodg committed Apr 20, 2020
1 parent d2cf463 commit 9e13085
Show file tree
Hide file tree
Showing 56 changed files with 1,464 additions and 512 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@

package org.bytedeco.javacpp.indexer;

import static org.bytedeco.javacpp.indexer.CustomStridesIndex.customStrides;
import static org.bytedeco.javacpp.indexer.DefaultIndex.defaultIndex;

/**
* An indexer for a {@code short[]} array, treated as bfloat16.
*
Expand All @@ -31,26 +34,36 @@ public class Bfloat16ArrayIndexer extends Bfloat16Indexer {
/** The backing array. */
protected short[] array;

/** Calls {@code Bfloat16ArrayIndexer(array, { array.length }, { 1 })}. */
/** Calls {@code Bfloat16ArrayIndexer(array, defaultIndex({ array.length }))}. */
public Bfloat16ArrayIndexer(short[] array) {
this(array, new long[] { array.length }, ONE_STRIDE);
this(array, defaultIndex(array.length));
}

/** Calls {@code Bfloat16ArrayIndexer(array, sizes, strides(sizes))}. */
public Bfloat16ArrayIndexer(short[] array, long... sizes) {
this(array, sizes, strides(sizes));
/** Calls {@code Bfloat16ArrayIndexer(array, sizes)}. */
@Deprecated public Bfloat16ArrayIndexer(short[] array, long... sizes) {
this(array, defaultIndex(sizes));
}

/** Constructor to set the {@link #array}, {@link #sizes} and {@link #strides}. */
public Bfloat16ArrayIndexer(short[] array, long[] sizes, long[] strides) {
super(sizes, strides);
@Deprecated public Bfloat16ArrayIndexer(short[] array, long[] sizes, long[] strides) {
this(array, customStrides(sizes, strides));
}

/** Constructor to set the {@link #array} and {@link #index}. */
public Bfloat16ArrayIndexer(short[] array, Index index) {
super(index);
this.array = array;
}

@Override public short[] array() {
return array;
}

@Override
public Bfloat16Indexer slice(Index index) {
return new Bfloat16ArrayIndexer(array, index);
}

@Override public float get(long i) {
return toFloat(array[(int)index(i)]);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

import java.nio.Buffer;
import java.nio.ShortBuffer;
import static org.bytedeco.javacpp.indexer.CustomStridesIndex.customStrides;
import static org.bytedeco.javacpp.indexer.DefaultIndex.defaultIndex;

/**
* An indexer for a {@link ShortBuffer}, treated as bfloat16.
Expand All @@ -34,26 +36,36 @@ public class Bfloat16BufferIndexer extends Bfloat16Indexer {
/** The backing buffer. */
protected ShortBuffer buffer;

/** Calls {@code Bfloat16BufferIndexer(buffer, { buffer.limit() }, { 1 })}. */
/** Calls {@code Bfloat16BufferIndexer(buffer, defaultIndex({ buffer.limit() }))}. */
public Bfloat16BufferIndexer(ShortBuffer buffer) {
this(buffer, new long[] { buffer.limit() }, ONE_STRIDE);
this(buffer, defaultIndex(buffer.limit()));
}

/** Calls {@code Bfloat16BufferIndexer(buffer, sizes, strides(sizes))}. */
public Bfloat16BufferIndexer(ShortBuffer buffer, long... sizes) {
this(buffer, sizes, strides(sizes));
/** Calls {@code Bfloat16BufferIndexer(buffer, defaultIndex(sizes))}. */
@Deprecated public Bfloat16BufferIndexer(ShortBuffer buffer, long... sizes) {
this(buffer, defaultIndex(sizes));
}

/** Constructor to set the {@link #buffer}, {@link #sizes} and {@link #strides}. */
public Bfloat16BufferIndexer(ShortBuffer buffer, long[] sizes, long[] strides) {
super(sizes, strides);
@Deprecated public Bfloat16BufferIndexer(ShortBuffer buffer, long[] sizes, long[] strides) {
this(buffer, customStrides(sizes, strides));
}

/** Constructor to set the {@link #buffer} and {@link #index}. */
public Bfloat16BufferIndexer(ShortBuffer buffer, Index index) {
super(index);
this.buffer = buffer;
}

@Override public Buffer buffer() {
return buffer;
}

@Override
public Bfloat16Indexer slice(Index index) {
return new Bfloat16BufferIndexer(buffer, index);
}

@Override public float get(long i) {
return toFloat(buffer.get((int)index(i)));
}
Expand Down
63 changes: 47 additions & 16 deletions src/main/java/org/bytedeco/javacpp/indexer/Bfloat16Indexer.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

import java.nio.ShortBuffer;
import org.bytedeco.javacpp.ShortPointer;
import static org.bytedeco.javacpp.indexer.CustomStridesIndex.customStrides;

/**
* Abstract indexer for the {@code short} primitive type, treated as bfloat16.
Expand All @@ -36,6 +37,11 @@ public abstract class Bfloat16Indexer extends Indexer {
/** The number of bytes used to represent a short. */
public static final int VALUE_BYTES = 2;

protected Bfloat16Indexer(Index index) {
super(index);
}

@Deprecated
protected Bfloat16Indexer(long[] sizes, long[] strides) {
super(sizes, strides);
}
Expand All @@ -48,35 +54,48 @@ public static Bfloat16Indexer create(short[] array) {
public static Bfloat16Indexer create(ShortBuffer buffer) {
return new Bfloat16BufferIndexer(buffer);
}
/** Returns {@code create(pointer, { pointer.limit() - pointer.position() }, { 1 }, true)} */
/** Returns {@code new Bfloat16RawIndexer(pointer} */
public static Bfloat16Indexer create(ShortPointer pointer) {
return create(pointer, new long[] { pointer.limit() - pointer.position() }, ONE_STRIDE);
return new Bfloat16RawIndexer(pointer);
}

/** Returns {@code new Bfloat16ArrayIndexer(array, index)} */
public static Bfloat16Indexer create(short[] array, Index index) {
return new Bfloat16ArrayIndexer(array, index);
}
/** Returns {@code new Bfloat16BufferIndexer(buffer, index)} */
public static Bfloat16Indexer create(ShortBuffer buffer, Index index) {
return new Bfloat16BufferIndexer(buffer, index);
}
/** Returns {@code new Bfloat16RawIndexer(pointer, index)} */
public static Bfloat16Indexer create(ShortPointer pointer, Index index) {
return new Bfloat16RawIndexer(pointer, index);
}

/** Returns {@code new Bfloat16ArrayIndexer(array, sizes)} */
public static Bfloat16Indexer create(short[] array, long... sizes) {
@Deprecated public static Bfloat16Indexer create(short[] array, long... sizes) {
return new Bfloat16ArrayIndexer(array, sizes);
}
/** Returns {@code new Bfloat16BufferIndexer(buffer, sizes)} */
public static Bfloat16Indexer create(ShortBuffer buffer, long... sizes) {
@Deprecated public static Bfloat16Indexer create(ShortBuffer buffer, long... sizes) {
return new Bfloat16BufferIndexer(buffer, sizes);
}
/** Returns {@code create(pointer, sizes, strides(sizes))} */
public static Bfloat16Indexer create(ShortPointer pointer, long... sizes) {
return create(pointer, sizes, strides(sizes));
/** Returns {@code new Bfloat16RawIndexer(pointer, sizes)} */
@Deprecated public static Bfloat16Indexer create(ShortPointer pointer, long... sizes) {
return new Bfloat16RawIndexer(pointer, sizes);
}

/** Returns {@code new Bfloat16ArrayIndexer(array, sizes, strides)} */
public static Bfloat16Indexer create(short[] array, long[] sizes, long[] strides) {
@Deprecated public static Bfloat16Indexer create(short[] array, long[] sizes, long[] strides) {
return new Bfloat16ArrayIndexer(array, sizes, strides);
}
/** Returns {@code new Bfloat16BufferIndexer(buffer, sizes, strides)} */
public static Bfloat16Indexer create(ShortBuffer buffer, long[] sizes, long[] strides) {
@Deprecated public static Bfloat16Indexer create(ShortBuffer buffer, long[] sizes, long[] strides) {
return new Bfloat16BufferIndexer(buffer, sizes, strides);
}
/** Returns {@code create(pointer, sizes, strides, true)} */
public static Bfloat16Indexer create(ShortPointer pointer, long[] sizes, long[] strides) {
return create(pointer, sizes, strides, true);
/** Returns {@code new Bfloat16RawIndexer(pointer, sizes, strides)} */
@Deprecated public static Bfloat16Indexer create(ShortPointer pointer, long[] sizes, long[] strides) {
return new Bfloat16RawIndexer(pointer, sizes, strides);
}
/**
* Creates a bfloat16 indexer to access efficiently the data of a pointer.
Expand All @@ -85,15 +104,27 @@ public static Bfloat16Indexer create(ShortPointer pointer, long[] sizes, long[]
* @param direct {@code true} to use a direct buffer, see {@link Indexer} for details
* @return the new bfloat16 indexer backed by the raw memory interface, a buffer, or an array
*/
public static Bfloat16Indexer create(final ShortPointer pointer, long[] sizes, long[] strides, boolean direct) {
@Deprecated public static Bfloat16Indexer create(final ShortPointer pointer, long[] sizes, long[] strides, boolean direct) {
return create(pointer, customStrides(sizes, strides), direct);
}

/**
* Creates a bfloat16 indexer to access efficiently the data of a pointer.
*
* @param pointer data to access via a buffer or to copy to an array
* @param index TODO
* @param direct {@code true} to use a direct buffer, see {@link Indexer} for details
* @return the new bfloat16 indexer backed by the raw memory interface, a buffer, or an array
*/
public static Bfloat16Indexer create(final ShortPointer pointer, Index index, boolean direct) {
if (direct) {
return Raw.getInstance() != null ? new Bfloat16RawIndexer(pointer, sizes, strides)
: new Bfloat16BufferIndexer(pointer.asBuffer(), sizes, strides);
return Raw.getInstance() != null ? new Bfloat16RawIndexer(pointer, index)
: new Bfloat16BufferIndexer(pointer.asBuffer(), index);
} else {
final long position = pointer.position();
short[] array = new short[(int)Math.min(pointer.limit() - position, Integer.MAX_VALUE)];
pointer.get(array);
return new Bfloat16ArrayIndexer(array, sizes, strides) {
return new Bfloat16ArrayIndexer(array, index) {
@Override public void release() {
pointer.position(position).put(array);
super.release();
Expand Down
26 changes: 19 additions & 7 deletions src/main/java/org/bytedeco/javacpp/indexer/Bfloat16RawIndexer.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

import org.bytedeco.javacpp.Pointer;
import org.bytedeco.javacpp.ShortPointer;
import static org.bytedeco.javacpp.indexer.CustomStridesIndex.customStrides;
import static org.bytedeco.javacpp.indexer.DefaultIndex.defaultIndex;

/**
* An indexer for a {@link ShortPointer} using the {@link Raw} instance, treated as bfloat16.
Expand All @@ -38,19 +40,24 @@ public class Bfloat16RawIndexer extends Bfloat16Indexer {
/** Base address and number of elements accessible. */
final long base, size;

/** Calls {@code Bfloat16RawIndexer(pointer, { pointer.limit() - pointer.position() }, { 1 })}. */
/** Calls {@code Bfloat16RawIndexer(pointer, defaultIndex({ pointer.limit() - pointer.position() }))}. */
public Bfloat16RawIndexer(ShortPointer pointer) {
this(pointer, new long[] { pointer.limit() - pointer.position() }, ONE_STRIDE);
this(pointer, defaultIndex( pointer.limit() - pointer.position() ));
}

/** Calls {@code Bfloat16RawIndexer(pointer, sizes, strides(sizes))}. */
public Bfloat16RawIndexer(ShortPointer pointer, long... sizes) {
this(pointer, sizes, strides(sizes));
/** Calls {@code Bfloat16RawIndexer(pointer, defaultIndex(sizes))}. */
@Deprecated public Bfloat16RawIndexer(ShortPointer pointer, long... sizes) {
this(pointer, defaultIndex(sizes));
}

/** Constructor to set the {@link #pointer}, {@link #sizes} and {@link #strides}. */
public Bfloat16RawIndexer(ShortPointer pointer, long[] sizes, long[] strides) {
super(sizes, strides);
@Deprecated public Bfloat16RawIndexer(ShortPointer pointer, long[] sizes, long[] strides) {
this(pointer, customStrides(sizes, strides));
}

/** Constructor to set the {@link #pointer} and {@link #index}. */
public Bfloat16RawIndexer(ShortPointer pointer, Index index) {
super(index);
this.pointer = pointer;
base = pointer.address() + pointer.position() * VALUE_BYTES;
size = pointer.limit() - pointer.position();
Expand All @@ -60,6 +67,11 @@ public Bfloat16RawIndexer(ShortPointer pointer, long[] sizes, long[] strides) {
return pointer;
}

@Override
public Bfloat16Indexer slice(Index index) {
return new Bfloat16RawIndexer(pointer, index);
}

public float getRaw(long i) {
return toFloat(RAW.getShort(base + checkIndex(i, size) * VALUE_BYTES));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@

package org.bytedeco.javacpp.indexer;

import static org.bytedeco.javacpp.indexer.CustomStridesIndex.customStrides;
import static org.bytedeco.javacpp.indexer.DefaultIndex.defaultIndex;

/**
* An indexer for a {@code boolean[]} array.
*
Expand All @@ -31,26 +34,36 @@ public class BooleanArrayIndexer extends BooleanIndexer {
/** The backing array. */
protected boolean[] array;

/** Calls {@code BooleanArrayIndexer(array, { array.length }, { 1 })}. */
/** Calls {@code BooleanArrayIndexer(array, defaultIndex({ array.length }))}. */
public BooleanArrayIndexer(boolean[] array) {
this(array, new long[] { array.length }, ONE_STRIDE);
this(array, defaultIndex(array.length));
}

/** Calls {@code BooleanArrayIndexer(array, sizes, strides(sizes))}. */
public BooleanArrayIndexer(boolean[] array, long... sizes) {
this(array, sizes, strides(sizes));
/** Calls {@code BooleanArrayIndexer(array, sizes)}. */
@Deprecated public BooleanArrayIndexer(boolean[] array, long... sizes) {
this(array, defaultIndex(sizes));
}

/** Constructor to set the {@link #array}, {@link #sizes} and {@link #strides}. */
public BooleanArrayIndexer(boolean[] array, long[] sizes, long[] strides) {
super(sizes, strides);
@Deprecated public BooleanArrayIndexer(boolean[] array, long[] sizes, long[] strides) {
this(array, customStrides(sizes, strides));
}

/** Constructor to set the {@link #array} and {@link #index}. */
public BooleanArrayIndexer(boolean[] array, Index index) {
super(index);
this.array = array;
}

@Override public boolean[] array() {
return array;
}

@Override
public BooleanIndexer slice(Index index) {
return new BooleanArrayIndexer(array, index);
}

@Override public boolean get(long i) {
return array[(int)index(i)];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

import java.nio.Buffer;
import java.nio.ByteBuffer;
import static org.bytedeco.javacpp.indexer.CustomStridesIndex.customStrides;
import static org.bytedeco.javacpp.indexer.DefaultIndex.defaultIndex;

/**
* An indexer for a {@link ByteBuffer} as {@code boolean} values.
Expand All @@ -34,26 +36,36 @@ public class BooleanBufferIndexer extends BooleanIndexer {
/** The backing buffer. */
protected ByteBuffer buffer;

/** Calls {@code BooleanBufferIndexer(buffer, { buffer.limit() }, { 1 })}. */
/** Calls {@code BooleanBufferIndexer(buffer, defaultIndex({ buffer.limit() }))}. */
public BooleanBufferIndexer(ByteBuffer buffer) {
this(buffer, new long[] { buffer.limit() }, ONE_STRIDE);
this(buffer, defaultIndex(buffer.limit()));
}

/** Calls {@code BooleanBufferIndexer(buffer, sizes, strides(sizes))}. */
public BooleanBufferIndexer(ByteBuffer buffer, long... sizes) {
this(buffer, sizes, strides(sizes));
/** Calls {@code BooleanBufferIndexer(buffer, defaultIndex(sizes))}. */
@Deprecated public BooleanBufferIndexer(ByteBuffer buffer, long... sizes) {
this(buffer, defaultIndex(sizes));
}

/** Constructor to set the {@link #buffer}, {@link #sizes} and {@link #strides}. */
public BooleanBufferIndexer(ByteBuffer buffer, long[] sizes, long[] strides) {
super(sizes, strides);
@Deprecated public BooleanBufferIndexer(ByteBuffer buffer, long[] sizes, long[] strides) {
this(buffer, customStrides(sizes, strides));
}

/** Constructor to set the {@link #buffer} and {@link #index}. */
public BooleanBufferIndexer(ByteBuffer buffer, Index index) {
super(index);
this.buffer = buffer;
}

@Override public Buffer buffer() {
return buffer;
}

@Override
public BooleanIndexer slice(Index index) {
return new BooleanBufferIndexer(buffer, index);
}

@Override public boolean get(long i) {
return buffer.get((int)index(i)) != 0;
}
Expand Down
Loading

0 comments on commit 9e13085

Please sign in to comment.