aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2003-05-12 20:45:20 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2003-05-12 20:45:20 +0000
commit36d4669b735c0e6f665e9a83bdd0848e23fc6662 (patch)
treeeba2e2a8271971b25fa39af84cbebe056dd27e91 /libjava/gnu
parentd3e0dffb76fd85d777f5c5de71f47816121bc5e3 (diff)
downloadgcc-36d4669b735c0e6f665e9a83bdd0848e23fc6662.zip
gcc-36d4669b735c0e6f665e9a83bdd0848e23fc6662.tar.gz
gcc-36d4669b735c0e6f665e9a83bdd0848e23fc6662.tar.bz2
ByteBufferImpl.java: Reformatted.
2003-05-12 Michael Koch <konqueror@gmx.de> * gnu/java/nio/ByteBufferImpl.java: Reformatted. (nio_get_*): Removed. (nio_put_*): Removed. (as*Buffer): Implemented. (compact): Implemented. (get): Documentation added. (put): Documentation added. (get*): Newly implemented. (put*): Newly implemented. * gnu/java/nio/CharBufferImpl.java: Reformatted. (CharBufferImpl): Revised. (slice): New implementation. (duplicate): New implementation. (compact): New implementation. (asReadOnlyBuffer): New implementation. (get): Documentation revised. (order): Return native byte order. * gnu/java/nio/DirectByteBufferImpl.java (allocateDirect): objects can be null not 0. * gnu/java/nio/DoubleBufferImpl.java: Reformatted. (DoubleBufferImpl): Revised. (slice): New implementation. (duplicate): New implementation. (compact): New implementation. (asReadOnlyBuffer): New implementation. (get): Documentation revised. (order): Return native byte order. * gnu/java/nio/FloatBufferImpl.java: Reformatted. (FloatBufferImpl): Revised. (slice): New implementation. (duplicate): New implementation. (compact): New implementation. (asReadOnlyBuffer): New implementation. (get): Documentation revised. (order): Return native byte order. * gnu/java/nio/IntBufferImpl.java: Reformatted. (IntBufferImpl): Revised. (slice): New implementation. (duplicate): New implementation. (compact): New implementation. (asReadOnlyBuffer): New implementation. (get): Documentation revised. (order): Return native byte order. * gnu/java/nio/LongBufferImpl.java: Reformatted. (LongBufferImpl): Revised. (slice): New implementation. (duplicate): New implementation. (compact): New implementation. (asReadOnlyBuffer): New implementation. (get): Documentation revised. (order): Return native byte order. * gnu/java/nio/ShortBufferImpl.java: Reformatted. (ShortBufferImpl): Revised. (slice): New implementation. (duplicate): New implementation. (compact): New implementation. (asReadOnlyBuffer): New implementation. (get): Documentation revised. (order): Return native byte order. * java/nio/CharBuffer.java: Reformatted, much documentation rewritten. (CharBuffer): Revised. (order): Removed. * java/nio/DoubleBuffer.java: Reformatted, much documentation rewritten. (DoubleBuffer): Revised. (allocateDirect): Removed. (order): Removed. * java/nio/FloatBuffer.java: Reformatted, much documentation rewritten. (FloatBuffer): Revised. (allocateDirect): Removed. (order): Removed. * java/nio/IntBuffer.java: Reformatted, much documentation rewritten. (IntBuffer): Revised. (allocateDirect): Removed. (order): Removed. * java/nio/LongBuffer.java: Reformatted, much documentation rewritten. (LongBuffer): Revised. (allocateDirect): Removed. (order): Removed. * java/nio/ShortBuffer.java: Reformatted, much documentation rewritten. (ShortBuffer): Revised. (allocateDirect): Removed. (order): Removed. * gnu/java/nio/natByteBufferImpl.cc: Removed. * gnu/java/nio/natCharBufferImpl.cc: Removed. * Makefile.am (ordinary_java_source_files): Added the following files: gnu/java/nio/CharViewBufferImpl.java, gnu/java/nio/DoubleViewBufferImpl.java, gnu/java/nio/FloatViewBufferImpl.java, gnu/java/nio/IntViewBufferImpl.java, gnu/java/nio/LongViewBufferImpl.java, gnu/java/nio/ShortViewBufferImpl.java (nat_source_files): Removed the following files: gnu/java/nio/natByteBufferImpl.cc, gnu/java/nio/natCharBufferImpl.cc * Makefile.in: Regenerated. From-SVN: r66733
Diffstat (limited to 'libjava/gnu')
-rw-r--r--libjava/gnu/java/nio/ByteBufferImpl.java343
-rw-r--r--libjava/gnu/java/nio/CharBufferImpl.java93
-rw-r--r--libjava/gnu/java/nio/DirectByteBufferImpl.java2
-rw-r--r--libjava/gnu/java/nio/DoubleBufferImpl.java118
-rw-r--r--libjava/gnu/java/nio/FloatBufferImpl.java106
-rw-r--r--libjava/gnu/java/nio/IntBufferImpl.java124
-rw-r--r--libjava/gnu/java/nio/LongBufferImpl.java126
-rw-r--r--libjava/gnu/java/nio/ShortBufferImpl.java124
-rw-r--r--libjava/gnu/java/nio/natByteBufferImpl.cc82
-rw-r--r--libjava/gnu/java/nio/natCharBufferImpl.cc22
10 files changed, 602 insertions, 538 deletions
diff --git a/libjava/gnu/java/nio/ByteBufferImpl.java b/libjava/gnu/java/nio/ByteBufferImpl.java
index ede16aa..7b7f72e 100644
--- a/libjava/gnu/java/nio/ByteBufferImpl.java
+++ b/libjava/gnu/java/nio/ByteBufferImpl.java
@@ -1,5 +1,5 @@
/* ByteBufferImpl.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,6 +35,7 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package gnu.java.nio;
import java.nio.ByteBuffer;
@@ -66,7 +67,7 @@ public final class ByteBufferImpl extends ByteBuffer
this.backing_buffer = array;
readOnly = false;
}
-
+
public ByteBufferImpl (ByteBufferImpl copy)
{
super (copy.capacity (), copy.limit (), copy.position (), 0);
@@ -79,311 +80,369 @@ public final class ByteBufferImpl extends ByteBuffer
position (position () + toAdd);
}
- private static native char nio_get_Char (ByteBufferImpl b, int index, int limit);
-
- private static native void nio_put_Char (ByteBufferImpl b, int index, int limit, char value);
-
public CharBuffer asCharBuffer ()
{
- throw new Error ("Not implemented");
+ return new CharViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
}
- private static native short nio_get_Short (ByteBufferImpl b, int index, int limit);
-
- private static native void nio_put_Short (ByteBufferImpl b, int index, int limit, short value);
-
public ShortBuffer asShortBuffer ()
{
- throw new Error ("Not implemented");
+ return new ShortViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
}
- private static native int nio_get_Int (ByteBufferImpl b, int index, int limit);
-
- private static native void nio_put_Int (ByteBufferImpl b, int index, int limit, int value);
-
public IntBuffer asIntBuffer ()
{
- throw new Error ("Not implemented");
+ return new IntViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
}
- private static native long nio_get_Long (ByteBufferImpl b, int index, int limit);
-
- private static native void nio_put_Long (ByteBufferImpl b, int index, int limit, long value);
-
public LongBuffer asLongBuffer ()
{
- throw new Error ("Not implemented");
+ return new LongViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
}
- private static native float nio_get_Float (ByteBufferImpl b, int index, int limit);
-
- private static native void nio_put_Float (ByteBufferImpl b, int index, int limit, float value);
-
public FloatBuffer asFloatBuffer ()
{
- throw new Error ("Not implemented");
+ return new FloatViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
}
- private static native double nio_get_Double (ByteBufferImpl b, int index, int limit);
-
- private static native void nio_put_Double (ByteBufferImpl b, int index, int limit, double value);
-
public DoubleBuffer asDoubleBuffer ()
{
- throw new Error ("Not implemented");
+ return new DoubleViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
}
- public boolean isReadOnly()
+ public boolean isReadOnly ()
{
return readOnly;
}
- public ByteBuffer slice()
+ public ByteBuffer slice ()
{
- return new ByteBufferImpl(this);
+ return new ByteBufferImpl (this);
}
-
- public ByteBuffer duplicate()
+
+ public ByteBuffer duplicate ()
{
- return new ByteBufferImpl(this);
+ return new ByteBufferImpl (this);
}
-
- public ByteBuffer asReadOnlyBuffer()
+
+ public ByteBuffer asReadOnlyBuffer ()
{
- ByteBufferImpl a = new ByteBufferImpl(this);
+ ByteBufferImpl a = new ByteBufferImpl (this);
a.readOnly = true;
return a;
}
-
- public ByteBuffer compact()
+
+ public ByteBuffer compact ()
{
+ int copied = 0;
+
+ while (remaining () > 0)
+ {
+ put (copied, get ());
+ copied++;
+ }
+
+ position (copied);
return this;
}
-
- public boolean isDirect()
+
+ public boolean isDirect ()
{
return false;
}
-
- final public byte get()
+
+ /**
+ * Relative get method. Reads the next <code>byte</code> from the buffer.
+ */
+ final public byte get ()
{
- byte e = backing_buffer[position()];
- position(position()+1);
- return e;
+ byte result = backing_buffer [position ()];
+ position (position () + 1);
+ return result;
}
- final public ByteBuffer put(byte b)
+ /**
+ * Relative put method. Writes <code>value</code> to the next position
+ * in the buffer.
+ *
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public ByteBuffer put (byte value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[position()] = b;
- position(position()+1);
+
+ backing_buffer [position ()] = value;
+ position (position () + 1);
return this;
}
- final public byte get(int index)
+ /**
+ * Absolute get method. Reads the <code>byte</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
+ final public byte get (int index)
{
- return backing_buffer[index];
+ return backing_buffer [index];
}
- final public ByteBuffer put(int index, byte b)
+ /**
+ * Absolute put method. Writes <code>value</value> to position
+ * <code>index</code> in the buffer.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public ByteBuffer put (int index, byte value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[index] = b;
+
+ backing_buffer [index] = value;
return this;
}
final public char getChar ()
{
- char a = nio_get_Char (this, position (), limit ());
- inc_pos (2);
- return a;
+ // FIXME: this handles big endian only
+ return (char) (((get () & 0xff) << 8) + (get () & 0xff));
}
final public ByteBuffer putChar (char value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Char (this, position (), limit (), value);
- inc_pos (2);
+ // FIXME: this handles big endian only
+ put ((byte) ((((int) value) & 0xff00) >> 8));
+ put ((byte) (((int) value) & 0x00ff));
return this;
}
final public char getChar (int index)
{
- char a = nio_get_Char (this, index, limit ());
- return a;
+ // FIXME: this handles big endian only
+ return (char) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
}
final public ByteBuffer putChar (int index, char value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Char (this, index, limit (), value);
+ // FIXME: this handles big endian only
+ put (index, (byte) ((((int) value) & 0xff00) >> 8));
+ put (index + 1, (byte) (((int) value) & 0x00ff));
return this;
}
final public short getShort ()
{
- short a = nio_get_Short (this, position (), limit ());
- inc_pos (2);
- return a;
+ // FIXME: this handles big endian only
+ return (short) (((get () & 0xff) << 8) + (get () & 0xff));
}
final public ByteBuffer putShort (short value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Short (this, position (), limit (), value);
- inc_pos (2);
+ // FIXME: this handles big endian only
+ put ((byte) ((((int) value) & 0xff00) >> 8));
+ put ((byte) (((int) value) & 0x00ff));
return this;
}
final public short getShort (int index)
{
- short a = nio_get_Short (this, index, limit ());
- return a;
+ // FIXME: this handles big endian only
+ return (short) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
}
final public ByteBuffer putShort (int index, short value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Short (this, index, limit (), value);
+ // FIXME: this handles big endian only
+ put (index, (byte) ((((int) value) & 0xff00) >> 8));
+ put (index + 1, (byte) (((int) value) & 0x00ff));
return this;
}
final public int getInt ()
{
- int a = nio_get_Int (this, position (), limit ());
- inc_pos (4);
- return a;
+ // FIXME: this handles big endian only
+ return (int) (((get () & 0xff) << 24)
+ + (get () & 0xff) << 16
+ + (get () & 0xff) << 8
+ + (get () & 0xff));
}
final public ByteBuffer putInt (int value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Int (this, position (), limit (), value);
- inc_pos (4);
+ // FIXME: this handles big endian only
+ put ((byte) ((((int) value) & 0xff000000) >> 24));
+ put ((byte) ((((int) value) & 0x00ff0000) >> 16));
+ put ((byte) ((((int) value) & 0x0000ff00) >> 8));
+ put ((byte) (((int) value) & 0x000000ff));
return this;
}
final public int getInt (int index)
{
- int a = nio_get_Int (this, index, limit ());
- return a;
+ // FIXME: this handles big endian only
+ return (int) (((get (index) & 0xff) << 24)
+ + (get (index + 1) & 0xff) << 16
+ + (get (index + 2) & 0xff) << 8
+ + (get (index + 3) & 0xff));
}
final public ByteBuffer putInt (int index, int value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Int(this, index, limit (), value);
+ // FIXME: this handles big endian only
+ put (index, (byte) ((((int) value) & 0xff000000) >> 24));
+ put (index + 1, (byte) ((((int) value) & 0x00ff0000) >> 16));
+ put (index + 2, (byte) ((((int) value) & 0x0000ff00) >> 8));
+ put (index + 3, (byte) (((int) value) & 0x000000ff));
return this;
}
final public long getLong ()
{
- long a = nio_get_Long (this, position (), limit ());
- inc_pos (8);
- return a;
+ // FIXME: this handles big endian only
+ return (long) (((get () & 0xff) << 56)
+ + (get () & 0xff) << 48
+ + (get () & 0xff) << 40
+ + (get () & 0xff) << 32
+ + (get () & 0xff) << 24
+ + (get () & 0xff) << 16
+ + (get () & 0xff) << 8
+ + (get () & 0xff));
}
final public ByteBuffer putLong (long value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Long (this, position (), limit (), value);
- inc_pos (8);
+ // FIXME: this handles big endian only
+ put ((byte) ((((int) value) & 0xff00000000000000) >> 56));
+ put ((byte) ((((int) value) & 0x00ff000000000000) >> 48));
+ put ((byte) ((((int) value) & 0x0000ff0000000000) >> 40));
+ put ((byte) ((((int) value) & 0x000000ff00000000) >> 32));
+ put ((byte) ((((int) value) & 0x00000000ff000000) >> 24));
+ put ((byte) ((((int) value) & 0x0000000000ff0000) >> 16));
+ put ((byte) ((((int) value) & 0x000000000000ff00) >> 8));
+ put ((byte) (((int) value) & 0x00000000000000ff));
return this;
}
final public long getLong (int index)
{
- long a = nio_get_Long (this, index, limit ());
- return a;
+ // FIXME: this handles big endian only
+ return (long) (((get (index) & 0xff) << 56)
+ + (get (index + 1) & 0xff) << 48
+ + (get (index + 2) & 0xff) << 40
+ + (get (index + 3) & 0xff) << 32
+ + (get (index + 4) & 0xff) << 24
+ + (get (index + 5) & 0xff) << 16
+ + (get (index + 6) & 0xff) << 8
+ + (get (index + 7) & 0xff));
}
final public ByteBuffer putLong (int index, long value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Long (this, index, limit (), value);
+ // FIXME: this handles big endian only
+ put (index, (byte) ((((int) value) & 0xff00000000000000) >> 56));
+ put (index + 1, (byte) ((((int) value) & 0x00ff000000000000) >> 48));
+ put (index + 2, (byte) ((((int) value) & 0x0000ff0000000000) >> 40));
+ put (index + 3, (byte) ((((int) value) & 0x000000ff00000000) >> 32));
+ put (index + 4, (byte) ((((int) value) & 0x00000000ff000000) >> 24));
+ put (index + 5, (byte) ((((int) value) & 0x0000000000ff0000) >> 16));
+ put (index + 6, (byte) ((((int) value) & 0x000000000000ff00) >> 8));
+ put (index + 7, (byte) (((int) value) & 0x00000000000000ff));
return this;
}
final public float getFloat ()
{
- float a = nio_get_Float (this, position (), limit ());
- inc_pos (4);
- return a;
+ // FIXME: this handles big endian only
+ return (float) (((get () & 0xff) << 24)
+ + (get () & 0xff) << 16
+ + (get () & 0xff) << 8
+ + (get () & 0xff));
}
final public ByteBuffer putFloat (float value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Float (this, position (), limit (), value);
- inc_pos (4);
+ // FIXME: this handles big endian only
+ put ((byte) ((((int) value) & 0xff000000) >> 24));
+ put ((byte) ((((int) value) & 0x00ff0000) >> 16));
+ put ((byte) ((((int) value) & 0x0000ff00) >> 8));
+ put ((byte) (((int) value) & 0x000000ff));
return this;
}
final public float getFloat (int index)
{
- float a = nio_get_Float (this, index, limit ());
- return a;
+ // FIXME: this handles big endian only
+ return (float) (((get (index) & 0xff) << 24)
+ + (get (index + 1) & 0xff) << 16
+ + (get (index + 2) & 0xff) << 8
+ + (get (index + 3) & 0xff));
}
final public ByteBuffer putFloat (int index, float value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Float (this, index, limit(), value);
+ // FIXME: this handles big endian only
+ put (index, (byte) ((((int) value) & 0xff000000) >> 24));
+ put (index + 1, (byte) ((((int) value) & 0x00ff0000) >> 16));
+ put (index + 2, (byte) ((((int) value) & 0x0000ff00) >> 8));
+ put (index + 3, (byte) (((int) value) & 0x000000ff));
return this;
}
final public double getDouble ()
{
- double a = nio_get_Double (this, position (), limit ());
- inc_pos (8);
- return a;
+ // FIXME: this handles big endian only
+ return (double) (((get () & 0xff) << 56)
+ + (get () & 0xff) << 48
+ + (get () & 0xff) << 40
+ + (get () & 0xff) << 32
+ + (get () & 0xff) << 24
+ + (get () & 0xff) << 16
+ + (get () & 0xff) << 8
+ + (get () & 0xff));
}
final public ByteBuffer putDouble (double value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Double (this, position(), limit (), value);
- inc_pos (8);
+ // FIXME: this handles big endian only
+ put ((byte) ((((int) value) & 0xff00000000000000) >> 56));
+ put ((byte) ((((int) value) & 0x00ff000000000000) >> 48));
+ put ((byte) ((((int) value) & 0x0000ff0000000000) >> 40));
+ put ((byte) ((((int) value) & 0x000000ff00000000) >> 32));
+ put ((byte) ((((int) value) & 0x00000000ff000000) >> 24));
+ put ((byte) ((((int) value) & 0x0000000000ff0000) >> 16));
+ put ((byte) ((((int) value) & 0x000000000000ff00) >> 8));
+ put ((byte) (((int) value) & 0x00000000000000ff));
return this;
}
final public double getDouble (int index)
{
- return nio_get_Double (this, index, limit ());
+ // FIXME: this handles big endian only
+ return (double) (((get (index) & 0xff) << 56)
+ + (get (index + 1) & 0xff) << 48
+ + (get (index + 2) & 0xff) << 40
+ + (get (index + 3) & 0xff) << 32
+ + (get (index + 4) & 0xff) << 24
+ + (get (index + 5) & 0xff) << 16
+ + (get (index + 6) & 0xff) << 8
+ + (get (index + 7) & 0xff));
}
final public ByteBuffer putDouble (int index, double value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
- nio_put_Double (this, index, limit (), value);
+ // FIXME: this handles big endian only
+ put (index, (byte) ((((int) value) & 0xff00000000000000) >> 56));
+ put (index + 1, (byte) ((((int) value) & 0x00ff000000000000) >> 48));
+ put (index + 2, (byte) ((((int) value) & 0x0000ff0000000000) >> 40));
+ put (index + 3, (byte) ((((int) value) & 0x000000ff00000000) >> 32));
+ put (index + 4, (byte) ((((int) value) & 0x00000000ff000000) >> 24));
+ put (index + 5, (byte) ((((int) value) & 0x0000000000ff0000) >> 16));
+ put (index + 6, (byte) ((((int) value) & 0x000000000000ff00) >> 8));
+ put (index + 7, (byte) (((int) value) & 0x00000000000000ff));
return this;
}
}
diff --git a/libjava/gnu/java/nio/CharBufferImpl.java b/libjava/gnu/java/nio/CharBufferImpl.java
index ca76974..fcf0e15 100644
--- a/libjava/gnu/java/nio/CharBufferImpl.java
+++ b/libjava/gnu/java/nio/CharBufferImpl.java
@@ -1,5 +1,5 @@
/* CharBufferImpl.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,6 +35,7 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package gnu.java.nio;
import java.nio.ByteBuffer;
@@ -49,18 +50,15 @@ public final class CharBufferImpl extends CharBuffer
{
private boolean readOnly;
- public CharBufferImpl(int cap, int off, int lim)
+ CharBufferImpl (int capacity)
{
- super (cap, lim, off, 0);
- this.backing_buffer = new char [cap];
- readOnly = false;
+ this (new char [capacity], 0, capacity, capacity, 0, -1, false);
}
- public CharBufferImpl(char[] array, int offset, int length)
+ CharBufferImpl (char[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
{
- super (array.length, length, offset, 0);
- this.backing_buffer = array;
- readOnly = false;
+ super (buffer, offset, capacity, limit, position, mark);
+ this.readOnly = readOnly;
}
public CharBufferImpl (CharBufferImpl copy)
@@ -70,37 +68,41 @@ public final class CharBufferImpl extends CharBuffer
readOnly = copy.isReadOnly ();
}
- private static native char[] nio_cast (byte[] copy);
-
- public boolean isReadOnly()
+ public boolean isReadOnly ()
{
return readOnly;
}
- public CharBuffer slice()
+ public CharBuffer slice ()
{
- return new CharBufferImpl (backing_buffer, arrayOffset () + position (),
- remaining ());
+ return new CharBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
}
- public CharBuffer duplicate()
+ public CharBuffer duplicate ()
{
- return new CharBufferImpl(this);
+ return new CharBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
}
- public CharBuffer asReadOnlyBuffer()
+ public CharBuffer asReadOnlyBuffer ()
{
- CharBufferImpl result = new CharBufferImpl (this);
- result.readOnly = true;
- return result;
+ return new CharBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
}
- public CharBuffer compact()
+ public CharBuffer compact ()
{
+ int copied = 0;
+
+ while (remaining () > 0)
+ {
+ put (copied, get ());
+ copied++;
+ }
+
+ position (copied);
return this;
}
- public boolean isDirect()
+ public boolean isDirect ()
{
return false;
}
@@ -113,20 +115,17 @@ public final class CharBufferImpl extends CharBuffer
|| end > length ())
throw new IndexOutOfBoundsException ();
- // No support for direct buffers yet.
- // assert array () != null;
- return new CharBufferImpl (array (), position () + start,
- position () + end);
+ return new CharBufferImpl (backing_buffer, array_offset, capacity (), position () + end, position () + start, -1, isReadOnly ());
}
/**
- * Relative get method. Reads the next character from the buffer.
+ * Relative get method. Reads the next <code>char</code> from the buffer.
*/
- final public char get()
+ final public char get ()
{
- char e = backing_buffer[position()];
- position(position()+1);
- return e;
+ char result = backing_buffer [position ()];
+ position (position () + 1);
+ return result;
}
/**
@@ -135,29 +134,30 @@ public final class CharBufferImpl extends CharBuffer
*
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
- final public CharBuffer put(char b)
+ final public CharBuffer put (char value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[position()] = b;
- position(position()+1);
+
+ backing_buffer [position ()] = value;
+ position (position () + 1);
return this;
}
-
+
/**
- * Absolute get method. Reads the character at position <code>index</code>.
+ * Absolute get method. Reads the <code>char</code> at position
+ * <code>index</code>.
*
* @exception IndexOutOfBoundsException If index is negative or not smaller
* than the buffer's limit.
*/
- final public char get(int index)
+ final public char get (int index)
{
if (index < 0
|| index >= limit ())
throw new IndexOutOfBoundsException ();
- return backing_buffer[index];
+ return backing_buffer [index];
}
/**
@@ -168,7 +168,7 @@ public final class CharBufferImpl extends CharBuffer
* than the buffer's limit.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
- final public CharBuffer put(int index, char b)
+ final public CharBuffer put (int index, char value)
{
if (index < 0
|| index >= limit ())
@@ -176,14 +176,13 @@ public final class CharBufferImpl extends CharBuffer
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[index] = b;
+
+ backing_buffer [index] = value;
return this;
}
-
-
- public final ByteOrder order()
+
+ final public ByteOrder order ()
{
- return ByteOrder.BIG_ENDIAN;
+ return ByteOrder.nativeOrder ();
}
}
diff --git a/libjava/gnu/java/nio/DirectByteBufferImpl.java b/libjava/gnu/java/nio/DirectByteBufferImpl.java
index 0c08ab4..47b76bb 100644
--- a/libjava/gnu/java/nio/DirectByteBufferImpl.java
+++ b/libjava/gnu/java/nio/DirectByteBufferImpl.java
@@ -75,7 +75,7 @@ public class DirectByteBufferImpl extends ByteBuffer
{
RawData address = allocateImpl (capacity);
- if (address == 0)
+ if (address == null)
throw new InternalError ("Not enough memory to create direct buffer");
return new DirectByteBufferImpl (address, 0, capacity, capacity, 0, -1, false);
diff --git a/libjava/gnu/java/nio/DoubleBufferImpl.java b/libjava/gnu/java/nio/DoubleBufferImpl.java
index 7d4f693..dc80959 100644
--- a/libjava/gnu/java/nio/DoubleBufferImpl.java
+++ b/libjava/gnu/java/nio/DoubleBufferImpl.java
@@ -1,5 +1,5 @@
/* DoubleBufferImpl.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,6 +35,7 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package gnu.java.nio;
import java.nio.ByteBuffer;
@@ -48,93 +49,114 @@ import java.nio.ReadOnlyBufferException;
public final class DoubleBufferImpl extends DoubleBuffer
{
private boolean readOnly;
-
- public DoubleBufferImpl(int cap, int off, int lim)
+
+ DoubleBufferImpl (int capacity)
{
- super (cap, lim, off, 0);
- this.backing_buffer = new double[cap];
- readOnly = false;
+ this (new double [capacity], 0, capacity, capacity, 0, -1, false);
}
- public DoubleBufferImpl(double[] array, int offset, int length)
+ DoubleBufferImpl (double[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
{
- super (array.length, length, offset, 0);
- this.backing_buffer = array;
- readOnly = false;
- }
-
- public DoubleBufferImpl(DoubleBufferImpl copy)
- {
- super (copy.capacity (), copy.limit (), copy.position (), 0);
- backing_buffer = copy.backing_buffer;
- readOnly = copy.isReadOnly ();
+ super (buffer, offset, capacity, limit, position, mark);
+ this.readOnly = readOnly;
}
public boolean isReadOnly ()
{
return readOnly;
}
-
+
public DoubleBuffer slice ()
{
- return new DoubleBufferImpl (this);
+ return new DoubleBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
}
-
- public DoubleBuffer duplicate()
+
+ public DoubleBuffer duplicate ()
{
- return new DoubleBufferImpl(this);
+ return new DoubleBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
}
-
- public DoubleBuffer asReadOnlyBuffer()
+
+ public DoubleBuffer asReadOnlyBuffer ()
{
- DoubleBufferImpl result = new DoubleBufferImpl (this);
- result.readOnly = true;
- return result;
+ return new DoubleBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
}
-
- public DoubleBuffer compact()
+
+ public DoubleBuffer compact ()
{
+ int copied = 0;
+
+ while (remaining () > 0)
+ {
+ put (copied, get ());
+ copied++;
+ }
+
+ position (copied);
return this;
}
-
- public boolean isDirect()
+
+ public boolean isDirect ()
{
return false;
}
- final public double get()
+ /**
+ * Relative get method. Reads the next <code>double</code> from the buffer.
+ */
+ final public double get ()
{
- double e = backing_buffer[position()];
- position(position()+1);
- return e;
+ double result = backing_buffer [position ()];
+ position (position () + 1);
+ return result;
}
-
- final public DoubleBuffer put(double b)
+
+ /**
+ * Relative put method. Writes <code>value</code> to the next position
+ * in the buffer.
+ *
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public DoubleBuffer put (double value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[position()] = b;
- position(position()+1);
+
+ backing_buffer [position ()] = value;
+ position (position () + 1);
return this;
}
-
- final public double get(int index)
+
+ /**
+ * Absolute get method. Reads the <code>double</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
+ final public double get (int index)
{
- return backing_buffer[index];
+ return backing_buffer [index];
}
-
- final public DoubleBuffer put(int index, double b)
+
+ /**
+ * Absolute put method. Writes <code>value</value> to position
+ * <code>index</code> in the buffer.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public DoubleBuffer put (int index, double value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[index] = b;
+
+ backing_buffer [index] = value;
return this;
}
final public ByteOrder order ()
{
- return ByteOrder.BIG_ENDIAN;
+ return ByteOrder.nativeOrder ();
}
}
diff --git a/libjava/gnu/java/nio/FloatBufferImpl.java b/libjava/gnu/java/nio/FloatBufferImpl.java
index 4acde80..69acecf 100644
--- a/libjava/gnu/java/nio/FloatBufferImpl.java
+++ b/libjava/gnu/java/nio/FloatBufferImpl.java
@@ -1,5 +1,5 @@
/* FloatBufferImpl.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,6 +35,7 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package gnu.java.nio;
import java.nio.ByteBuffer;
@@ -48,26 +49,16 @@ import java.nio.ReadOnlyBufferException;
public final class FloatBufferImpl extends FloatBuffer
{
private boolean readOnly;
-
- public FloatBufferImpl(int cap, int off, int lim)
- {
- super (cap, lim, off, 0);
- this.backing_buffer = new float [cap];
- readOnly = false;
- }
-
- public FloatBufferImpl(float[] array, int offset, int length)
+
+ FloatBufferImpl (int capacity)
{
- super (array.length, length, offset, 0);
- this.backing_buffer = array;
- readOnly = false;
+ this (new float [capacity], 0, capacity, capacity, 0, -1, false);
}
- public FloatBufferImpl(FloatBufferImpl copy)
+ FloatBufferImpl (float[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
{
- super (copy.capacity (), copy.limit (), copy.position (), 0);
- backing_buffer = copy.backing_buffer;
- readOnly = copy.isReadOnly ();
+ super (buffer, offset, capacity, limit, position, mark);
+ this.readOnly = readOnly;
}
public boolean isReadOnly ()
@@ -75,66 +66,97 @@ public final class FloatBufferImpl extends FloatBuffer
return readOnly;
}
- public FloatBuffer slice()
+ public FloatBuffer slice ()
{
- return new FloatBufferImpl (this);
+ return new FloatBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
}
- public FloatBuffer duplicate()
+ public FloatBuffer duplicate ()
{
- return new FloatBufferImpl(this);
+ return new FloatBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
}
- public FloatBuffer asReadOnlyBuffer()
+ public FloatBuffer asReadOnlyBuffer ()
{
- FloatBufferImpl result = new FloatBufferImpl (this);
- result.readOnly = true;
- return result;
+ return new FloatBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
}
- public FloatBuffer compact()
+ public FloatBuffer compact ()
{
+ int copied = 0;
+
+ while (remaining () > 0)
+ {
+ put (copied, get ());
+ copied++;
+ }
+
+ position (copied);
return this;
}
- public boolean isDirect()
+ public boolean isDirect ()
{
return false;
}
-
- final public float get()
+
+ /**
+ * Relative get method. Reads the next <code>float</code> from the buffer.
+ */
+ final public float get ()
{
- float e = backing_buffer[position()];
- position(position()+1);
- return e;
+ float result = backing_buffer [position ()];
+ position (position () + 1);
+ return result;
}
- final public FloatBuffer put(float b)
+ /**
+ * Relative put method. Writes <code>value</code> to the next position
+ * in the buffer.
+ *
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public FloatBuffer put (float value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[position()] = b;
- position(position()+1);
+
+ backing_buffer [position ()] = value;
+ position (position () + 1);
return this;
}
- final public float get(int index)
+ /**
+ * Absolute get method. Reads the <code>float</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
+ final public float get (int index)
{
- return backing_buffer[index];
+ return backing_buffer [index];
}
- final public FloatBuffer put(int index, float b)
+ /**
+ * Absolute put method. Writes <code>value</value> to position
+ * <code>index</code> in the buffer.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public FloatBuffer put (int index, float value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[index] = b;
+
+ backing_buffer [index] = value;
return this;
}
final public ByteOrder order ()
{
- return ByteOrder.BIG_ENDIAN;
+ return ByteOrder.nativeOrder ();
}
}
diff --git a/libjava/gnu/java/nio/IntBufferImpl.java b/libjava/gnu/java/nio/IntBufferImpl.java
index cfa3efe..573e5e0 100644
--- a/libjava/gnu/java/nio/IntBufferImpl.java
+++ b/libjava/gnu/java/nio/IntBufferImpl.java
@@ -1,5 +1,5 @@
/* IntBufferImpl.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,6 +35,7 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package gnu.java.nio;
import java.nio.ByteBuffer;
@@ -48,93 +49,114 @@ import java.nio.ReadOnlyBufferException;
public final class IntBufferImpl extends IntBuffer
{
private boolean readOnly;
-
- public IntBufferImpl(int cap, int off, int lim)
- {
- super (cap, lim, off, 0);
- this.backing_buffer = new int[cap];
- readOnly = false;
- }
- public IntBufferImpl(int[] array, int offset, int length)
+ IntBufferImpl (int capacity)
{
- super (array.length, length, offset, 0);
- this.backing_buffer = array;
- readOnly = false;
+ this (new int [capacity], 0, capacity, capacity, 0, -1, false);
}
-
- public IntBufferImpl(IntBufferImpl copy)
+
+ IntBufferImpl (int[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
{
- super (copy.capacity (), copy.limit (), copy.position (), 0);
- backing_buffer = copy.backing_buffer;
- readOnly = copy.isReadOnly ();
+ super (buffer, offset, capacity, limit, position, mark);
+ this.readOnly = readOnly;
}
-
- public boolean isReadOnly()
+
+ public boolean isReadOnly ()
{
return readOnly;
}
-
- public IntBuffer slice()
+
+ public IntBuffer slice ()
{
- return new IntBufferImpl (this);
+ return new IntBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
}
-
- public IntBuffer duplicate()
+
+ public IntBuffer duplicate ()
{
- return new IntBufferImpl(this);
+ return new IntBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
}
-
- public IntBuffer asReadOnlyBuffer()
+
+ public IntBuffer asReadOnlyBuffer ()
{
- IntBufferImpl result = new IntBufferImpl (this);
- result.readOnly = true;
- return result;
+ return new IntBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
}
-
- public IntBuffer compact()
+
+ public IntBuffer compact ()
{
+ int copied = 0;
+
+ while (remaining () > 0)
+ {
+ put (copied, get ());
+ copied++;
+ }
+
+ position (copied);
return this;
}
-
- public boolean isDirect()
+
+ public boolean isDirect ()
{
return false;
}
- final public int get()
+ /**
+ * Relative get method. Reads the next <code>int</code> from the buffer.
+ */
+ final public int get ()
{
- int e = backing_buffer[position()];
- position(position()+1);
- return e;
+ int result = backing_buffer [position ()];
+ position (position () + 1);
+ return result;
}
-
- final public IntBuffer put(int b)
+
+ /**
+ * Relative put method. Writes <code>value</code> to the next position
+ * in the buffer.
+ *
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public IntBuffer put (int value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[position()] = b;
- position(position()+1);
+
+ backing_buffer [position ()] = value;
+ position (position () + 1);
return this;
}
-
- final public int get(int index)
+
+ /**
+ * Absolute get method. Reads the <code>int</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
+ final public int get (int index)
{
- return backing_buffer[index];
+ return backing_buffer [index];
}
-
- final public IntBuffer put(int index, int b)
+
+ /**
+ * Absolute put method. Writes <code>value</value> to position
+ * <code>index</code> in the buffer.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public IntBuffer put (int index, int value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[index] = b;
+
+ backing_buffer [index] = value;
return this;
}
final public ByteOrder order ()
{
- return ByteOrder.BIG_ENDIAN;
+ return ByteOrder.nativeOrder ();
}
}
diff --git a/libjava/gnu/java/nio/LongBufferImpl.java b/libjava/gnu/java/nio/LongBufferImpl.java
index 8a295fa..e37ac8e 100644
--- a/libjava/gnu/java/nio/LongBufferImpl.java
+++ b/libjava/gnu/java/nio/LongBufferImpl.java
@@ -1,5 +1,5 @@
/* LongBufferImpl.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,6 +35,7 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package gnu.java.nio;
import java.nio.ByteBuffer;
@@ -49,92 +50,113 @@ public final class LongBufferImpl extends LongBuffer
{
private boolean readOnly;
- public LongBufferImpl(int cap, int off, int lim)
- {
- super (cap, lim, off, 0);
- this.backing_buffer = new long[cap];
- readOnly = false;
- }
-
- public LongBufferImpl(long[] array, int offset, int length)
+ LongBufferImpl (int capacity)
{
- super (array.length, length, offset, 0);
- this.backing_buffer = array;
- readOnly = false;
+ this (new long [capacity], 0, capacity, capacity, 0, -1, false);
}
-
- public LongBufferImpl(LongBufferImpl copy)
+
+ LongBufferImpl (long[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
{
- super (copy.capacity (), copy.limit (), copy.position (), 0);
- backing_buffer = copy.backing_buffer;
- readOnly = copy.isReadOnly ();
+ super (buffer, offset, capacity, limit, position, mark);
+ this.readOnly = readOnly;
}
-
- public boolean isReadOnly()
+
+ public boolean isReadOnly ()
{
return readOnly;
}
-
- public LongBuffer slice()
+
+ public LongBuffer slice ()
{
- return new LongBufferImpl (this);
+ return new LongBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
}
-
- public LongBuffer duplicate()
+
+ public LongBuffer duplicate ()
{
- return new LongBufferImpl(this);
+ return new LongBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
}
-
- public LongBuffer asReadOnlyBuffer()
+
+ public LongBuffer asReadOnlyBuffer ()
{
- LongBufferImpl result = new LongBufferImpl (this);
- result.readOnly = true;
- return result;
+ return new LongBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
}
-
- public LongBuffer compact()
+
+ public LongBuffer compact ()
{
+ int copied = 0;
+
+ while (remaining () > 0)
+ {
+ put (copied, get ());
+ copied++;
+ }
+
+ position (copied);
return this;
}
-
- public boolean isDirect()
+
+ public boolean isDirect ()
{
return false;
}
- final public long get()
+ /**
+ * Relative get method. Reads the next <code>long</code> from the buffer.
+ */
+ final public long get ()
{
- long e = backing_buffer[position()];
- position(position()+1);
- return e;
+ long result = backing_buffer [position ()];
+ position (position () + 1);
+ return result;
}
-
- final public LongBuffer put(long b)
+
+ /**
+ * Relative put method. Writes <code>value</code> to the next position
+ * in the buffer.
+ *
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public LongBuffer put (long value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[position()] = b;
- position(position()+1);
+
+ backing_buffer [position ()] = value;
+ position (position () + 1);
return this;
}
-
- final public long get(int index)
+
+ /**
+ * Absolute get method. Reads the <code>long</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
+ final public long get (int index)
{
- return backing_buffer[index];
+ return backing_buffer [index];
}
-
- final public LongBuffer put(int index, long b)
+
+ /**
+ * Absolute put method. Writes <code>value</value> to position
+ * <code>index</code> in the buffer.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public LongBuffer put (int index, long value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[index] = b;
+
+ backing_buffer [index] = value;
return this;
}
-
+
final public ByteOrder order ()
{
- return ByteOrder.BIG_ENDIAN;
+ return ByteOrder.nativeOrder ();
}
}
diff --git a/libjava/gnu/java/nio/ShortBufferImpl.java b/libjava/gnu/java/nio/ShortBufferImpl.java
index c4f679b..3dc625e 100644
--- a/libjava/gnu/java/nio/ShortBufferImpl.java
+++ b/libjava/gnu/java/nio/ShortBufferImpl.java
@@ -1,5 +1,5 @@
/* ShortBufferImpl.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,6 +35,7 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package gnu.java.nio;
import java.nio.ByteBuffer;
@@ -49,92 +50,113 @@ public final class ShortBufferImpl extends ShortBuffer
{
private boolean readOnly;
- public ShortBufferImpl(int cap, int off, int lim)
- {
- super (cap, lim, off, 0);
- this.backing_buffer = new short [cap];
- readOnly = false;
- }
-
- public ShortBufferImpl(short[] array, int offset, int length)
+ ShortBufferImpl (int capacity)
{
- super (array.length, length, offset, 0);
- this.backing_buffer = array;
- readOnly = false;
+ this (new short [capacity], 0, capacity, capacity, 0, -1, false);
}
-
- public ShortBufferImpl(ShortBufferImpl copy)
+
+ ShortBufferImpl (short[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
{
- super (copy.capacity (), copy.limit (), copy.position (), 0);
- backing_buffer = copy.backing_buffer;
- readOnly = copy.isReadOnly ();
+ super (buffer, offset, capacity, limit, position, mark);
+ this.readOnly = readOnly;
}
-
- public boolean isReadOnly()
+
+ public boolean isReadOnly ()
{
return readOnly;
}
-
- public ShortBuffer slice()
+
+ public ShortBuffer slice ()
{
- return new ShortBufferImpl (this);
+ return new ShortBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
}
-
- public ShortBuffer duplicate()
+
+ public ShortBuffer duplicate ()
{
- return new ShortBufferImpl(this);
+ return new ShortBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
}
-
- public ShortBuffer asReadOnlyBuffer()
+
+ public ShortBuffer asReadOnlyBuffer ()
{
- ShortBufferImpl result = new ShortBufferImpl (this);
- result.readOnly = true;
- return result;
+ return new ShortBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
}
-
- public ShortBuffer compact()
+
+ public ShortBuffer compact ()
{
+ int copied = 0;
+
+ while (remaining () > 0)
+ {
+ put (copied, get ());
+ copied++;
+ }
+
+ position (copied);
return this;
}
-
- public boolean isDirect()
+
+ public boolean isDirect ()
{
return false;
}
- final public short get()
+ /**
+ * Relative get method. Reads the next <code>short</code> from the buffer.
+ */
+ final public short get ()
{
- short e = backing_buffer[position()];
- position(position()+1);
- return e;
+ short result = backing_buffer [position ()];
+ position (position () + 1);
+ return result;
}
-
- final public ShortBuffer put(short b)
+
+ /**
+ * Relative put method. Writes <code>value</code> to the next position
+ * in the buffer.
+ *
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public ShortBuffer put (short value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[position()] = b;
- position(position()+1);
+
+ backing_buffer [position ()] = value;
+ position (position () + 1);
return this;
}
-
- final public short get(int index)
+
+ /**
+ * Absolute get method. Reads the <code>short</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
+ final public short get (int index)
{
- return backing_buffer[index];
+ return backing_buffer [index];
}
-
- final public ShortBuffer put(int index, short b)
+
+ /**
+ * Absolute put method. Writes <code>value</value> to position
+ * <code>index</code> in the buffer.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final public ShortBuffer put (int index, short value)
{
if (readOnly)
throw new ReadOnlyBufferException ();
-
- backing_buffer[index] = b;
+
+ backing_buffer [index] = value;
return this;
}
final public ByteOrder order ()
{
- return ByteOrder.BIG_ENDIAN;
+ return ByteOrder.nativeOrder ();
}
}
diff --git a/libjava/gnu/java/nio/natByteBufferImpl.cc b/libjava/gnu/java/nio/natByteBufferImpl.cc
deleted file mode 100644
index c6ba456..0000000
--- a/libjava/gnu/java/nio/natByteBufferImpl.cc
+++ /dev/null
@@ -1,82 +0,0 @@
-// natByteBufferImpl.cc
-
-/* Copyright (C) 2002, 2003 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-#include <config.h>
-
-#include <gcj/cni.h>
-#include <jvm.h>
-
-#include <gnu/java/nio/ByteBufferImpl.h>
-
-void
-gnu::java::nio::ByteBufferImpl::nio_put_Char(gnu::java::nio::ByteBufferImpl*, jint, jint, jchar)
-{
-}
-
-void
-gnu::java::nio::ByteBufferImpl::nio_put_Short(gnu::java::nio::ByteBufferImpl*, jint, jint, jshort)
-{
-}
-
-void
-gnu::java::nio::ByteBufferImpl::nio_put_Int(gnu::java::nio::ByteBufferImpl*, jint, jint, jint)
-{
-}
-
-void
-gnu::java::nio::ByteBufferImpl::nio_put_Long(gnu::java::nio::ByteBufferImpl*, jint, jint, jlong)
-{
-}
-
-void
-gnu::java::nio::ByteBufferImpl::nio_put_Float(gnu::java::nio::ByteBufferImpl*, jint, jint, jfloat)
-{
-}
-
-void
-gnu::java::nio::ByteBufferImpl::nio_put_Double(gnu::java::nio::ByteBufferImpl*, jint, jint, jdouble)
-{
-}
-
-jchar
-gnu::java::nio::ByteBufferImpl::nio_get_Char(gnu::java::nio::ByteBufferImpl*, jint, jint)
-{
- return ' ';
-}
-
-jshort
-gnu::java::nio::ByteBufferImpl::nio_get_Short(gnu::java::nio::ByteBufferImpl*, jint, jint)
-{
- return 0;
-}
-
-jint
-gnu::java::nio::ByteBufferImpl::nio_get_Int(gnu::java::nio::ByteBufferImpl*, jint, jint)
-{
- return 0;
-}
-
-jlong
-gnu::java::nio::ByteBufferImpl::nio_get_Long(gnu::java::nio::ByteBufferImpl*, jint, jint)
-{
- return 0;
-}
-
-jfloat
-gnu::java::nio::ByteBufferImpl::nio_get_Float(gnu::java::nio::ByteBufferImpl*, jint, jint)
-{
- return 0.0;
-}
-
-jdouble
-gnu::java::nio::ByteBufferImpl::nio_get_Double(gnu::java::nio::ByteBufferImpl*, jint, jint)
-{
- return 0.0;
-}
diff --git a/libjava/gnu/java/nio/natCharBufferImpl.cc b/libjava/gnu/java/nio/natCharBufferImpl.cc
deleted file mode 100644
index eb72927..0000000
--- a/libjava/gnu/java/nio/natCharBufferImpl.cc
+++ /dev/null
@@ -1,22 +0,0 @@
-// natCharBufferImpl.cc
-
-/* Copyright (C) 2002, 2003 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-#include <config.h>
-
-#include <gcj/cni.h>
-#include <jvm.h>
-
-#include <gnu/java/nio/CharBufferImpl.h>
-
-JArray<jchar>*
-gnu::java::nio::CharBufferImpl::nio_cast(JArray<jbyte>*)
-{
- return NULL;
-}