summaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp/gluegen/runtime/Buffers.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2010-03-31 23:32:39 +0200
committerSven Gothel <[email protected]>2010-03-31 23:32:39 +0200
commite37c383c4a09432fff009e81d572c8a92b42eef6 (patch)
tree9ebb8bacc940a3460be1639ad771f8e5d98ad012 /src/java/com/jogamp/gluegen/runtime/Buffers.java
parent73829c38665c57052bf703ae58a2bd1dc7dc4625 (diff)
parent22262166e07de99ae0d4557e4f87e3bd1c5cd6dd (diff)
Merged with latest of mbien
Diffstat (limited to 'src/java/com/jogamp/gluegen/runtime/Buffers.java')
-rwxr-xr-xsrc/java/com/jogamp/gluegen/runtime/Buffers.java706
1 files changed, 0 insertions, 706 deletions
diff --git a/src/java/com/jogamp/gluegen/runtime/Buffers.java b/src/java/com/jogamp/gluegen/runtime/Buffers.java
deleted file mode 100755
index 49f6e8b..0000000
--- a/src/java/com/jogamp/gluegen/runtime/Buffers.java
+++ /dev/null
@@ -1,706 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-package com.jogamp.gluegen.runtime;
-
-import java.nio.*;
-
-/**
- * @author Kenneth Russel
- * @author Sven Gothel
- * @author Michael Bien
- */
-public class Buffers {
-
- public static final int SIZEOF_BYTE = 1;
- public static final int SIZEOF_SHORT = 2;
- public static final int SIZEOF_CHAR = 2;
- public static final int SIZEOF_INT = 4;
- public static final int SIZEOF_FLOAT = 4;
- public static final int SIZEOF_LONG = 8;
- public static final int SIZEOF_DOUBLE = 8;
-
- protected Buffers() {}
-
- /**
- * Allocates a new direct ByteBuffer with the specified number of
- * elements. The returned buffer will have its byte order set to
- * the host platform's native byte order.
- */
- public static ByteBuffer newDirectByteBuffer(int numElements) {
- return nativeOrder(ByteBuffer.allocateDirect(numElements));
- }
-
- public static ByteBuffer newDirectByteBuffer(byte[] values, int offset, int lenght) {
- return (ByteBuffer)newDirectByteBuffer(lenght).put(values, offset, lenght).rewind();
- }
-
- public static ByteBuffer newDirectByteBuffer(byte[] values, int offset) {
- return newDirectByteBuffer(values, offset, values.length-offset);
- }
-
- public static ByteBuffer newDirectByteBuffer(byte[] values) {
- return newDirectByteBuffer(values, 0);
- }
-
- /**
- * Allocates a new direct DoubleBuffer with the specified number of
- * elements. The returned buffer will have its byte order set to
- * the host platform's native byte order.
- */
- public static DoubleBuffer newDirectDoubleBuffer(int numElements) {
- return newDirectByteBuffer(numElements * SIZEOF_DOUBLE).asDoubleBuffer();
- }
-
- public static DoubleBuffer newDirectDoubleBuffer(double[] values, int offset, int lenght) {
- return (DoubleBuffer)newDirectDoubleBuffer(lenght).put(values, offset, lenght).rewind();
- }
-
- public static DoubleBuffer newDirectDoubleBuffer(double[] values, int offset) {
- return newDirectDoubleBuffer(values, offset, values.length - offset);
- }
-
- public static DoubleBuffer newDirectDoubleBuffer(double[] values) {
- return newDirectDoubleBuffer(values, 0);
- }
-
- /**
- * Allocates a new direct FloatBuffer with the specified number of
- * elements. The returned buffer will have its byte order set to
- * the host platform's native byte order.
- */
- public static FloatBuffer newDirectFloatBuffer(int numElements) {
- return newDirectByteBuffer(numElements * SIZEOF_FLOAT).asFloatBuffer();
- }
-
- public static FloatBuffer newDirectFloatBuffer(float[] values, int offset, int lenght) {
- return (FloatBuffer)newDirectFloatBuffer(lenght).put(values, offset, lenght).rewind();
- }
-
- public static FloatBuffer newDirectFloatBuffer(float[] values, int offset) {
- return newDirectFloatBuffer(values, offset, values.length - offset);
- }
-
- public static FloatBuffer newDirectFloatBuffer(float[] values) {
- return newDirectFloatBuffer(values, 0);
- }
-
- /**
- * Allocates a new direct IntBuffer with the specified number of
- * elements. The returned buffer will have its byte order set to
- * the host platform's native byte order.
- */
- public static IntBuffer newDirectIntBuffer(int numElements) {
- return newDirectByteBuffer(numElements * SIZEOF_INT).asIntBuffer();
- }
-
- public static IntBuffer newDirectIntBuffer(int[] values, int offset, int lenght) {
- return (IntBuffer)newDirectIntBuffer(lenght).put(values, offset, lenght).rewind();
- }
-
- public static IntBuffer newDirectIntBuffer(int[] values, int offset) {
- return newDirectIntBuffer(values, offset, values.length - offset);
- }
-
- public static IntBuffer newDirectIntBuffer(int[] values) {
- return newDirectIntBuffer(values, 0);
- }
-
- /**
- * Allocates a new direct LongBuffer with the specified number of
- * elements. The returned buffer will have its byte order set to
- * the host platform's native byte order.
- */
- public static LongBuffer newDirectLongBuffer(int numElements) {
- return newDirectByteBuffer(numElements * SIZEOF_LONG).asLongBuffer();
- }
-
- public static LongBuffer newDirectLongBuffer(long[] values, int offset, int lenght) {
- return (LongBuffer)newDirectLongBuffer(lenght).put(values, offset, lenght).rewind();
- }
-
- public static LongBuffer newDirectLongBuffer(long[] values, int offset) {
- return newDirectLongBuffer(values, offset, values.length - offset);
- }
-
- public static LongBuffer newDirectLongBuffer(long[] values) {
- return newDirectLongBuffer(values, 0);
- }
-
- /**
- * Allocates a new direct ShortBuffer with the specified number of
- * elements. The returned buffer will have its byte order set to
- * the host platform's native byte order.
- */
- public static ShortBuffer newDirectShortBuffer(int numElements) {
- return newDirectByteBuffer(numElements * SIZEOF_SHORT).asShortBuffer();
- }
-
- public static ShortBuffer newDirectShortBuffer(short[] values, int offset, int lenght) {
- return (ShortBuffer)newDirectShortBuffer(lenght).put(values, offset, lenght).rewind();
- }
-
- public static ShortBuffer newDirectShortBuffer(short[] values, int offset) {
- return newDirectShortBuffer(values, offset, values.length - offset);
- }
-
- public static ShortBuffer newDirectShortBuffer(short[] values) {
- return newDirectShortBuffer(values, 0);
- }
-
- /**
- * Allocates a new direct CharBuffer with the specified number of
- * elements. The returned buffer will have its byte order set to
- * the host platform's native byte order.
- */
- public static CharBuffer newDirectCharBuffer(int numElements) {
- return newDirectByteBuffer(numElements * SIZEOF_SHORT).asCharBuffer();
- }
-
- public static CharBuffer newDirectCharBuffer(char[] values, int offset, int lenght) {
- return (CharBuffer)newDirectCharBuffer(lenght).put(values, offset, lenght).rewind();
- }
-
- public static CharBuffer newDirectCharBuffer(char[] values, int offset) {
- return newDirectCharBuffer(values, offset, values.length - offset);
- }
-
- public static CharBuffer newDirectCharBuffer(char[] values) {
- return newDirectCharBuffer(values, 0);
- }
-
- /**
- * Helper routine to set a ByteBuffer to the native byte order, if
- * that operation is supported by the underlying NIO
- * implementation.
- */
- public static ByteBuffer nativeOrder(ByteBuffer buf) {
- if (Platform.isJavaSE()) {
- return buf.order(ByteOrder.nativeOrder());
- } else {
- // JSR 239 does not support the ByteOrder class or the order methods.
- // The initial order of a byte buffer is the platform byte order.
- return buf;
- }
- }
-
- /**
- * Returns the size of a single element of this buffer in bytes.
- */
- public static final int sizeOfBufferElem(Buffer buffer) {
- if (buffer == null) {
- return 0;
- }
- if (buffer instanceof ByteBuffer) {
- return SIZEOF_BYTE;
- } else if (buffer instanceof IntBuffer) {
- return SIZEOF_INT;
- } else if (buffer instanceof ShortBuffer) {
- return SIZEOF_SHORT;
- } else if (buffer instanceof FloatBuffer) {
- return SIZEOF_FLOAT;
- } else if (Platform.isJavaSE()) {
- if (buffer instanceof DoubleBuffer) {
- return SIZEOF_DOUBLE;
- } else if (buffer instanceof LongBuffer) {
- return SIZEOF_LONG;
- } else if (buffer instanceof CharBuffer) {
- return SIZEOF_CHAR;
- }
- }
- throw new RuntimeException("Unexpected buffer type " + buffer.getClass().getName());
- }
-
- /**
- * Helper routine to tell whether a buffer is direct or not. Null
- * pointers are considered NOT direct. isDirect() should really be
- * public in Buffer and not replicated in all subclasses.
- */
- public static boolean isDirect(Object buf) {
- if (buf == null) {
- return true;
- }
- if (buf instanceof ByteBuffer) {
- return ((ByteBuffer) buf).isDirect();
- } else if (buf instanceof FloatBuffer) {
- return ((FloatBuffer) buf).isDirect();
- } else if (buf instanceof IntBuffer) {
- return ((IntBuffer) buf).isDirect();
- } else if (buf instanceof ShortBuffer) {
- return ((ShortBuffer) buf).isDirect();
- } else if (buf instanceof Int64Buffer) {
- return ((Int64Buffer) buf).isDirect();
- } else if (buf instanceof PointerBuffer) {
- return ((PointerBuffer) buf).isDirect();
- } else if (Platform.isJavaSE()) {
- if (buf instanceof DoubleBuffer) {
- return ((DoubleBuffer) buf).isDirect();
- } else if (buf instanceof LongBuffer) {
- return ((LongBuffer) buf).isDirect();
- }else if (buf instanceof CharBuffer) {
- return ((CharBuffer) buf).isDirect();
- }
- }
- throw new RuntimeException("Unexpected buffer type " + buf.getClass().getName());
- }
-
- /**
- * Helper routine to get the Buffer byte offset by taking into
- * account the Buffer position and the underlying type. This is
- * the total offset for Direct Buffers.
- */
- public static int getDirectBufferByteOffset(Object buf) {
- if (buf == null) {
- return 0;
- }
- if (buf instanceof Buffer) {
- int pos = ((Buffer) buf).position();
- if (buf instanceof ByteBuffer) {
- return pos;
- } else if (buf instanceof FloatBuffer) {
- return pos * SIZEOF_FLOAT;
- } else if (buf instanceof IntBuffer) {
- return pos * SIZEOF_INT;
- } else if (buf instanceof ShortBuffer) {
- return pos * SIZEOF_SHORT;
- }else if(Platform.isJavaSE()) {
- if (buf instanceof DoubleBuffer) {
- return pos * SIZEOF_DOUBLE;
- } else if (buf instanceof LongBuffer) {
- return pos * SIZEOF_LONG;
- } else if (buf instanceof CharBuffer) {
- return pos * SIZEOF_CHAR;
- }
- }
- } else if (buf instanceof Int64Buffer) {
- Int64Buffer int64Buffer = (Int64Buffer) buf;
- return int64Buffer.position() * Int64Buffer.elementSize();
- } else if (buf instanceof PointerBuffer) {
- PointerBuffer pointerBuffer = (PointerBuffer) buf;
- return pointerBuffer.position() * PointerBuffer.elementSize();
- }
-
- throw new RuntimeException("Disallowed array backing store type in buffer " + buf.getClass().getName());
- }
-
- /**
- * Helper routine to return the array backing store reference from
- * a Buffer object.
- */
- public static Object getArray(Object buf) {
- if (buf == null) {
- return null;
- }
- if (buf instanceof ByteBuffer) {
- return ((ByteBuffer) buf).array();
- } else if (buf instanceof FloatBuffer) {
- return ((FloatBuffer) buf).array();
- } else if (buf instanceof IntBuffer) {
- return ((IntBuffer) buf).array();
- } else if (buf instanceof ShortBuffer) {
- return ((ShortBuffer) buf).array();
- } else if (buf instanceof Int64Buffer) {
- return ((Int64Buffer) buf).array();
- } else if (buf instanceof PointerBuffer) {
- return ((PointerBuffer) buf).array();
- }else if(Platform.isJavaSE()) {
- if (buf instanceof DoubleBuffer) {
- return ((DoubleBuffer) buf).array();
- } else if (buf instanceof LongBuffer) {
- return ((LongBuffer) buf).array();
- } else if (buf instanceof CharBuffer) {
- return ((CharBuffer) buf).array();
- }
- }
-
- throw new RuntimeException("Disallowed array backing store type in buffer " + buf.getClass().getName());
- }
-
- /**
- * Helper routine to get the full byte offset from the beginning of
- * the array that is the storage for the indirect Buffer
- * object. The array offset also includes the position offset
- * within the buffer, in addition to any array offset.
- */
- public static int getIndirectBufferByteOffset(Object buf) {
- if (buf == null) {
- return 0;
- }
- if (buf instanceof Buffer) {
- int pos = ((Buffer) buf).position();
- if (buf instanceof ByteBuffer) {
- return (((ByteBuffer) buf).arrayOffset() + pos);
- } else if (buf instanceof FloatBuffer) {
- return (SIZEOF_FLOAT * (((FloatBuffer) buf).arrayOffset() + pos));
- } else if (buf instanceof IntBuffer) {
- return (SIZEOF_INT * (((IntBuffer) buf).arrayOffset() + pos));
- } else if (buf instanceof ShortBuffer) {
- return (SIZEOF_SHORT * (((ShortBuffer) buf).arrayOffset() + pos));
- }else if(Platform.isJavaSE()) {
- if (buf instanceof DoubleBuffer) {
- return (SIZEOF_DOUBLE * (((DoubleBuffer) buf).arrayOffset() + pos));
- } else if (buf instanceof LongBuffer) {
- return (SIZEOF_LONG * (((LongBuffer) buf).arrayOffset() + pos));
- } else if (buf instanceof CharBuffer) {
- return (SIZEOF_CHAR * (((CharBuffer) buf).arrayOffset() + pos));
- }
- }
- } else if (buf instanceof Int64Buffer) {
- Int64Buffer int64Buffer = (Int64Buffer) buf;
- return Int64Buffer.elementSize() * (int64Buffer.arrayOffset() + int64Buffer.position());
- } else if (buf instanceof PointerBuffer) {
- PointerBuffer pointerBuffer = (PointerBuffer) buf;
- return PointerBuffer.elementSize() * (pointerBuffer.arrayOffset() + pointerBuffer.position());
- }
-
- throw new RuntimeException("Unknown buffer type " + buf.getClass().getName());
- }
-
-
- //----------------------------------------------------------------------
- // Copy routines (type-to-type)
- //
- /**
- * Copies the <i>remaining</i> elements (as defined by
- * <code>limit() - position()</code>) 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 (though its
- * mark is changed).
- */
- public static ByteBuffer copyByteBuffer(ByteBuffer orig) {
- ByteBuffer dest = newDirectByteBuffer(orig.remaining());
- dest.put(orig);
- dest.rewind();
- return dest;
- }
-
- /**
- * Copies the <i>remaining</i> elements (as defined by
- * <code>limit() - position()</code>) 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 (though its
- * mark is changed).
- */
- public static FloatBuffer copyFloatBuffer(FloatBuffer orig) {
- return copyFloatBufferAsByteBuffer(orig).asFloatBuffer();
- }
-
- /**
- * Copies the <i>remaining</i> elements (as defined by
- * <code>limit() - position()</code>) 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 (though its
- * mark is changed).
- */
- public static IntBuffer copyIntBuffer(IntBuffer orig) {
- return copyIntBufferAsByteBuffer(orig).asIntBuffer();
- }
-
- /**
- * Copies the <i>remaining</i> elements (as defined by
- * <code>limit() - position()</code>) 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 (though its
- * mark is changed).
- */
- public static ShortBuffer copyShortBuffer(ShortBuffer orig) {
- return copyShortBufferAsByteBuffer(orig).asShortBuffer();
- }
-
- //----------------------------------------------------------------------
- // Copy routines (type-to-ByteBuffer)
- //
- /**
- * Copies the <i>remaining</i> elements (as defined by
- * <code>limit() - position()</code>) 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 (though its
- * mark is changed).
- */
- public static ByteBuffer copyFloatBufferAsByteBuffer(FloatBuffer orig) {
- ByteBuffer dest = newDirectByteBuffer(orig.remaining() * SIZEOF_FLOAT);
- dest.asFloatBuffer().put(orig);
- dest.rewind();
- return dest;
- }
-
- /**
- * Copies the <i>remaining</i> elements (as defined by
- * <code>limit() - position()</code>) 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 (though its
- * mark is changed).
- */
- public static ByteBuffer copyIntBufferAsByteBuffer(IntBuffer orig) {
- ByteBuffer dest = newDirectByteBuffer(orig.remaining() * SIZEOF_INT);
- dest.asIntBuffer().put(orig);
- dest.rewind();
- return dest;
- }
-
- /**
- * Copies the <i>remaining</i> elements (as defined by
- * <code>limit() - position()</code>) 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 (though its
- * mark is changed).
- */
- public static ByteBuffer copyShortBufferAsByteBuffer(ShortBuffer orig) {
- ByteBuffer dest = newDirectByteBuffer(orig.remaining() * SIZEOF_SHORT);
- dest.asShortBuffer().put(orig);
- dest.rewind();
- return dest;
- }
-
- //----------------------------------------------------------------------
- // Conversion routines
- //
- public final static FloatBuffer getFloatBuffer(DoubleBuffer source) {
- source.rewind();
- FloatBuffer dest = newDirectFloatBuffer(source.limit());
- while (source.hasRemaining()) {
- dest.put((float) source.get());
- }
- return dest;
- }
-
- //----------------------------------------------------------------------
- // Convenient put methods with generic target Buffer
- //
- public static Buffer put(Buffer dest, Buffer src) {
- if ((dest instanceof ByteBuffer) && (src instanceof ByteBuffer)) {
- return ((ByteBuffer) dest).put((ByteBuffer) src);
- } else if ((dest instanceof ShortBuffer) && (src instanceof ShortBuffer)) {
- return ((ShortBuffer) dest).put((ShortBuffer) src);
- } else if ((dest instanceof IntBuffer) && (src instanceof IntBuffer)) {
- return ((IntBuffer) dest).put((IntBuffer) src);
- } else if ((dest instanceof FloatBuffer) && (src instanceof FloatBuffer)) {
- return ((FloatBuffer) dest).put((FloatBuffer) src);
- } else if (Platform.isJavaSE()) {
- if ((dest instanceof LongBuffer) && (src instanceof LongBuffer)) {
- return ((LongBuffer) dest).put((LongBuffer) src);
- } else if ((dest instanceof DoubleBuffer) && (src instanceof DoubleBuffer)) {
- return ((DoubleBuffer) dest).put((DoubleBuffer) src);
- } else if ((dest instanceof CharBuffer) && (src instanceof CharBuffer)) {
- return ((CharBuffer) dest).put((CharBuffer) src);
- }
- }
- throw new RuntimeException("Incompatible Buffer classes: dest = " + dest.getClass().getName() + ", src = " + src.getClass().getName());
- }
-
- public static Buffer putb(Buffer dest, byte v) {
- if (dest instanceof ByteBuffer) {
- return ((ByteBuffer) dest).put(v);
- } else if (dest instanceof ShortBuffer) {
- return ((ShortBuffer) dest).put((short) v);
- } else if (dest instanceof IntBuffer) {
- return ((IntBuffer) dest).put((int) v);
- } else {
- throw new RuntimeException("Byte doesn't match Buffer Class: " + dest);
- }
- }
-
- public static Buffer puts(Buffer dest, short v) {
- if (dest instanceof ShortBuffer) {
- return ((ShortBuffer) dest).put(v);
- } else if (dest instanceof IntBuffer) {
- return ((IntBuffer) dest).put((int) v);
- } else {
- throw new RuntimeException("Short doesn't match Buffer Class: " + dest);
- }
- }
-
- public static void puti(Buffer dest, int v) {
- if (dest instanceof IntBuffer) {
- ((IntBuffer) dest).put(v);
- } else {
- throw new RuntimeException("Integer doesn't match Buffer Class: " + dest);
- }
- }
-
- public static void putf(Buffer dest, float v) {
- if (dest instanceof FloatBuffer) {
- ((FloatBuffer) dest).put(v);
-/* TODO FixedPoint required
- } else if (dest instanceof IntBuffer) {
- ((IntBuffer) dest).put(FixedPoint.toFixed(v));
-*/
- } else {
- throw new RuntimeException("Float doesn't match Buffer Class: " + dest);
- }
- }
- public static void putd(Buffer dest, double v) {
- if (dest instanceof FloatBuffer) {
- ((FloatBuffer) dest).put((float) v);
- } else {
- throw new RuntimeException("Double doesn't match Buffer Class: " + dest);
- }
- }
-
- public static void rangeCheck(byte[] array, int offset, int minElementsRemaining) {
- if (array == null) {
- return;
- }
-
- if (array.length < offset + minElementsRemaining) {
- throw new ArrayIndexOutOfBoundsException("Required " + minElementsRemaining + " elements in array, only had " + (array.length - offset));
- }
- }
-
- public static void rangeCheck(char[] array, int offset, int minElementsRemaining) {
- if (array == null) {
- return;
- }
-
- if (array.length < offset + minElementsRemaining) {
- throw new ArrayIndexOutOfBoundsException("Required " + minElementsRemaining + " elements in array, only had " + (array.length - offset));
- }
- }
-
- public static void rangeCheck(short[] array, int offset, int minElementsRemaining) {
- if (array == null) {
- return;
- }
-
- if (array.length < offset + minElementsRemaining) {
- throw new ArrayIndexOutOfBoundsException("Required " + minElementsRemaining + " elements in array, only had " + (array.length - offset));
- }
- }
-
- public static void rangeCheck(int[] array, int offset, int minElementsRemaining) {
- if (array == null) {
- return;
- }
-
- if (array.length < offset + minElementsRemaining) {
- throw new ArrayIndexOutOfBoundsException("Required " + minElementsRemaining + " elements in array, only had " + (array.length - offset));
- }
- }
-
- public static void rangeCheck(long[] array, int offset, int minElementsRemaining) {
- if (array == null) {
- return;
- }
-
- if (array.length < offset + minElementsRemaining) {
- throw new ArrayIndexOutOfBoundsException("Required " + minElementsRemaining + " elements in array, only had " + (array.length - offset));
- }
- }
-
- public static void rangeCheck(float[] array, int offset, int minElementsRemaining) {
- if (array == null) {
- return;
- }
-
- if (array.length < offset + minElementsRemaining) {
- throw new ArrayIndexOutOfBoundsException("Required " + minElementsRemaining + " elements in array, only had " + (array.length - offset));
- }
- }
-
- public static void rangeCheck(double[] array, int offset, int minElementsRemaining) {
- if (array == null) {
- return;
- }
-
- if (array.length < offset + minElementsRemaining) {
- throw new ArrayIndexOutOfBoundsException("Required " + minElementsRemaining + " elements in array, only had " + (array.length - offset));
- }
- }
-
- public static void rangeCheck(Buffer buffer, int minElementsRemaining) {
- if (buffer == null) {
- return;
- }
-
- if (buffer.remaining() < minElementsRemaining) {
- throw new IndexOutOfBoundsException("Required " + minElementsRemaining + " remaining elements in buffer, only had " + buffer.remaining());
- }
- }
-
- public static void rangeCheckBytes(Object buffer, int minBytesRemaining) {
- if (buffer == null) {
- return;
- }
-
- int bytesRemaining = 0;
- if (buffer instanceof Buffer) {
- int elementsRemaining = ((Buffer) buffer).remaining();
- if (buffer instanceof ByteBuffer) {
- bytesRemaining = elementsRemaining;
- } else if (buffer instanceof FloatBuffer) {
- bytesRemaining = elementsRemaining * SIZEOF_FLOAT;
- } else if (buffer instanceof IntBuffer) {
- bytesRemaining = elementsRemaining * SIZEOF_INT;
- } else if (buffer instanceof ShortBuffer) {
- bytesRemaining = elementsRemaining * SIZEOF_SHORT;
- }else if(Platform.isJavaSE()) {
- if (buffer instanceof DoubleBuffer) {
- bytesRemaining = elementsRemaining * SIZEOF_DOUBLE;
- } else if (buffer instanceof LongBuffer) {
- bytesRemaining = elementsRemaining * SIZEOF_LONG;
- } else if (buffer instanceof CharBuffer) {
- bytesRemaining = elementsRemaining * SIZEOF_CHAR;
- }
- }
- } else if (buffer instanceof Int64Buffer) {
- Int64Buffer int64Buffer = (Int64Buffer) buffer;
- bytesRemaining = int64Buffer.remaining() * Int64Buffer.elementSize();
- } else if (buffer instanceof PointerBuffer) {
- PointerBuffer pointerBuffer = (PointerBuffer) buffer;
- bytesRemaining = pointerBuffer.remaining() * PointerBuffer.elementSize();
- }
- if (bytesRemaining < minBytesRemaining) {
- throw new IndexOutOfBoundsException("Required " + minBytesRemaining + " remaining bytes in buffer, only had " + bytesRemaining);
- }
- }
-
-}