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