Modifier and Type | Field and Description |
---|---|
static int |
SIZEOF_BYTE |
static int |
SIZEOF_CHAR |
static int |
SIZEOF_DOUBLE |
static int |
SIZEOF_FLOAT |
static int |
SIZEOF_INT |
static int |
SIZEOF_LONG |
static int |
SIZEOF_SHORT |
Modifier | Constructor and Description |
---|---|
protected |
Buffers() |
Modifier and Type | Method and Description |
---|---|
static ByteBuffer |
copyByteBuffer(ByteBuffer orig)
Copies the remaining elements (as defined by
limit() - position() ) in the passed ByteBuffer into
a newly-allocated direct ByteBuffer. |
static FloatBuffer |
copyFloatBuffer(FloatBuffer orig)
Copies the remaining elements (as defined by
limit() - position() ) in the passed FloatBuffer
into a newly-allocated direct FloatBuffer. |
static ByteBuffer |
copyFloatBufferAsByteBuffer(FloatBuffer orig)
Copies the remaining elements (as defined by
limit() - position() ) in the passed FloatBuffer
into a newly-allocated direct ByteBuffer. |
static IntBuffer |
copyIntBuffer(IntBuffer orig)
Copies the remaining elements (as defined by
limit() - position() ) in the passed IntBuffer
into a newly-allocated direct IntBuffer. |
static ByteBuffer |
copyIntBufferAsByteBuffer(IntBuffer orig)
Copies the remaining elements (as defined by
limit() - position() ) in the passed IntBuffer into
a newly-allocated direct ByteBuffer. |
static ShortBuffer |
copyShortBuffer(ShortBuffer orig)
Copies the remaining elements (as defined by
limit() - position() ) in the passed ShortBuffer
into a newly-allocated direct ShortBuffer. |
static ByteBuffer |
copyShortBufferAsByteBuffer(ShortBuffer orig)
Copies the remaining elements (as defined by
limit() - position() ) in the passed ShortBuffer
into a newly-allocated direct ByteBuffer. |
static Object |
getArray(Object buf)
Helper routine to return the array backing store reference from
a Buffer object.
|
static int |
getDirectBufferByteOffset(Object buf)
Helper routine to get the Buffer byte offset by taking into
account the Buffer position and the underlying type.
|
static double[] |
getDoubleArray(float[] source,
int soffset,
double[] dest,
int doffset,
int len) |
static DoubleBuffer |
getDoubleBuffer(FloatBuffer source,
DoubleBuffer dest)
No rewind or repositioning is performed.
|
static float[] |
getFloatArray(double[] source,
int soffset,
float[] dest,
int doffset,
int len) |
static FloatBuffer |
getFloatBuffer(DoubleBuffer source,
FloatBuffer dest)
No rewind or repositioning is performed.
|
static int |
getIndirectBufferByteOffset(Object buf)
Helper routine to get the full byte offset from the beginning of
the array that is the storage for the indirect Buffer
object.
|
static boolean |
isDirect(Object buf)
Helper routine to tell whether a buffer is direct or not.
|
static ByteBuffer |
nativeOrder(ByteBuffer buf)
Helper routine to set a ByteBuffer to the native byte order, if
that operation is supported by the underlying NIO
implementation.
|
static ByteBuffer |
newDirectByteBuffer(byte[] values) |
static ByteBuffer |
newDirectByteBuffer(byte[] values,
int offset) |
static ByteBuffer |
newDirectByteBuffer(byte[] values,
int offset,
int length) |
static ByteBuffer |
newDirectByteBuffer(int numElements)
Allocates a new direct ByteBuffer with the specified number of
elements.
|
static CharBuffer |
newDirectCharBuffer(char[] values) |
static CharBuffer |
newDirectCharBuffer(char[] values,
int offset) |
static CharBuffer |
newDirectCharBuffer(char[] values,
int offset,
int length) |
static CharBuffer |
newDirectCharBuffer(int numElements)
Allocates a new direct CharBuffer with the specified number of
elements.
|
static DoubleBuffer |
newDirectDoubleBuffer(double[] values) |
static DoubleBuffer |
newDirectDoubleBuffer(double[] values,
int offset) |
static DoubleBuffer |
newDirectDoubleBuffer(double[] values,
int offset,
int length) |
static DoubleBuffer |
newDirectDoubleBuffer(int numElements)
Allocates a new direct DoubleBuffer with the specified number of
elements.
|
static FloatBuffer |
newDirectFloatBuffer(float[] values) |
static FloatBuffer |
newDirectFloatBuffer(float[] values,
int offset) |
static FloatBuffer |
newDirectFloatBuffer(float[] values,
int offset,
int length) |
static FloatBuffer |
newDirectFloatBuffer(int numElements)
Allocates a new direct FloatBuffer with the specified number of
elements.
|
static IntBuffer |
newDirectIntBuffer(int numElements)
Allocates a new direct IntBuffer with the specified number of
elements.
|
static IntBuffer |
newDirectIntBuffer(int[] values) |
static IntBuffer |
newDirectIntBuffer(int[] values,
int offset) |
static IntBuffer |
newDirectIntBuffer(int[] values,
int offset,
int length) |
static LongBuffer |
newDirectLongBuffer(int numElements)
Allocates a new direct LongBuffer with the specified number of
elements.
|
static LongBuffer |
newDirectLongBuffer(long[] values) |
static LongBuffer |
newDirectLongBuffer(long[] values,
int offset) |
static LongBuffer |
newDirectLongBuffer(long[] values,
int offset,
int length) |
static ShortBuffer |
newDirectShortBuffer(int numElements)
Allocates a new direct ShortBuffer with the specified number of
elements.
|
static ShortBuffer |
newDirectShortBuffer(short[] values) |
static ShortBuffer |
newDirectShortBuffer(short[] values,
int offset) |
static ShortBuffer |
newDirectShortBuffer(short[] values,
int offset,
int length) |
static <B extends Buffer> |
put(B dest,
Buffer src) |
static <B extends Buffer> |
putb(B dest,
byte v) |
static <B extends Buffer> |
putd(B dest,
double v) |
static <B extends Buffer> |
putf(B dest,
float v) |
static <B extends Buffer> |
puti(B dest,
int v) |
static <B extends Buffer> |
putNb(B dest,
boolean dSigned,
byte v,
boolean sSigned)
Store byte source value in given buffer after normalizing it to the destination value range
considering signed and unsigned source and destination representation.
|
static <B extends Buffer> |
putNf(B dest,
boolean dSigned,
float v)
Store float source value in given buffer after normalizing it to the destination value range
considering signed and unsigned destination representation.
|
static <B extends Buffer> |
putNi(B dest,
boolean dSigned,
int v,
boolean sSigned)
Store short source value in given buffer after normalizing it to the destination value range
considering signed and unsigned source and destination representation.
|
static <B extends Buffer> |
putNs(B dest,
boolean dSigned,
short v,
boolean sSigned)
Store short source value in given buffer after normalizing it to the destination value range
considering signed and unsigned source and destination representation.
|
static <B extends Buffer> |
puts(B dest,
short v) |
static void |
rangeCheck(Buffer buffer,
int minElementsRemaining) |
static void |
rangeCheck(byte[] array,
int offset,
int minElementsRemaining) |
static void |
rangeCheck(char[] array,
int offset,
int minElementsRemaining) |
static void |
rangeCheck(double[] array,
int offset,
int minElementsRemaining) |
static void |
rangeCheck(float[] array,
int offset,
int minElementsRemaining) |
static void |
rangeCheck(int[] array,
int offset,
int minElementsRemaining) |
static void |
rangeCheck(long[] array,
int offset,
int minElementsRemaining) |
static void |
rangeCheck(short[] array,
int offset,
int minElementsRemaining) |
static void |
rangeCheckBytes(Object buffer,
int minBytesRemaining) |
static int |
remainingBytes(Object buffer)
Returns the number of remaining bytes of the given anonymous
buffer . |
static int |
remainingElem(Object buffer)
Returns the number of remaining elements of the given anonymous
buffer . |
static int |
sizeOfBufferElem(Object buffer)
Returns the size of a single element of the given buffer in bytes
or
0 if the given buffer is null . |
static <B extends Buffer> |
slice(B buffer)
Calls slice on the specified buffer while maintaining the byteorder.
|
static <B extends Buffer> |
slice(B buffer,
int offset,
int size)
Slices the specified buffer with offset as position and offset+size as limit
while maintaining the byteorder.
|
static FloatBuffer |
slice2Float(Buffer buf,
int floatStartPos,
int floatSize)
Slices a ByteBuffer or a FloatBuffer to a FloatBuffer
at the given position with the given size in float-space.
|
static FloatBuffer |
slice2Float(float[] backing,
int floatStartPos,
int floatSize)
Slices a primitive float backing array to a FloatBuffer at the given position with the given size
in float-space by
wrapping the backing array. |
static StringBuilder |
toString(StringBuilder sb,
String f,
Buffer buffer)
Appends Buffer details inclusive data to a StringBuilder instance.
|
public static final int SIZEOF_BYTE
public static final int SIZEOF_SHORT
public static final int SIZEOF_CHAR
public static final int SIZEOF_INT
public static final int SIZEOF_FLOAT
public static final int SIZEOF_LONG
public static final int SIZEOF_DOUBLE
public static ByteBuffer newDirectByteBuffer(int numElements)
public static ByteBuffer newDirectByteBuffer(byte[] values, int offset, int length)
public static ByteBuffer newDirectByteBuffer(byte[] values, int offset)
public static ByteBuffer newDirectByteBuffer(byte[] values)
public static DoubleBuffer newDirectDoubleBuffer(int numElements)
public static DoubleBuffer newDirectDoubleBuffer(double[] values, int offset, int length)
public static DoubleBuffer newDirectDoubleBuffer(double[] values, int offset)
public static DoubleBuffer newDirectDoubleBuffer(double[] values)
public static FloatBuffer newDirectFloatBuffer(int numElements)
public static FloatBuffer newDirectFloatBuffer(float[] values, int offset, int length)
public static FloatBuffer newDirectFloatBuffer(float[] values, int offset)
public static FloatBuffer newDirectFloatBuffer(float[] values)
public static IntBuffer newDirectIntBuffer(int numElements)
public static IntBuffer newDirectIntBuffer(int[] values, int offset, int length)
public static IntBuffer newDirectIntBuffer(int[] values, int offset)
public static IntBuffer newDirectIntBuffer(int[] values)
public static LongBuffer newDirectLongBuffer(int numElements)
public static LongBuffer newDirectLongBuffer(long[] values, int offset, int length)
public static LongBuffer newDirectLongBuffer(long[] values, int offset)
public static LongBuffer newDirectLongBuffer(long[] values)
public static ShortBuffer newDirectShortBuffer(int numElements)
public static ShortBuffer newDirectShortBuffer(short[] values, int offset, int length)
public static ShortBuffer newDirectShortBuffer(short[] values, int offset)
public static ShortBuffer newDirectShortBuffer(short[] values)
public static CharBuffer newDirectCharBuffer(int numElements)
public static CharBuffer newDirectCharBuffer(char[] values, int offset, int length)
public static CharBuffer newDirectCharBuffer(char[] values, int offset)
public static CharBuffer newDirectCharBuffer(char[] values)
public static <B extends Buffer> B slice(B buffer)
slice(java.nio.Buffer, int, int)
public static <B extends Buffer> B slice(B buffer, int offset, int size)
public static final FloatBuffer slice2Float(Buffer buf, int floatStartPos, int floatSize)
The returned sliced buffer's start position is always zero.
The returned sliced buffer is marked
at it's start position
. Hence
Buffer.reset()
will rewind it to start after applying relative operations like FloatBuffer.get()
.
Using a ByteBuffer as the source guarantees keeping the source native order programmatically. This works around Honeycomb / Android 3.0 Issue 16434. This bug is resolved at least in Android 3.2.
buf
- source Buffer, maybe ByteBuffer (recommended) or FloatBuffer.
Buffer's position is ignored and floatPos is being used.floatStartPos
- SIZEOF_FLOAT
positionfloatSize
- SIZEOF_FLOAT
sizepublic static final FloatBuffer slice2Float(float[] backing, int floatStartPos, int floatSize)
wrapping
the backing array.
Due to wrapping
the backing array,
the returned sliced buffer's start position
equals
the given floatStartPos
within the given backing array
while it's array-offset
is zero.
This has the advantage of being able to dismiss the array-offset
in user code, while only being required to consider it's position
.
The returned sliced buffer is marked
at it's start position
. Hence
Buffer.reset()
will rewind it to start after applying relative operations like FloatBuffer.get()
.
backing
- source float arrayfloatStartPos
- SIZEOF_FLOAT
positionfloatSize
- SIZEOF_FLOAT
sizepublic static ByteBuffer nativeOrder(ByteBuffer buf)
public static int sizeOfBufferElem(Object buffer)
0
if the given buffer is null
.public static int remainingElem(Object buffer) throws IllegalArgumentException
buffer
.buffer
- Anonymous Buffer of type NativeBuffer
or a derivation of Buffer
.buffer
is null, returns 0, otherwise the remaining size in elements.
IllegalArgumentException
- if buffer
is of invalid type.public static int remainingBytes(Object buffer) throws IllegalArgumentException
buffer
.buffer
- Anonymous Buffer of type NativeBuffer
or a derivation of Buffer
.buffer
is null, returns 0, otherwise the remaining size in bytes.
IllegalArgumentException
- if buffer
is of invalid type.public static boolean isDirect(Object buf)
public static int getDirectBufferByteOffset(Object buf)
public static Object getArray(Object buf) throws UnsupportedOperationException, IllegalArgumentException
UnsupportedOperationException
- if the passed Object does not have an array backing storeIllegalArgumentException
- if the passed Object is neither of type Buffer
or NativeBuffer
.public static int getIndirectBufferByteOffset(Object buf)
public static ByteBuffer copyByteBuffer(ByteBuffer orig)
limit() - position()
) in the passed ByteBuffer into
a newly-allocated direct ByteBuffer. The returned buffer will
have its byte order set to the host platform's native byte
order. The position of the newly-allocated buffer will be zero,
and the position of the passed buffer is unchanged.public static FloatBuffer copyFloatBuffer(FloatBuffer orig)
limit() - position()
) in the passed FloatBuffer
into a newly-allocated direct FloatBuffer. The returned buffer
will have its byte order set to the host platform's native byte
order. The position of the newly-allocated buffer will be zero,
and the position of the passed buffer is unchanged.public static IntBuffer copyIntBuffer(IntBuffer orig)
limit() - position()
) in the passed IntBuffer
into a newly-allocated direct IntBuffer. The returned buffer
will have its byte order set to the host platform's native byte
order. The position of the newly-allocated buffer will be zero,
and the position of the passed buffer is unchanged.public static ShortBuffer copyShortBuffer(ShortBuffer orig)
limit() - position()
) in the passed ShortBuffer
into a newly-allocated direct ShortBuffer. The returned buffer
will have its byte order set to the host platform's native byte
order. The position of the newly-allocated buffer will be zero,
and the position of the passed buffer is unchanged.public static ByteBuffer copyFloatBufferAsByteBuffer(FloatBuffer orig)
limit() - position()
) in the passed FloatBuffer
into a newly-allocated direct ByteBuffer. The returned buffer
will have its byte order set to the host platform's native byte
order. The position of the newly-allocated buffer will be zero,
and the position of the passed buffer is unchanged.public static ByteBuffer copyIntBufferAsByteBuffer(IntBuffer orig)
limit() - position()
) in the passed IntBuffer into
a newly-allocated direct ByteBuffer. The returned buffer will
have its byte order set to the host platform's native byte
order. The position of the newly-allocated buffer will be zero,
and the position of the passed buffer is unchanged.public static ByteBuffer copyShortBufferAsByteBuffer(ShortBuffer orig)
limit() - position()
) in the passed ShortBuffer
into a newly-allocated direct ByteBuffer. The returned buffer
will have its byte order set to the host platform's native byte
order. The position of the newly-allocated buffer will be zero,
and the position of the passed buffer is unchanged.public static float[] getFloatArray(double[] source, int soffset, float[] dest, int doffset, int len)
source
- the source arraysoffset
- the offsetdest
- the target array, if null, a new array is being created with size len.doffset
- the offset in the dest arraylen
- the payload of elements to be copied, if len < 0
then len = source.length - soffset
public static FloatBuffer getFloatBuffer(DoubleBuffer source, FloatBuffer dest)
source
- the source buffer, which elements from it's current position and it's limit are being copieddest
- the target buffer, if null, a new buffer is being created with size source.remaining()public static double[] getDoubleArray(float[] source, int soffset, double[] dest, int doffset, int len)
source
- the source arraysoffset
- the offsetdest
- the target array, if null, a new array is being created with size len.doffset
- the offset in the dest arraylen
- the payload of elements to be copied, if len < 0
then len = source.length - soffset
public static DoubleBuffer getDoubleBuffer(FloatBuffer source, DoubleBuffer dest)
source
- the source buffer, which elements from it's current position and it's limit are being copieddest
- the target buffer, if null, a new buffer is being created with size source.remaining()public static <B extends Buffer> B putb(B dest, byte v)
public static <B extends Buffer> B puts(B dest, short v)
public static <B extends Buffer> B puti(B dest, int v)
public static <B extends Buffer> B putf(B dest, float v)
public static <B extends Buffer> B putd(B dest, double v)
public static <B extends Buffer> B putNb(B dest, boolean dSigned, byte v, boolean sSigned)
dest
- One of ByteBuffer
, ShortBuffer
, IntBuffer
, FloatBuffer
dSigned
- true if destination buffer holds signed values, false if destination buffer holds unsigned valuesv
- source byte value to be put in dest buffersSigned
- true if source represents a signed value, false if source represents an unsigned valuepublic static <B extends Buffer> B putNs(B dest, boolean dSigned, short v, boolean sSigned)
dest
- One of ByteBuffer
, ShortBuffer
, IntBuffer
, FloatBuffer
dSigned
- true if destination buffer holds signed values, false if destination buffer holds unsigned valuesv
- source short value to be put in dest buffersSigned
- true if source represents a signed value, false if source represents an unsigned valuepublic static <B extends Buffer> B putNi(B dest, boolean dSigned, int v, boolean sSigned)
dest
- One of ByteBuffer
, ShortBuffer
, IntBuffer
, FloatBuffer
dSigned
- true if destination buffer holds signed values, false if destination buffer holds unsigned valuesv
- source short value to be put in dest buffersSigned
- true if source represents a signed value, false if source represents an unsigned valuepublic static <B extends Buffer> B putNf(B dest, boolean dSigned, float v)
dest
- One of ByteBuffer
, ShortBuffer
, IntBuffer
, FloatBuffer
dSigned
- true if destination buffer holds signed values, false if destination buffer holds unsigned valuesv
- source float value to be put in dest bufferpublic static void rangeCheck(byte[] array, int offset, int minElementsRemaining)
public static void rangeCheck(char[] array, int offset, int minElementsRemaining)
public static void rangeCheck(short[] array, int offset, int minElementsRemaining)
public static void rangeCheck(int[] array, int offset, int minElementsRemaining)
public static void rangeCheck(long[] array, int offset, int minElementsRemaining)
public static void rangeCheck(float[] array, int offset, int minElementsRemaining)
public static void rangeCheck(double[] array, int offset, int minElementsRemaining)
public static void rangeCheck(Buffer buffer, int minElementsRemaining)
public static void rangeCheckBytes(Object buffer, int minBytesRemaining) throws IllegalArgumentException, IndexOutOfBoundsException
buffer
- buffer to test for minimumminBytesRemaining
- minimum bytes remainingIllegalArgumentException
- if buffer
is of invalid type.IndexOutOfBoundsException
- if remainingBytes(Object)
is < minBytesRemaining.
public static StringBuilder toString(StringBuilder sb, String f, Buffer buffer)
sb
- optional pass through StringBuilderf
- optional format string of one element, i.e. "%10.5f" for FloatBuffer
, see Formatter
,
or null
for unformatted output.
Note: Caller is responsible to match the format string w/ the data type as expected in the given buffer.buffer
- Any valid Buffer instance