ByteBuffer.java (shiftDown): New helper method.

* java/nio/ByteBuffer.java (shiftDown):  New helper method.
	* java/nio/natDirectByteBufferImpl.cc (shiftDown):  New implementation.
	* java/nio/ByteBufferImpl.java (compact):  Use new shiftDown method.
	* sava/nio/ByteBufferHelper.java:  Remove redundant 'final' specifiers.
	Pass ByteOrder parameter to most methods, since the underlying
	ByteBuffer's order isn't always what we should use.
	* java/nio/ByteBufferImpl.java:  Pass byte-order various places.
	* java/nio/DirectByteBufferImpl.java:  Likewise.
	Use ByteBufferHelper methods.
	* java/nio/MappedByteBufferImpl.java:  Likewise.
	(compact):  Use shiftDown.
	* java/nio/CharViewBufferImpl.java (<init>):  Pass byte-order.
	(get, put):  Use ByteBufferHelper.
	(compact):  Use new shiftDown method.
	(duplicate(boolean)):  New helper method.
	(duplicate, asReadOnlyBuffer):  Use it.
	(order):  Return endian field.
	* java/nio/DoubleViewBufferImpl.java:  Likewise.
	* java/nio/FloatViewBufferImpl.java:  Likewise.
	* java/nio/IntViewBufferImpl.java:  Likewise.
	* java/nio/LongViewBufferImpl.java:  Likewise.
	* java/nio/ShortViewBufferImpl.java:  Likewise.
	* java/nio/CharViewBufferImpl.java (subsequence):  Redundant test.
	* java/nio/DirectByteBufferImpl.java (shiftDown):  New native method.
	(compact):  Re-implement using shiftDown.

From-SVN: r77501
This commit is contained in:
Per Bothner 2004-02-08 13:02:53 -08:00 committed by Per Bothner
parent b46b8fb40c
commit 40c23042f4
13 changed files with 493 additions and 552 deletions

View file

@ -1,5 +1,5 @@
/* ByteBufferImpl.java --
Copyright (C) 2002, 2003 Free Software Foundation, Inc.
Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -58,32 +58,32 @@ final class ByteBufferImpl extends ByteBuffer
public CharBuffer asCharBuffer ()
{
return new CharViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
return new CharViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public ShortBuffer asShortBuffer ()
{
return new ShortViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
return new ShortViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public IntBuffer asIntBuffer ()
{
return new IntViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
return new IntViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public LongBuffer asLongBuffer ()
{
return new LongViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
return new LongViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public FloatBuffer asFloatBuffer ()
{
return new FloatViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
return new FloatViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public DoubleBuffer asDoubleBuffer ()
{
return new DoubleViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
return new DoubleViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly (), order());
}
public boolean isReadOnly ()
@ -108,15 +108,14 @@ final class ByteBufferImpl extends ByteBuffer
public ByteBuffer compact ()
{
int copied = 0;
while (remaining () > 0)
int pos = position();
if (pos > 0)
{
put (copied, get ());
copied++;
int count = remaining();
shiftDown(0, pos, count);
position(count);
limit(capacity());
}
position (copied);
return this;
}
@ -182,121 +181,133 @@ final class ByteBufferImpl extends ByteBuffer
final public char getChar ()
{
return ByteBufferHelper.getChar (this);
return ByteBufferHelper.getChar(this, order());
}
final public ByteBuffer putChar (char value)
{
return ByteBufferHelper.putChar (this, value);
ByteBufferHelper.putChar(this, value, order());
return this;
}
final public char getChar (int index)
{
return ByteBufferHelper.getChar (this, index);
return ByteBufferHelper.getChar(this, index, order());
}
final public ByteBuffer putChar (int index, char value)
{
return ByteBufferHelper.putChar (this, index, value);
ByteBufferHelper.putChar(this, index, value, order());
return this;
}
final public short getShort ()
{
return ByteBufferHelper.getShort (this);
return ByteBufferHelper.getShort(this, order());
}
final public ByteBuffer putShort (short value)
{
return ByteBufferHelper.putShort (this, value);
ByteBufferHelper.putShort(this, value, order());
return this;
}
final public short getShort (int index)
{
return ByteBufferHelper.getShort (this, index);
return ByteBufferHelper.getShort(this, index, order());
}
final public ByteBuffer putShort (int index, short value)
{
return ByteBufferHelper.putShort (this, index, value);
ByteBufferHelper.putShort(this, index, value, order());
return this;
}
final public int getInt ()
{
return ByteBufferHelper.getInt (this);
return ByteBufferHelper.getInt(this, order());
}
final public ByteBuffer putInt (int value)
{
return ByteBufferHelper.putInt (this, value);
ByteBufferHelper.putInt(this, value, order());
return this;
}
final public int getInt (int index)
{
return ByteBufferHelper.getInt (this, index);
return ByteBufferHelper.getInt(this, index, order());
}
final public ByteBuffer putInt (int index, int value)
{
return ByteBufferHelper.putInt (this, index, value);
ByteBufferHelper.putInt(this, index, value, order());
return this;
}
final public long getLong ()
{
return ByteBufferHelper.getLong (this);
return ByteBufferHelper.getLong(this, order());
}
final public ByteBuffer putLong (long value)
{
return ByteBufferHelper.putLong (this, value);
ByteBufferHelper.putLong (this, value, order());
return this;
}
final public long getLong (int index)
{
return ByteBufferHelper.getLong (this, index);
return ByteBufferHelper.getLong (this, index, order());
}
final public ByteBuffer putLong (int index, long value)
{
return ByteBufferHelper.putLong (this, index, value);
ByteBufferHelper.putLong (this, index, value, order());
return this;
}
final public float getFloat ()
{
return ByteBufferHelper.getFloat (this);
return ByteBufferHelper.getFloat (this, order());
}
final public ByteBuffer putFloat (float value)
{
return ByteBufferHelper.putFloat (this, value);
ByteBufferHelper.putFloat (this, value, order());
return this;
}
final public float getFloat (int index)
public final float getFloat (int index)
{
return ByteBufferHelper.getFloat (this, index);
return ByteBufferHelper.getFloat (this, index, order());
}
public final ByteBuffer putFloat (int index, float value)
final public ByteBuffer putFloat (int index, float value)
{
return ByteBufferHelper.putFloat (this, index, value);
ByteBufferHelper.putFloat (this, index, value, order());
return this;
}
final public double getDouble ()
{
return ByteBufferHelper.getDouble (this);
return ByteBufferHelper.getDouble (this, order());
}
final public ByteBuffer putDouble (double value)
{
return ByteBufferHelper.putDouble (this, value);
ByteBufferHelper.putDouble (this, value, order());
return this;
}
final public double getDouble (int index)
{
return ByteBufferHelper.getDouble (this, index);
return ByteBufferHelper.getDouble (this, index, order());
}
final public ByteBuffer putDouble (int index, double value)
{
return ByteBufferHelper.putDouble (this, index, value);
ByteBufferHelper.putDouble (this, index, value, order());
return this;
}
}