diff options
Diffstat (limited to 'libjava/gnu/java/nio/DoubleBufferImpl.java')
-rw-r--r-- | libjava/gnu/java/nio/DoubleBufferImpl.java | 120 |
1 files changed, 45 insertions, 75 deletions
diff --git a/libjava/gnu/java/nio/DoubleBufferImpl.java b/libjava/gnu/java/nio/DoubleBufferImpl.java index de0e6717fd0..f4dffc2d8f4 100644 --- a/libjava/gnu/java/nio/DoubleBufferImpl.java +++ b/libjava/gnu/java/nio/DoubleBufferImpl.java @@ -38,100 +38,66 @@ exception statement from your version. */ package gnu.java.nio; import java.nio.ByteBuffer; -import java.nio.CharBuffer; +import java.nio.ByteOrder; import java.nio.DoubleBuffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; -import java.nio.LongBuffer; -import java.nio.ShortBuffer; +import java.nio.ReadOnlyBufferException; +/** + * This is a Heap memory implementation + */ public final class DoubleBufferImpl extends DoubleBuffer { - private int array_offset; - private boolean ro; + private boolean readOnly; public DoubleBufferImpl(int cap, int off, int lim) { + super (cap, lim, off, 0); this.backing_buffer = new double[cap]; - this.cap = cap; - this.limit(lim); - this.position(off); + readOnly = false; } - public DoubleBufferImpl(double[] array, int off, int lim) + public DoubleBufferImpl(double[] array, int offset, int length) { + super (array.length, length, offset, 0); this.backing_buffer = array; - this.cap = array.length; - this.limit(lim); - this.position(off); + readOnly = false; } public DoubleBufferImpl(DoubleBufferImpl copy) { + super (copy.capacity (), copy.limit (), copy.position (), 0); backing_buffer = copy.backing_buffer; - ro = copy.ro; - limit(copy.limit()); - position(copy.position()); + readOnly = copy.isReadOnly (); } - void inc_pos(int a) + DoubleBufferImpl (byte[] copy) { - position(position() + a); + super (copy.length, copy.length, 0, 0); + this.backing_buffer = copy != null ? nio_cast (copy) : null; + readOnly = false; } - - DoubleBufferImpl(byte[] copy) { this.backing_buffer = copy != null ? nio_cast(copy) : null; } - private static native byte nio_get_Byte(DoubleBufferImpl b, int index, int limit); - private static native void nio_put_Byte(DoubleBufferImpl b, int index, int limit, byte value); - public ByteBuffer asByteBuffer() { ByteBufferImpl res = new ByteBufferImpl(backing_buffer); res.limit((limit()*1)/8); return res; } - - DoubleBufferImpl(char[] copy) { this.backing_buffer = copy != null ? nio_cast(copy) : null; } - private static native char nio_get_Char(DoubleBufferImpl b, int index, int limit); - private static native void nio_put_Char(DoubleBufferImpl b, int index, int limit, char value); - public CharBuffer asCharBuffer() { CharBufferImpl res = new CharBufferImpl(backing_buffer); res.limit((limit()*2)/8); return res; } - - DoubleBufferImpl(short[] copy) { this.backing_buffer = copy != null ? nio_cast(copy) : null; } - private static native short nio_get_Short(DoubleBufferImpl b, int index, int limit); - private static native void nio_put_Short(DoubleBufferImpl b, int index, int limit, short value); - public ShortBuffer asShortBuffer() { ShortBufferImpl res = new ShortBufferImpl(backing_buffer); res.limit((limit()*2)/8); return res; } - DoubleBufferImpl(int[] copy) { this.backing_buffer = copy != null ? nio_cast(copy) : null; } - private static native int nio_get_Int(DoubleBufferImpl b, int index, int limit); - private static native void nio_put_Int(DoubleBufferImpl b, int index, int limit, int value); - public IntBuffer asIntBuffer() { IntBufferImpl res = new IntBufferImpl(backing_buffer); res.limit((limit()*4)/8); return res; } + private static native byte nio_get_Byte (DoubleBufferImpl b, int index, int limit); - DoubleBufferImpl(long[] copy) { this.backing_buffer = copy != null ? nio_cast(copy) : null; } - private static native long nio_get_Long(DoubleBufferImpl b, int index, int limit); - private static native void nio_put_Long(DoubleBufferImpl b, int index, int limit, long value); - public LongBuffer asLongBuffer() { LongBufferImpl res = new LongBufferImpl(backing_buffer); res.limit((limit()*8)/8); return res; } + private static native void nio_put_Byte (DoubleBufferImpl b, int index, int limit, byte value); - DoubleBufferImpl(float[] copy) { this.backing_buffer = copy != null ? nio_cast(copy) : null; } - private static native float nio_get_Float(DoubleBufferImpl b, int index, int limit); - private static native void nio_put_Float(DoubleBufferImpl b, int index, int limit, float value); - public FloatBuffer asFloatBuffer() { FloatBufferImpl res = new FloatBufferImpl(backing_buffer); res.limit((limit()*4)/8); return res; } - - DoubleBufferImpl(double[] copy) { this.backing_buffer = copy != null ? nio_cast(copy) : null; } - private static native double nio_get_Double(DoubleBufferImpl b, int index, int limit); - private static native void nio_put_Double(DoubleBufferImpl b, int index, int limit, double value); - public DoubleBuffer asDoubleBuffer() { DoubleBufferImpl res = new DoubleBufferImpl(backing_buffer); res.limit((limit()*8)/8); return res; } + public ByteBuffer asByteBuffer () + { + ByteBufferImpl res = new ByteBufferImpl (backing_buffer); + res.limit ((limit () * 1) / 8); + return res; + } - private static native double[] nio_cast(byte[]copy); - private static native double[] nio_cast(char[]copy); - private static native double[] nio_cast(short[]copy); - private static native double[] nio_cast(long[]copy); - private static native double[] nio_cast(int[]copy); - private static native double[] nio_cast(float[]copy); - private static native double[] nio_cast(double[]copy); + private static native double[] nio_cast (byte[] copy); - public boolean isReadOnly() + public boolean isReadOnly () { - return ro; + return readOnly; } - public DoubleBuffer slice() + public DoubleBuffer slice () { - DoubleBufferImpl A = new DoubleBufferImpl(this); - A.array_offset = position(); - return A; + return new DoubleBufferImpl (this); } public DoubleBuffer duplicate() @@ -141,9 +107,9 @@ public final class DoubleBufferImpl extends DoubleBuffer public DoubleBuffer asReadOnlyBuffer() { - DoubleBufferImpl a = new DoubleBufferImpl(this); - a.ro = true; - return a; + DoubleBufferImpl result = new DoubleBufferImpl (this); + result.readOnly = true; + return result; } public DoubleBuffer compact() @@ -153,7 +119,7 @@ public final class DoubleBufferImpl extends DoubleBuffer public boolean isDirect() { - return backing_buffer != null; + return false; } final public double get() @@ -165,6 +131,9 @@ public final class DoubleBufferImpl extends DoubleBuffer final public DoubleBuffer put(double b) { + if (readOnly) + throw new ReadOnlyBufferException (); + backing_buffer[position()] = b; position(position()+1); return this; @@ -177,14 +146,15 @@ public final class DoubleBufferImpl extends DoubleBuffer final public DoubleBuffer put(int index, double b) { + if (readOnly) + throw new ReadOnlyBufferException (); + backing_buffer[index] = b; return this; } - - final public char getChar() { char a = nio_get_Char(this, position(), limit()); inc_pos(2); return a; } final public DoubleBuffer putChar(char value) { nio_put_Char(this, position(), limit(), value); inc_pos(2); return this; } final public char getChar(int index) { char a = nio_get_Char(this, index, limit()); return a; } final public DoubleBuffer putChar(int index, char value) { nio_put_Char(this, index, limit(), value); return this; }; - final public short getShort() { short a = nio_get_Short(this, position(), limit()); inc_pos(2); return a; } final public DoubleBuffer putShort(short value) { nio_put_Short(this, position(), limit(), value); inc_pos(2); return this; } final public short getShort(int index) { short a = nio_get_Short(this, index, limit()); return a; } final public DoubleBuffer putShort(int index, short value) { nio_put_Short(this, index, limit(), value); return this; }; - final public int getInt() { int a = nio_get_Int(this, position(), limit()); inc_pos(4); return a; } final public DoubleBuffer putInt(int value) { nio_put_Int(this, position(), limit(), value); inc_pos(4); return this; } final public int getInt(int index) { int a = nio_get_Int(this, index, limit()); return a; } final public DoubleBuffer putInt(int index, int value) { nio_put_Int(this, index, limit(), value); return this; }; - final public long getLong() { long a = nio_get_Long(this, position(), limit()); inc_pos(8); return a; } final public DoubleBuffer putLong(long value) { nio_put_Long(this, position(), limit(), value); inc_pos(8); return this; } final public long getLong(int index) { long a = nio_get_Long(this, index, limit()); return a; } final public DoubleBuffer putLong(int index, long value) { nio_put_Long(this, index, limit(), value); return this; }; - final public float getFloat() { float a = nio_get_Float(this, position(), limit()); inc_pos(4); return a; } final public DoubleBuffer putFloat(float value) { nio_put_Float(this, position(), limit(), value); inc_pos(4); return this; } final public float getFloat(int index) { float a = nio_get_Float(this, index, limit()); return a; } final public DoubleBuffer putFloat(int index, float value) { nio_put_Float(this, index, limit(), value); return this; }; - final public double getDouble() { return get(); } final public DoubleBuffer putDouble(double value) { return put(value); } final public double getDouble(int index) { return get(index); } final public DoubleBuffer putDouble(int index, double value) { return put(index, value); }; + + final public ByteOrder order () + { + return ByteOrder.BIG_ENDIAN; + } } |