ByteBufferImpl.java, [...]: Moved files to java/nio.
authorMichael Koch <konqueror@gmx.de>
Tue, 20 May 2003 08:58:31 +0000 (08:58 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Tue, 20 May 2003 08:58:31 +0000 (08:58 +0000)
2003-05-20  Michael Koch  <konqueror@gmx.de>

* gnu/java/nio/ByteBufferImpl.java,
gnu/java/nio/CharBufferImpl.java,
gnu/java/nio/CharViewBufferImpl.java,
gnu/java/nio/DirectByteBufferImpl.java,
gnu/java/nio/DoubleBufferImpl.java,
gnu/java/nio/DoubleViewBufferImpl.java,
gnu/java/nio/FloatBufferImpl.java,
gnu/java/nio/FloatViewBufferImpl.java,
gnu/java/nio/IntBufferImpl.java,
gnu/java/nio/IntViewBufferImpl.java,
gnu/java/nio/LongBufferImpl.java,
gnu/java/nio/LongViewBufferImpl.java,
gnu/java/nio/natDirectByteBufferImpl.cc,
gnu/java/nio/ShortBufferImpl.java,
gnu/java/nio/ShortViewBufferImpl.java:
Moved files to java/nio.
* gnu/java/nio/SocketChannelImpl.java

* java/nio/ByteBuffer.java,
java/nio/CharBuffer.java,
java/nio/DoubleBuffer.java,
java/nio/FloatBuffer.java,
java/nio/IntBuffer.java,
java/nio/LongBuffer.java,
java/nio/ShortBuffer.java:
Dont import anything.
* java/nio/ByteBufferImpl.java,
java/nio/CharBufferImpl.java,
java/nio/CharViewBufferImpl.java,
java/nio/DirectByteBufferImpl.java,
java/nio/DoubleBufferImpl.java,
java/nio/DoubleViewBufferImpl.java,
java/nio/FloatBufferImpl.java,
java/nio/FloatViewBufferImpl.java,
java/nio/IntBufferImpl.java,
java/nio/IntViewBufferImpl.java,
java/nio/LongBufferImpl.java,
java/nio/LongViewBufferImpl.java,
java/nio/natDirectByteBufferImpl.cc,
java/nio/ShortBufferImpl.java,
java/nio/ShortViewBufferImpl.java:
Moved from gnu/java/nio.
* Makefile.am
(ordinary_java_source_files): Moved files from gnu/java/nio to
java/nio.
(nat_source_files): Moved natDirectByteBufferImpl.cc from gnu/java/nio
to java/nio.
* Makefile.in: Regenerated.

From-SVN: r66990

41 files changed:
libjava/ChangeLog
libjava/Makefile.am
libjava/Makefile.in
libjava/gnu/java/nio/ByteBufferImpl.java [deleted file]
libjava/gnu/java/nio/CharBufferImpl.java [deleted file]
libjava/gnu/java/nio/CharViewBufferImpl.java [deleted file]
libjava/gnu/java/nio/DirectByteBufferImpl.java [deleted file]
libjava/gnu/java/nio/DoubleBufferImpl.java [deleted file]
libjava/gnu/java/nio/DoubleViewBufferImpl.java [deleted file]
libjava/gnu/java/nio/FloatBufferImpl.java [deleted file]
libjava/gnu/java/nio/FloatViewBufferImpl.java [deleted file]
libjava/gnu/java/nio/IntBufferImpl.java [deleted file]
libjava/gnu/java/nio/IntViewBufferImpl.java [deleted file]
libjava/gnu/java/nio/LongBufferImpl.java [deleted file]
libjava/gnu/java/nio/LongViewBufferImpl.java [deleted file]
libjava/gnu/java/nio/ShortBufferImpl.java [deleted file]
libjava/gnu/java/nio/ShortViewBufferImpl.java [deleted file]
libjava/gnu/java/nio/SocketChannelImpl.java
libjava/gnu/java/nio/natDirectByteBufferImpl.cc [deleted file]
libjava/java/nio/ByteBuffer.java
libjava/java/nio/ByteBufferImpl.java [new file with mode: 0644]
libjava/java/nio/CharBuffer.java
libjava/java/nio/CharBufferImpl.java [new file with mode: 0644]
libjava/java/nio/CharViewBufferImpl.java [new file with mode: 0644]
libjava/java/nio/DirectByteBufferImpl.java [new file with mode: 0644]
libjava/java/nio/DoubleBuffer.java
libjava/java/nio/DoubleBufferImpl.java [new file with mode: 0644]
libjava/java/nio/DoubleViewBufferImpl.java [new file with mode: 0644]
libjava/java/nio/FloatBuffer.java
libjava/java/nio/FloatBufferImpl.java [new file with mode: 0644]
libjava/java/nio/FloatViewBufferImpl.java [new file with mode: 0644]
libjava/java/nio/IntBuffer.java
libjava/java/nio/IntBufferImpl.java [new file with mode: 0644]
libjava/java/nio/IntViewBufferImpl.java [new file with mode: 0644]
libjava/java/nio/LongBuffer.java
libjava/java/nio/LongBufferImpl.java [new file with mode: 0644]
libjava/java/nio/LongViewBufferImpl.java [new file with mode: 0644]
libjava/java/nio/ShortBuffer.java
libjava/java/nio/ShortBufferImpl.java [new file with mode: 0644]
libjava/java/nio/ShortViewBufferImpl.java [new file with mode: 0644]
libjava/java/nio/natDirectByteBufferImpl.cc [new file with mode: 0644]

index 459ef17af6a3490ef0092c0e7ea0250a1cf84b48..470570294b1b684209710c6657b4ef1fb11837fe 100644 (file)
@@ -1,3 +1,54 @@
+2003-05-20  Michael Koch  <konqueror@gmx.de>
+
+       * gnu/java/nio/ByteBufferImpl.java,
+       gnu/java/nio/CharBufferImpl.java,
+       gnu/java/nio/CharViewBufferImpl.java,
+       gnu/java/nio/DirectByteBufferImpl.java,
+       gnu/java/nio/DoubleBufferImpl.java,
+       gnu/java/nio/DoubleViewBufferImpl.java,
+       gnu/java/nio/FloatBufferImpl.java,
+       gnu/java/nio/FloatViewBufferImpl.java,
+       gnu/java/nio/IntBufferImpl.java,
+       gnu/java/nio/IntViewBufferImpl.java,
+       gnu/java/nio/LongBufferImpl.java,
+       gnu/java/nio/LongViewBufferImpl.java,
+       gnu/java/nio/natDirectByteBufferImpl.cc,
+       gnu/java/nio/ShortBufferImpl.java,
+       gnu/java/nio/ShortViewBufferImpl.java:
+       Moved files to java/nio.
+       * gnu/java/nio/SocketChannelImpl.java
+       
+       * java/nio/ByteBuffer.java,
+       java/nio/CharBuffer.java,
+       java/nio/DoubleBuffer.java,
+       java/nio/FloatBuffer.java,
+       java/nio/IntBuffer.java,
+       java/nio/LongBuffer.java,
+       java/nio/ShortBuffer.java:
+       Dont import anything.
+       * java/nio/ByteBufferImpl.java,
+       java/nio/CharBufferImpl.java,
+       java/nio/CharViewBufferImpl.java,
+       java/nio/DirectByteBufferImpl.java,
+       java/nio/DoubleBufferImpl.java,
+       java/nio/DoubleViewBufferImpl.java,
+       java/nio/FloatBufferImpl.java,
+       java/nio/FloatViewBufferImpl.java,
+       java/nio/IntBufferImpl.java,
+       java/nio/IntViewBufferImpl.java,
+       java/nio/LongBufferImpl.java,
+       java/nio/LongViewBufferImpl.java,
+       java/nio/natDirectByteBufferImpl.cc,
+       java/nio/ShortBufferImpl.java,
+       java/nio/ShortViewBufferImpl.java:
+       Moved from gnu/java/nio.
+       * Makefile.am
+       (ordinary_java_source_files): Moved files from gnu/java/nio to
+       java/nio.
+       (nat_source_files): Moved natDirectByteBufferImpl.cc from gnu/java/nio
+       to java/nio.
+       * Makefile.in: Regenerated.
+
 2003-05-19  Michael Koch  <konqueror@gmx.de>
 
        * java/util/Calendar.java
index ff60cba7ec4c4d92e89970cc44c6073dd5a269c7..af64941ce950fcd5f03decbea6cd53cf2817b397 100644 (file)
@@ -2096,29 +2096,15 @@ gnu/java/locale/LocaleInformation_zh_HK.java \
 gnu/java/locale/LocaleInformation_zh_SG.java \
 gnu/java/locale/LocaleInformation_zh_TW.java \
 gnu/java/math/MPN.java \
-gnu/java/nio/ByteBufferImpl.java \
-gnu/java/nio/CharBufferImpl.java \
-gnu/java/nio/CharViewBufferImpl.java \
 gnu/java/nio/DatagramChannelImpl.java \
-gnu/java/nio/DirectByteBufferImpl.java \
-gnu/java/nio/DoubleBufferImpl.java \
-gnu/java/nio/DoubleViewBufferImpl.java \
 gnu/java/nio/FileChannelImpl.java \
 gnu/java/nio/FileLockImpl.java \
-gnu/java/nio/FloatBufferImpl.java \
-gnu/java/nio/FloatViewBufferImpl.java \
-gnu/java/nio/IntBufferImpl.java \
-gnu/java/nio/IntViewBufferImpl.java \
-gnu/java/nio/LongBufferImpl.java \
-gnu/java/nio/LongViewBufferImpl.java \
 gnu/java/nio/MappedByteFileBuffer.java \
 gnu/java/nio/PipeImpl.java \
 gnu/java/nio/SelectionKeyImpl.java \
 gnu/java/nio/SelectorImpl.java \
 gnu/java/nio/SelectorProviderImpl.java \
 gnu/java/nio/ServerSocketChannelImpl.java \
-gnu/java/nio/ShortBufferImpl.java \
-gnu/java/nio/ShortViewBufferImpl.java \
 gnu/java/nio/SocketChannelImpl.java \
 gnu/java/nio/charset/ISO_8859_1.java \
 gnu/java/nio/charset/Provider.java \
@@ -2236,16 +2222,30 @@ java/nio/Buffer.java \
 java/nio/BufferOverflowException.java \
 java/nio/BufferUnderflowException.java \
 java/nio/ByteBuffer.java \
+java/nio/ByteBufferImpl.java \
 java/nio/ByteOrder.java \
 java/nio/CharBuffer.java \
+java/nio/CharBufferImpl.java \
+java/nio/CharViewBufferImpl.java \
+java/nio/DirectByteBufferImpl.java \
 java/nio/DoubleBuffer.java \
+java/nio/DoubleBufferImpl.java \
+java/nio/DoubleViewBufferImpl.java \
 java/nio/FloatBuffer.java \
+java/nio/FloatBufferImpl.java \
+java/nio/FloatViewBufferImpl.java \
 java/nio/IntBuffer.java \
+java/nio/IntBufferImpl.java \
+java/nio/IntViewBufferImpl.java \
 java/nio/InvalidMarkException.java \
 java/nio/LongBuffer.java \
+java/nio/LongBufferImpl.java \
+java/nio/LongViewBufferImpl.java \
 java/nio/MappedByteBuffer.java \
 java/nio/ReadOnlyBufferException.java \
 java/nio/ShortBuffer.java \
+java/nio/ShortBufferImpl.java \
+java/nio/ShortViewBufferImpl.java \
 java/nio/channels/AlreadyConnectedException.java \
 java/nio/channels/AsynchronousCloseException.java \
 java/nio/channels/ByteChannel.java \
@@ -2563,7 +2563,6 @@ gnu/gcj/runtime/natSharedLibLoader.cc \
 gnu/gcj/runtime/natStackTrace.cc \
 gnu/gcj/runtime/natStringBuffer.cc \
 gnu/gcj/runtime/natVMClassLoader.cc \
-gnu/java/nio/natDirectByteBufferImpl.cc \
 gnu/java/nio/natFileChannelImpl.cc \
 gnu/java/nio/natFileLockImpl.cc \
 gnu/java/nio/natMappedByteFileBuffer.cc \
@@ -2597,6 +2596,7 @@ java/net/natNetworkInterface.cc \
 java/net/natInetAddress.cc \
 java/net/natPlainDatagramSocketImpl.cc \
 java/net/natPlainSocketImpl.cc \
+java/nio/natDirectByteBufferImpl.cc \
 java/text/natCollator.cc \
 java/util/natResourceBundle.cc \
 java/util/natTimeZone.cc \
index 9fb912d79233b7ba681b12d62eb189ed51531805..11d94d69067669d560175da1a2933363af94b326 100644 (file)
@@ -1858,29 +1858,15 @@ gnu/java/locale/LocaleInformation_zh_HK.java \
 gnu/java/locale/LocaleInformation_zh_SG.java \
 gnu/java/locale/LocaleInformation_zh_TW.java \
 gnu/java/math/MPN.java \
-gnu/java/nio/ByteBufferImpl.java \
-gnu/java/nio/CharBufferImpl.java \
-gnu/java/nio/CharViewBufferImpl.java \
 gnu/java/nio/DatagramChannelImpl.java \
-gnu/java/nio/DirectByteBufferImpl.java \
-gnu/java/nio/DoubleBufferImpl.java \
-gnu/java/nio/DoubleViewBufferImpl.java \
 gnu/java/nio/FileChannelImpl.java \
 gnu/java/nio/FileLockImpl.java \
-gnu/java/nio/FloatBufferImpl.java \
-gnu/java/nio/FloatViewBufferImpl.java \
-gnu/java/nio/IntBufferImpl.java \
-gnu/java/nio/IntViewBufferImpl.java \
-gnu/java/nio/LongBufferImpl.java \
-gnu/java/nio/LongViewBufferImpl.java \
 gnu/java/nio/MappedByteFileBuffer.java \
 gnu/java/nio/PipeImpl.java \
 gnu/java/nio/SelectionKeyImpl.java \
 gnu/java/nio/SelectorImpl.java \
 gnu/java/nio/SelectorProviderImpl.java \
 gnu/java/nio/ServerSocketChannelImpl.java \
-gnu/java/nio/ShortBufferImpl.java \
-gnu/java/nio/ShortViewBufferImpl.java \
 gnu/java/nio/SocketChannelImpl.java \
 gnu/java/nio/charset/ISO_8859_1.java \
 gnu/java/nio/charset/Provider.java \
@@ -1998,16 +1984,30 @@ java/nio/Buffer.java \
 java/nio/BufferOverflowException.java \
 java/nio/BufferUnderflowException.java \
 java/nio/ByteBuffer.java \
+java/nio/ByteBufferImpl.java \
 java/nio/ByteOrder.java \
 java/nio/CharBuffer.java \
+java/nio/CharBufferImpl.java \
+java/nio/CharViewBufferImpl.java \
+java/nio/DirectByteBufferImpl.java \
 java/nio/DoubleBuffer.java \
+java/nio/DoubleBufferImpl.java \
+java/nio/DoubleViewBufferImpl.java \
 java/nio/FloatBuffer.java \
+java/nio/FloatBufferImpl.java \
+java/nio/FloatViewBufferImpl.java \
 java/nio/IntBuffer.java \
+java/nio/IntBufferImpl.java \
+java/nio/IntViewBufferImpl.java \
 java/nio/InvalidMarkException.java \
 java/nio/LongBuffer.java \
+java/nio/LongBufferImpl.java \
+java/nio/LongViewBufferImpl.java \
 java/nio/MappedByteBuffer.java \
 java/nio/ReadOnlyBufferException.java \
 java/nio/ShortBuffer.java \
+java/nio/ShortBufferImpl.java \
+java/nio/ShortViewBufferImpl.java \
 java/nio/channels/AlreadyConnectedException.java \
 java/nio/channels/AsynchronousCloseException.java \
 java/nio/channels/ByteChannel.java \
@@ -2324,7 +2324,6 @@ gnu/gcj/runtime/natSharedLibLoader.cc \
 gnu/gcj/runtime/natStackTrace.cc \
 gnu/gcj/runtime/natStringBuffer.cc \
 gnu/gcj/runtime/natVMClassLoader.cc \
-gnu/java/nio/natDirectByteBufferImpl.cc \
 gnu/java/nio/natFileChannelImpl.cc \
 gnu/java/nio/natFileLockImpl.cc \
 gnu/java/nio/natMappedByteFileBuffer.cc \
@@ -2358,6 +2357,7 @@ java/net/natNetworkInterface.cc \
 java/net/natInetAddress.cc \
 java/net/natPlainDatagramSocketImpl.cc \
 java/net/natPlainSocketImpl.cc \
+java/nio/natDirectByteBufferImpl.cc \
 java/text/natCollator.cc \
 java/util/natResourceBundle.cc \
 java/util/natTimeZone.cc \
@@ -2500,17 +2500,15 @@ gnu/gcj/io/shs.lo gnu/gcj/protocol/core/natCoreInputStream.lo \
 gnu/gcj/runtime/natFinalizerThread.lo gnu/gcj/runtime/natFirstThread.lo \
 gnu/gcj/runtime/natNameFinder.lo gnu/gcj/runtime/natSharedLibLoader.lo \
 gnu/gcj/runtime/natStackTrace.lo gnu/gcj/runtime/natStringBuffer.lo \
-gnu/gcj/runtime/natVMClassLoader.lo \
-gnu/java/nio/natDirectByteBufferImpl.lo \
-gnu/java/nio/natFileChannelImpl.lo gnu/java/nio/natFileLockImpl.lo \
-gnu/java/nio/natMappedByteFileBuffer.lo gnu/java/nio/natSelectorImpl.lo \
-gnu/java/nio/natSocketChannelImpl.lo java/io/natFile.lo \
-java/io/natFileDescriptor.lo java/io/natObjectInputStream.lo \
-java/io/natVMObjectStreamClass.lo java/lang/natCharacter.lo \
-java/lang/natClass.lo java/lang/natClassLoader.lo \
-java/lang/natConcreteProcess.lo java/lang/natDouble.lo \
-java/lang/natFloat.lo java/lang/natMath.lo java/lang/natObject.lo \
-java/lang/natRuntime.lo java/lang/natString.lo \
+gnu/gcj/runtime/natVMClassLoader.lo gnu/java/nio/natFileChannelImpl.lo \
+gnu/java/nio/natFileLockImpl.lo gnu/java/nio/natMappedByteFileBuffer.lo \
+gnu/java/nio/natSelectorImpl.lo gnu/java/nio/natSocketChannelImpl.lo \
+java/io/natFile.lo java/io/natFileDescriptor.lo \
+java/io/natObjectInputStream.lo java/io/natVMObjectStreamClass.lo \
+java/lang/natCharacter.lo java/lang/natClass.lo \
+java/lang/natClassLoader.lo java/lang/natConcreteProcess.lo \
+java/lang/natDouble.lo java/lang/natFloat.lo java/lang/natMath.lo \
+java/lang/natObject.lo java/lang/natRuntime.lo java/lang/natString.lo \
 java/lang/natStringBuffer.lo java/lang/natSystem.lo \
 java/lang/natThread.lo java/lang/natVMSecurityManager.lo \
 java/lang/ref/natReference.lo java/lang/reflect/natArray.lo \
@@ -2518,9 +2516,9 @@ java/lang/reflect/natConstructor.lo java/lang/reflect/natField.lo \
 java/lang/reflect/natMethod.lo java/lang/reflect/natProxy.lo \
 java/net/natNetworkInterface.lo java/net/natInetAddress.lo \
 java/net/natPlainDatagramSocketImpl.lo java/net/natPlainSocketImpl.lo \
-java/text/natCollator.lo java/util/natResourceBundle.lo \
-java/util/natTimeZone.lo java/util/zip/natDeflater.lo \
-java/util/zip/natInflater.lo
+java/nio/natDirectByteBufferImpl.lo java/text/natCollator.lo \
+java/util/natResourceBundle.lo java/util/natTimeZone.lo \
+java/util/zip/natDeflater.lo java/util/zip/natInflater.lo
 lib_org_xml_sax_la_LDFLAGS = 
 lib_org_xml_sax_la_LIBADD = 
 lib_org_xml_sax_la_OBJECTS =  org/xml/sax/ext/DeclHandler.lo \
@@ -2673,7 +2671,7 @@ libgcj-test.spec.in libgcj.spec.in
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = gtar
+TAR = tar
 GZIP_ENV = --best
 DIST_SUBDIRS =  @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
 DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
@@ -2965,26 +2963,12 @@ DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
 .deps/gnu/java/locale/LocaleInformation_zh_HK.P \
 .deps/gnu/java/locale/LocaleInformation_zh_SG.P \
 .deps/gnu/java/locale/LocaleInformation_zh_TW.P \
-.deps/gnu/java/math/MPN.P .deps/gnu/java/nio/ByteBufferImpl.P \
-.deps/gnu/java/nio/CharBufferImpl.P \
-.deps/gnu/java/nio/CharViewBufferImpl.P \
-.deps/gnu/java/nio/DatagramChannelImpl.P \
-.deps/gnu/java/nio/DirectByteBufferImpl.P \
-.deps/gnu/java/nio/DoubleBufferImpl.P \
-.deps/gnu/java/nio/DoubleViewBufferImpl.P \
+.deps/gnu/java/math/MPN.P .deps/gnu/java/nio/DatagramChannelImpl.P \
 .deps/gnu/java/nio/FileChannelImpl.P .deps/gnu/java/nio/FileLockImpl.P \
-.deps/gnu/java/nio/FloatBufferImpl.P \
-.deps/gnu/java/nio/FloatViewBufferImpl.P \
-.deps/gnu/java/nio/IntBufferImpl.P \
-.deps/gnu/java/nio/IntViewBufferImpl.P \
-.deps/gnu/java/nio/LongBufferImpl.P \
-.deps/gnu/java/nio/LongViewBufferImpl.P \
 .deps/gnu/java/nio/MappedByteFileBuffer.P .deps/gnu/java/nio/PipeImpl.P \
 .deps/gnu/java/nio/SelectionKeyImpl.P .deps/gnu/java/nio/SelectorImpl.P \
 .deps/gnu/java/nio/SelectorProviderImpl.P \
 .deps/gnu/java/nio/ServerSocketChannelImpl.P \
-.deps/gnu/java/nio/ShortBufferImpl.P \
-.deps/gnu/java/nio/ShortViewBufferImpl.P \
 .deps/gnu/java/nio/SocketChannelImpl.P \
 .deps/gnu/java/nio/charset/ISO_8859_1.P \
 .deps/gnu/java/nio/charset/Provider.P \
@@ -2995,7 +2979,6 @@ DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
 .deps/gnu/java/nio/charset/UTF_16Encoder.P \
 .deps/gnu/java/nio/charset/UTF_16LE.P \
 .deps/gnu/java/nio/charset/UTF_8.P \
-.deps/gnu/java/nio/natDirectByteBufferImpl.P \
 .deps/gnu/java/nio/natFileChannelImpl.P \
 .deps/gnu/java/nio/natFileLockImpl.P \
 .deps/gnu/java/nio/natMappedByteFileBuffer.P \
@@ -3505,11 +3488,19 @@ DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
 .deps/java/net/natPlainSocketImpl.P .deps/java/nio/Buffer.P \
 .deps/java/nio/BufferOverflowException.P \
 .deps/java/nio/BufferUnderflowException.P .deps/java/nio/ByteBuffer.P \
-.deps/java/nio/ByteOrder.P .deps/java/nio/CharBuffer.P \
-.deps/java/nio/DoubleBuffer.P .deps/java/nio/FloatBuffer.P \
-.deps/java/nio/IntBuffer.P .deps/java/nio/InvalidMarkException.P \
-.deps/java/nio/LongBuffer.P .deps/java/nio/MappedByteBuffer.P \
+.deps/java/nio/ByteBufferImpl.P .deps/java/nio/ByteOrder.P \
+.deps/java/nio/CharBuffer.P .deps/java/nio/CharBufferImpl.P \
+.deps/java/nio/CharViewBufferImpl.P \
+.deps/java/nio/DirectByteBufferImpl.P .deps/java/nio/DoubleBuffer.P \
+.deps/java/nio/DoubleBufferImpl.P .deps/java/nio/DoubleViewBufferImpl.P \
+.deps/java/nio/FloatBuffer.P .deps/java/nio/FloatBufferImpl.P \
+.deps/java/nio/FloatViewBufferImpl.P .deps/java/nio/IntBuffer.P \
+.deps/java/nio/IntBufferImpl.P .deps/java/nio/IntViewBufferImpl.P \
+.deps/java/nio/InvalidMarkException.P .deps/java/nio/LongBuffer.P \
+.deps/java/nio/LongBufferImpl.P .deps/java/nio/LongViewBufferImpl.P \
+.deps/java/nio/MappedByteBuffer.P \
 .deps/java/nio/ReadOnlyBufferException.P .deps/java/nio/ShortBuffer.P \
+.deps/java/nio/ShortBufferImpl.P .deps/java/nio/ShortViewBufferImpl.P \
 .deps/java/nio/channels/AlreadyConnectedException.P \
 .deps/java/nio/channels/AsynchronousCloseException.P \
 .deps/java/nio/channels/ByteChannel.P \
@@ -3561,6 +3552,7 @@ DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
 .deps/java/nio/charset/UnmappableCharacterException.P \
 .deps/java/nio/charset/UnsupportedCharsetException.P \
 .deps/java/nio/charset/spi/CharsetProvider.P \
+.deps/java/nio/natDirectByteBufferImpl.P \
 .deps/java/rmi/AccessException.P .deps/java/rmi/AlreadyBoundException.P \
 .deps/java/rmi/ConnectException.P .deps/java/rmi/ConnectIOException.P \
 .deps/java/rmi/MarshalException.P .deps/java/rmi/MarshalledObject.P \
diff --git a/libjava/gnu/java/nio/ByteBufferImpl.java b/libjava/gnu/java/nio/ByteBufferImpl.java
deleted file mode 100644 (file)
index f9de8c7..0000000
+++ /dev/null
@@ -1,443 +0,0 @@
-/* ByteBufferImpl.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.CharBuffer;
-import java.nio.DoubleBuffer;
-import java.nio.FloatBuffer;
-import java.nio.IntBuffer;
-import java.nio.LongBuffer;
-import java.nio.ReadOnlyBufferException;
-import java.nio.ShortBuffer;
-
-/**
- * This is a Heap memory implementation
- */
-public final class ByteBufferImpl extends ByteBuffer
-{
-  private boolean readOnly;
-
-  ByteBufferImpl (int capacity)
-  {
-    this (new byte [capacity], 0, capacity, capacity, 0, -1, false);
-  }
-  
-  ByteBufferImpl (byte[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
-  {
-    super (buffer, offset, capacity, limit, position, mark);
-    this.readOnly = readOnly;
-  }
-  
-  public ByteBufferImpl (ByteBufferImpl copy)
-  {
-    super (copy.capacity (), copy.limit (), copy.position (), 0);
-    backing_buffer = copy.backing_buffer;
-    readOnly = copy.isReadOnly ();
-  }
-
-  void inc_pos (int toAdd)
-  {
-    position (position () + toAdd);
-  }
-
-  public CharBuffer asCharBuffer ()
-  {
-    return new CharViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
-  }
-
-  public ShortBuffer asShortBuffer ()
-  {
-    return new ShortViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
-  }
-
-  public IntBuffer asIntBuffer ()
-  {
-    return new IntViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
-  }
-
-  public LongBuffer asLongBuffer ()
-  {
-    return new LongViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
-  }
-
-  public FloatBuffer asFloatBuffer ()
-  {
-    return new FloatViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
-  }
-
-  public DoubleBuffer asDoubleBuffer ()
-  {
-    return new DoubleViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
-  }
-
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public ByteBuffer slice ()
-  {
-    return new ByteBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public ByteBuffer duplicate ()
-  {
-    return new ByteBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
-  }
-  
-  public ByteBuffer asReadOnlyBuffer ()
-  {
-    return new ByteBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
-  }
-  
-  public ByteBuffer compact ()
-  {
-    int copied = 0;
-    
-    while (remaining () > 0)
-      {
-       put (copied, get ());
-       copied++;
-      }
-
-    position (copied);
-    return this;
-  }
-  
-  public boolean isDirect ()
-  {
-    return false;
-  }
-
-  /**
-   * Relative get method. Reads the next <code>byte</code> from the buffer.
-   */
-  final public byte get ()
-  {
-    byte result = backing_buffer [position ()];
-    position (position () + 1);
-    return result;
-  }
-  
-  /**
-   * 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 ()] = value;
-    position (position () + 1);
-    return this;
-  }
-  
-  /**
-   * 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];
-  }
-  
-  /**
-   * 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] = value;
-    return this;
-  }
-  
-  final public char getChar ()
-  {
-    // FIXME: this handles big endian only
-    return (char) (((get () & 0xff) << 8) + (get () & 0xff));
-  }
-  
-  final public ByteBuffer putChar (char value)
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    return (char) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
-  }
-  
-  final public ByteBuffer putChar (int index, char 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 ()
-  {
-    // FIXME: this handles big endian only
-    return (short) (((get () & 0xff) << 8) + (get () & 0xff));
-  }
-  
-  final public ByteBuffer putShort (short value)
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    return (short) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
-  }
-  
-  final public ByteBuffer putShort (int index, short 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 ()
-  {
-    // 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)
-  {
-    // 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)
-  {
-    // 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)
-  {
-    // 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 ()
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    put ((byte) ((value & 0xff00000000000000L) >> 56));
-    put ((byte) ((value & 0x00ff000000000000L) >> 48));
-    put ((byte) ((value & 0x0000ff0000000000L) >> 40));
-    put ((byte) ((value & 0x000000ff00000000L) >> 32));
-    put ((byte) ((value & 0x00000000ff000000L) >> 24));
-    put ((byte) ((value & 0x0000000000ff0000L) >> 16));
-    put ((byte) ((value & 0x000000000000ff00L) >> 8));
-    put ((byte) (value & 0x00000000000000ffL));
-    return this;
-  }
-  
-  final public long getLong (int index)
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    put (index, (byte) ((value & 0xff00000000000000L) >> 56));
-    put (index + 1, (byte) ((value & 0x00ff000000000000L) >> 48));
-    put (index + 2, (byte) ((value & 0x0000ff0000000000L) >> 40));
-    put (index + 3, (byte) ((value & 0x000000ff00000000L) >> 32));
-    put (index + 4, (byte) ((value & 0x00000000ff000000L) >> 24));
-    put (index + 5, (byte) ((value & 0x0000000000ff0000L) >> 16));
-    put (index + 6, (byte) ((value & 0x000000000000ff00L) >> 8));
-    put (index + 7, (byte) (value & 0x00000000000000ffL));
-    return this;
-  }
-
-  final public float getFloat ()
-  {
-    // 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)
-  {
-    // 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)
-  {
-    // 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)
-  {
-    // 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 ()
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    put ((byte) ((((long) value) & 0xff00000000000000L) >> 56));
-    put ((byte) ((((long) value) & 0x00ff000000000000L) >> 48));
-    put ((byte) ((((long) value) & 0x0000ff0000000000L) >> 40));
-    put ((byte) ((((long) value) & 0x000000ff00000000L) >> 32));
-    put ((byte) ((((long) value) & 0x00000000ff000000L) >> 24));
-    put ((byte) ((((long) value) & 0x0000000000ff0000L) >> 16));
-    put ((byte) ((((long) value) & 0x000000000000ff00L) >> 8));
-    put ((byte) (((long) value) & 0x00000000000000ffL));
-    return this;
-  }
-  
-  final public double getDouble (int index)
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    put (index, (byte) ((((long) value) & 0xff00000000000000L) >> 56));
-    put (index + 1, (byte) ((((long) value) & 0x00ff000000000000L) >> 48));
-    put (index + 2, (byte) ((((long) value) & 0x0000ff0000000000L) >> 40));
-    put (index + 3, (byte) ((((long) value) & 0x000000ff00000000L) >> 32));
-    put (index + 4, (byte) ((((long) value) & 0x00000000ff000000L) >> 24));
-    put (index + 5, (byte) ((((long) value) & 0x0000000000ff0000L) >> 16));
-    put (index + 6, (byte) ((((long) value) & 0x000000000000ff00L) >> 8));
-    put (index + 7, (byte) (((long) value) & 0x00000000000000ffL));
-    return this;
-  }
-}
diff --git a/libjava/gnu/java/nio/CharBufferImpl.java b/libjava/gnu/java/nio/CharBufferImpl.java
deleted file mode 100644 (file)
index fcf0e15..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/* CharBufferImpl.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.CharBuffer;
-import java.nio.ReadOnlyBufferException;
-
-/**
- * This is a Heap memory implementation
- */
-public final class CharBufferImpl extends CharBuffer
-{
-  private boolean readOnly;
-
-  CharBufferImpl (int capacity)
-  {
-    this (new char [capacity], 0, capacity, capacity, 0, -1, false);
-  }
-  
-  CharBufferImpl (char[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
-  {
-    super (buffer, offset, capacity, limit, position, mark);
-    this.readOnly = readOnly;
-  }
-  
-  public CharBufferImpl (CharBufferImpl copy)
-  {
-    super (copy.capacity (), copy.limit (), copy.position (), 0);
-    backing_buffer = copy.backing_buffer;
-    readOnly = copy.isReadOnly ();
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public CharBuffer slice ()
-  {
-    return new CharBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public CharBuffer duplicate ()
-  {
-    return new CharBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
-  }
-  
-  public CharBuffer asReadOnlyBuffer ()
-  {
-    return new CharBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
-  }
-  
-  public CharBuffer compact ()
-  {
-    int copied = 0;
-    
-    while (remaining () > 0)
-      {
-       put (copied, get ());
-       copied++;
-      }
-
-    position (copied);
-    return this;
-  }
-  
-  public boolean isDirect ()
-  {
-    return false;
-  }
-
-  final public CharSequence subSequence (int start, int end)
-  {
-    if (start < 0
-        || start > length ()
-        || end < start
-        || end > length ())
-      throw new IndexOutOfBoundsException ();
-
-    return new CharBufferImpl (backing_buffer, array_offset, capacity (), position () + end, position () + start, -1, isReadOnly ());
-  }
-  
-  /**
-   * Relative get method. Reads the next <code>char</code> from the buffer.
-   */
-  final public char get ()
-  {
-    char result = backing_buffer [position ()];
-    position (position () + 1);
-    return result;
-  }
-  
-  /**
-   * Relative put method. Writes <code>value</code> to the next position
-   * in the buffer.
-   * 
-   * @exception ReadOnlyBufferException If this buffer is read-only.
-   */
-  final public CharBuffer put (char value)
-  {
-    if (readOnly)
-      throw new ReadOnlyBufferException ();
-                   
-    backing_buffer [position ()] = value;
-    position (position () + 1);
-    return this;
-  }
-  
-  /**
-   * 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)
-  {
-    if (index < 0
-        || index >= limit ())
-      throw new IndexOutOfBoundsException ();
-    
-    return backing_buffer [index];
-  }
-  
-  /**
-   * 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 CharBuffer put (int index, char value)
-  {
-    if (index < 0
-        || index >= limit ())
-      throw new IndexOutOfBoundsException ();
-    
-    if (readOnly)
-      throw new ReadOnlyBufferException ();
-           
-    backing_buffer [index] = value;
-    return this;
-  }
-  
-  final public ByteOrder order ()
-  {
-    return ByteOrder.nativeOrder ();
-  }
-}
diff --git a/libjava/gnu/java/nio/CharViewBufferImpl.java b/libjava/gnu/java/nio/CharViewBufferImpl.java
deleted file mode 100644 (file)
index 7280de5..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/* CharViewBufferImpl.java -- 
-   Copyright (C) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.CharBuffer;
-
-class CharViewBufferImpl extends CharBuffer
-{
-  private boolean readOnly;
-  private int offset;
-  private ByteBuffer bb;
-  private ByteOrder endian;
-  
-  public CharViewBufferImpl (ByteBuffer bb, boolean readOnly)
-  {
-    super (bb.remaining () >> 1, bb.remaining () >> 1, bb.position (), 0);
-    this.bb = bb;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from CharByteBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public CharViewBufferImpl (ByteBuffer bb, int offset, int capacity,
-                               int limit, int position, int mark,
-                               boolean readOnly)
-  {
-    super (limit >> 1, limit >> 1, position >> 1, mark >> 1);
-    this.bb = bb;
-    this.offset = offset;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from CharViewBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public char get ()
-  {
-    char result = bb.getChar ((position () << 1) + offset);
-    position (position () + 1);
-    return result;
-  }
-
-  public char get (int index)
-  {
-    return bb.getChar ((index << 1) + offset);
-  }
-
-  public CharBuffer put (char value)
-  {
-    bb.putChar ((position () << 1) + offset, value);
-    position (position () + 1);
-    return this;
-  }
-  
-  public CharBuffer put (int index, char value)
-  {
-    bb.putChar ((index << 1) + offset, value);
-    return this;
-  }
-
-  public CharBuffer compact ()
-  {
-    if (position () > 0)
-      {
-        // Copy all data from position() to limit() to the beginning of the
-        // buffer, set position to end of data and limit to capacity
-        // XXX: This can surely be optimized, for direct and non-direct buffers
-        
-        int count = limit () - position ();
-              
-        for (int i = 0; i < count; i++)
-          {
-            bb.putChar ((i >> 1) + offset,
-                          bb.getChar (((i + position ()) >> 1) + offset));
-          }
-
-        position (count);
-        limit (capacity ());
-      }
-
-    return this;
-  }
-  
-  public CharBuffer duplicate ()
-  {
-    // Create a copy of this object that shares its content
-    // FIXME: mark is not correct
-    return new CharViewBufferImpl (bb, offset, capacity (), limit (),
-                                     position (), -1, isReadOnly ());
-  }
-  
-  public CharBuffer slice ()
-  {
-    // Create a sliced copy of this object that shares its content.
-    return new CharViewBufferImpl (bb, (position () >> 1) + offset,
-                                      remaining (), remaining (), 0, -1,
-                                     isReadOnly ());
-  }
-  
-  public CharSequence subSequence (int start, int end)
-  {
-    if (start < 0
-        || start > length ()
-        || end < start
-        || end > length ())
-      throw new IndexOutOfBoundsException ();
-
-    return new CharViewBufferImpl (bb, array_offset, capacity (), position () + end, position () + start, -1, isReadOnly ());
-  }
-
-  public CharBuffer asReadOnlyBuffer ()
-  {
-    // Create a copy of this object that shares its content and is read-only
-    return new CharViewBufferImpl (bb, (position () >> 1) + offset,
-                                     remaining (), remaining (), 0, -1, true);
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public boolean isDirect ()
-  {
-    return bb.isDirect ();
-  }
-  
-  public ByteOrder order ()
-  {
-    return ByteOrder.LITTLE_ENDIAN;
-  }
-}
diff --git a/libjava/gnu/java/nio/DirectByteBufferImpl.java b/libjava/gnu/java/nio/DirectByteBufferImpl.java
deleted file mode 100644 (file)
index d214f0c..0000000
+++ /dev/null
@@ -1,423 +0,0 @@
-/* DirectByteBufferImpl.java -- 
-   Copyright (C) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.CharBuffer;
-import java.nio.DoubleBuffer;
-import java.nio.FloatBuffer;
-import java.nio.IntBuffer;
-import java.nio.LongBuffer;
-import java.nio.ShortBuffer;
-import gnu.gcj.RawData;
-
-public class DirectByteBufferImpl extends ByteBuffer
-{
-  private RawData address;
-  private int offset;
-  private boolean readOnly;
-  
-  public DirectByteBufferImpl (RawData address, int offset, int capacity,
-                               int limit, int position, int mark,
-                               boolean readOnly)
-  {
-    super (capacity, limit, position, mark);
-    this.address = address;
-    this.offset = offset;
-    this.readOnly = readOnly;
-  }
-
-  private static native RawData allocateImpl (int capacity);
-  private static native void freeImpl (RawData address);
-  
-  protected void finalize () throws Throwable
-  {
-    freeImpl (address);
-  }
-  
-  public static ByteBuffer allocateDirect (int capacity)
-  {
-    RawData address = allocateImpl (capacity);
-
-    if (address == null)
-      throw new InternalError ("Not enough memory to create direct buffer");
-    
-    return new DirectByteBufferImpl (address, 0, capacity, capacity, 0, -1, false);
-  }
-  
-  private native byte getImpl (int index);
-  private native void putImpl (int index, byte value);
-
-  public byte get ()
-  {
-    byte result = getImpl (position () + offset);
-    position (position () + 1);
-    return result;
-  }
-
-  public byte get (int index)
-  {
-    return getImpl (index);
-  }
-
-  public ByteBuffer put (byte value)
-  {
-    putImpl (position (), value);
-    position (position () + 1);
-    return this;
-  }
-  
-  public ByteBuffer put (int index, byte value)
-  {
-    putImpl (index, value);
-    return this;
-  }
-  
-  public ByteBuffer compact ()
-  {
-    // FIXME this can sure be optimized using memcpy()  
-    int copied = 0;
-    
-    while (remaining () > 0)
-      {
-       put (copied, get ());
-       copied++;
-      }
-
-    position (copied);
-    return this;
-  }
-
-  public ByteBuffer duplicate ()
-  {
-    return new DirectByteBufferImpl (
-      address, offset, capacity (), limit (), position (), -1, isReadOnly ());
-  }
-
-  public ByteBuffer slice ()
-  {
-    return new DirectByteBufferImpl (address, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-
-  public ByteBuffer asReadOnlyBuffer ()
-  {
-    return new DirectByteBufferImpl (
-      address, offset, capacity (), limit (), position (), -1, true);
-  }
-
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-
-  public boolean isDirect ()
-  {
-    return true;
-  }
-
-  public CharBuffer asCharBuffer ()
-  {
-    return new CharViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public DoubleBuffer asDoubleBuffer ()
-  {
-    return new DoubleViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public FloatBuffer asFloatBuffer ()
-  {
-    return new FloatViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public IntBuffer asIntBuffer ()
-  {
-    return new IntViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public LongBuffer asLongBuffer ()
-  {
-    return new LongViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public ShortBuffer asShortBuffer ()
-  {
-    return new ShortViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  final public char getChar ()
-  {
-    // FIXME: this handles big endian only
-    return (char) (((get () & 0xff) << 8) + (get () & 0xff));
-  }
-  
-  final public ByteBuffer putChar (char value)
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    return (char) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
-  }
-  
-  final public ByteBuffer putChar (int index, char 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 ()
-  {
-    // FIXME: this handles big endian only
-    return (short) (((get () & 0xff) << 8) + (get () & 0xff));
-  }
-  
-  final public ByteBuffer putShort (short value)
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    return (short) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
-  }
-  
-  final public ByteBuffer putShort (int index, short 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 ()
-  {
-    // 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)
-  {
-    // 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)
-  {
-    // 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)
-  {
-    // 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 ()
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    put ((byte) ((value & 0xff00000000000000L) >> 56));
-    put ((byte) ((value & 0x00ff000000000000L) >> 48));
-    put ((byte) ((value & 0x0000ff0000000000L) >> 40));
-    put ((byte) ((value & 0x000000ff00000000L) >> 32));
-    put ((byte) ((value & 0x00000000ff000000L) >> 24));
-    put ((byte) ((value & 0x0000000000ff0000L) >> 16));
-    put ((byte) ((value & 0x000000000000ff00L) >> 8));
-    put ((byte) (value & 0x00000000000000ffL));
-    return this;
-  }
-  
-  final public long getLong (int index)
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    put (index, (byte) ((value & 0xff00000000000000L) >> 56));
-    put (index + 1, (byte) ((value & 0x00ff000000000000L) >> 48));
-    put (index + 2, (byte) ((value & 0x0000ff0000000000L) >> 40));
-    put (index + 3, (byte) ((value & 0x000000ff00000000L) >> 32));
-    put (index + 4, (byte) ((value & 0x00000000ff000000L) >> 24));
-    put (index + 5, (byte) ((value & 0x0000000000ff0000L) >> 16));
-    put (index + 6, (byte) ((value & 0x000000000000ff00L) >> 8));
-    put (index + 7, (byte) (value & 0x00000000000000ffL));
-    return this;
-  }
-
-  final public float getFloat ()
-  {
-    // 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)
-  {
-    // 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)
-  {
-    // 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)
-  {
-    // 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 ()
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    put ((byte) ((((long) value) & 0xff00000000000000L) >> 56));
-    put ((byte) ((((long) value) & 0x00ff000000000000L) >> 48));
-    put ((byte) ((((long) value) & 0x0000ff0000000000L) >> 40));
-    put ((byte) ((((long) value) & 0x000000ff00000000L) >> 32));
-    put ((byte) ((((long) value) & 0x00000000ff000000L) >> 24));
-    put ((byte) ((((long) value) & 0x0000000000ff0000L) >> 16));
-    put ((byte) ((((long) value) & 0x000000000000ff00L) >> 8));
-    put ((byte) (((long) value) & 0x00000000000000ffL));
-    return this;
-  }
-  
-  final public double getDouble (int index)
-  {
-    // 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)
-  {
-    // FIXME: this handles big endian only
-    put (index, (byte) ((((long) value) & 0xff00000000000000L) >> 56));
-    put (index + 1, (byte) ((((long) value) & 0x00ff000000000000L) >> 48));
-    put (index + 2, (byte) ((((long) value) & 0x0000ff0000000000L) >> 40));
-    put (index + 3, (byte) ((((long) value) & 0x000000ff00000000L) >> 32));
-    put (index + 4, (byte) ((((long) value) & 0x00000000ff000000L) >> 24));
-    put (index + 5, (byte) ((((long) value) & 0x0000000000ff0000L) >> 16));
-    put (index + 6, (byte) ((((long) value) & 0x000000000000ff00L) >> 8));
-    put (index + 7, (byte) (((long) value) & 0x00000000000000ffL));
-    return this;
-  }
-}
diff --git a/libjava/gnu/java/nio/DoubleBufferImpl.java b/libjava/gnu/java/nio/DoubleBufferImpl.java
deleted file mode 100644 (file)
index dc80959..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/* DoubleBufferImpl.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.DoubleBuffer;
-import java.nio.ReadOnlyBufferException;
-
-/**
- * This is a Heap memory implementation
- */
-public final class DoubleBufferImpl extends DoubleBuffer
-{
-  private boolean readOnly;
-
-  DoubleBufferImpl (int capacity)
-  {
-    this (new double [capacity], 0, capacity, capacity, 0, -1, false);
-  }
-  
-  DoubleBufferImpl (double[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
-  {
-    super (buffer, offset, capacity, limit, position, mark);
-    this.readOnly = readOnly;
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public DoubleBuffer slice ()
-  {
-    return new DoubleBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public DoubleBuffer duplicate ()
-  {
-    return new DoubleBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
-  }
-  
-  public DoubleBuffer asReadOnlyBuffer ()
-  {
-    return new DoubleBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
-  }
-  
-  public DoubleBuffer compact ()
-  {
-    int copied = 0;
-    
-    while (remaining () > 0)
-      {
-       put (copied, get ());
-       copied++;
-      }
-
-    position (copied);
-    return this;
-  }
-  
-  public boolean isDirect ()
-  {
-    return false;
-  }
-
-  /**
-   * Relative get method. Reads the next <code>double</code> from the buffer.
-   */
-  final public double get ()
-  {
-    double result = backing_buffer [position ()];
-    position (position () + 1);
-    return result;
-  }
-  
-  /**
-   * 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 ()] = value;
-    position (position () + 1);
-    return this;
-  }
-  
-  /**
-   * 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];
-  }
-  
-  /**
-   * 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] = value;
-    return this;
-  }
-  
-  final public ByteOrder order ()
-  {
-    return ByteOrder.nativeOrder ();
-  }
-}
diff --git a/libjava/gnu/java/nio/DoubleViewBufferImpl.java b/libjava/gnu/java/nio/DoubleViewBufferImpl.java
deleted file mode 100644 (file)
index d9e1b1b..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/* DoubleViewBufferImpl.java -- 
-   Copyright (C) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.DoubleBuffer;
-
-class DoubleViewBufferImpl extends DoubleBuffer
-{
-  private boolean readOnly;
-  private int offset;
-  private ByteBuffer bb;
-  private ByteOrder endian;
-  
-  public DoubleViewBufferImpl (ByteBuffer bb, boolean readOnly)
-  {
-    super (bb.remaining () >> 3, bb.remaining () >> 3, bb.position (), 0);
-    this.bb = bb;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from DoubleByteBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public DoubleViewBufferImpl (ByteBuffer bb, int offset, int capacity,
-                               int limit, int position, int mark,
-                               boolean readOnly)
-  {
-    super (limit >> 3, limit >> 3, position >> 3, mark >> 3);
-    this.bb = bb;
-    this.offset = offset;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from DoubleViewBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public double get ()
-  {
-    double result = bb.getDouble ((position () << 3) + offset);
-    position (position () + 1);
-    return result;
-  }
-
-  public double get (int index)
-  {
-    return bb.getDouble ((index << 3) + offset);
-  }
-
-  public DoubleBuffer put (double value)
-  {
-    bb.putDouble ((position () << 3) + offset, value);
-    position (position () + 1);
-    return this;
-  }
-  
-  public DoubleBuffer put (int index, double value)
-  {
-    bb.putDouble ((index << 3) + offset, value);
-    return this;
-  }
-
-  public DoubleBuffer compact ()
-  {
-    if (position () > 0)
-      {
-        // Copy all data from position() to limit() to the beginning of the
-        // buffer, set position to end of data and limit to capacity
-        // XXX: This can surely be optimized, for direct and non-direct buffers
-        
-        int count = limit () - position ();
-              
-        for (int i = 0; i < count; i++)
-          {
-            bb.putDouble ((i >> 3) + offset,
-                          bb.getDouble (((i + position ()) >> 3) + offset));
-          }
-
-        position (count);
-        limit (capacity ());
-      }
-
-    return this;
-  }
-  
-  public DoubleBuffer duplicate ()
-  {
-    // Create a copy of this object that shares its content
-    // FIXME: mark is not correct
-    return new DoubleViewBufferImpl (bb, offset, capacity (), limit (),
-                                     position (), -1, isReadOnly ());
-  }
-  
-  public DoubleBuffer slice ()
-  {
-    // Create a sliced copy of this object that shares its content.
-    return new DoubleViewBufferImpl (bb, (position () >> 3) + offset,
-                                      remaining (), remaining (), 0, -1,
-                                     isReadOnly ());
-  }
-  
-  public DoubleBuffer asReadOnlyBuffer ()
-  {
-    // Create a copy of this object that shares its content and is read-only
-    return new DoubleViewBufferImpl (bb, (position () >> 3) + offset,
-                                     remaining (), remaining (), 0, -1, true);
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public boolean isDirect ()
-  {
-    return bb.isDirect ();
-  }
-  
-  public ByteOrder order ()
-  {
-    return ByteOrder.LITTLE_ENDIAN;
-  }
-}
diff --git a/libjava/gnu/java/nio/FloatBufferImpl.java b/libjava/gnu/java/nio/FloatBufferImpl.java
deleted file mode 100644 (file)
index 69acecf..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/* FloatBufferImpl.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.FloatBuffer;
-import java.nio.ReadOnlyBufferException;
-
-/**
- * This is a Heap memory implementation
- */
-public final class FloatBufferImpl extends FloatBuffer
-{
-  private boolean readOnly;
-
-  FloatBufferImpl (int capacity)
-  {
-    this (new float [capacity], 0, capacity, capacity, 0, -1, false);
-  }
-  
-  FloatBufferImpl (float[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
-  {
-    super (buffer, offset, capacity, limit, position, mark);
-    this.readOnly = readOnly;
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public FloatBuffer slice ()
-  {
-    return new FloatBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public FloatBuffer duplicate ()
-  {
-    return new FloatBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
-  }
-  
-  public FloatBuffer asReadOnlyBuffer ()
-  {
-    return new FloatBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
-  }
-  
-  public FloatBuffer compact ()
-  {
-    int copied = 0;
-    
-    while (remaining () > 0)
-      {
-       put (copied, get ());
-       copied++;
-      }
-
-    position (copied);
-    return this;
-  }
-  
-  public boolean isDirect ()
-  {
-    return false;
-  }
-
-  /**
-   * Relative get method. Reads the next <code>float</code> from the buffer.
-   */
-  final public float get ()
-  {
-    float result = backing_buffer [position ()];
-    position (position () + 1);
-    return result;
-  }
-  
-  /**
-   * 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 ()] = value;
-    position (position () + 1);
-    return this;
-  }
-  
-  /**
-   * 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];
-  }
-  
-  /**
-   * 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] = value;
-    return this;
-  }
-  
-  final public ByteOrder order ()
-  {
-    return ByteOrder.nativeOrder ();
-  }
-}
diff --git a/libjava/gnu/java/nio/FloatViewBufferImpl.java b/libjava/gnu/java/nio/FloatViewBufferImpl.java
deleted file mode 100644 (file)
index 9461203..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/* FloatViewBufferImpl.java -- 
-   Copyright (C) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.FloatBuffer;
-
-class FloatViewBufferImpl extends FloatBuffer
-{
-  private boolean readOnly;
-  private int offset;
-  private ByteBuffer bb;
-  private ByteOrder endian;
-  
-  public FloatViewBufferImpl (ByteBuffer bb, boolean readOnly)
-  {
-    super (bb.remaining () >> 2, bb.remaining () >> 2, bb.position (), 0);
-    this.bb = bb;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from FloatByteBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public FloatViewBufferImpl (ByteBuffer bb, int offset, int capacity,
-                               int limit, int position, int mark,
-                               boolean readOnly)
-  {
-    super (limit >> 2, limit >> 2, position >> 2, mark >> 2);
-    this.bb = bb;
-    this.offset = offset;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from FloatViewBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public float get ()
-  {
-    float result = bb.getFloat ((position () << 2) + offset);
-    position (position () + 1);
-    return result;
-  }
-
-  public float get (int index)
-  {
-    return bb.getFloat ((index << 2) + offset);
-  }
-
-  public FloatBuffer put (float value)
-  {
-    bb.putFloat ((position () << 2) + offset, value);
-    position (position () + 1);
-    return this;
-  }
-  
-  public FloatBuffer put (int index, float value)
-  {
-    bb.putFloat ((index << 2) + offset, value);
-    return this;
-  }
-
-  public FloatBuffer compact ()
-  {
-    if (position () > 0)
-      {
-        // Copy all data from position() to limit() to the beginning of the
-        // buffer, set position to end of data and limit to capacity
-        // XXX: This can surely be optimized, for direct and non-direct buffers
-        
-        int count = limit () - position ();
-              
-        for (int i = 0; i < count; i++)
-          {
-            bb.putFloat ((i >> 2) + offset,
-                          bb.getFloat (((i + position ()) >> 2) + offset));
-          }
-
-        position (count);
-        limit (capacity ());
-      }
-
-    return this;
-  }
-  
-  public FloatBuffer duplicate ()
-  {
-    // Create a copy of this object that shares its content
-    // FIXME: mark is not correct
-    return new FloatViewBufferImpl (bb, offset, capacity (), limit (),
-                                     position (), -1, isReadOnly ());
-  }
-  
-  public FloatBuffer slice ()
-  {
-    // Create a sliced copy of this object that shares its content.
-    return new FloatViewBufferImpl (bb, (position () >> 2) + offset,
-                                      remaining (), remaining (), 0, -1,
-                                     isReadOnly ());
-  }
-  
-  public FloatBuffer asReadOnlyBuffer ()
-  {
-    // Create a copy of this object that shares its content and is read-only
-    return new FloatViewBufferImpl (bb, (position () >> 2) + offset,
-                                     remaining (), remaining (), 0, -1, true);
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public boolean isDirect ()
-  {
-    return bb.isDirect ();
-  }
-  
-  public ByteOrder order ()
-  {
-    return ByteOrder.LITTLE_ENDIAN;
-  }
-}
diff --git a/libjava/gnu/java/nio/IntBufferImpl.java b/libjava/gnu/java/nio/IntBufferImpl.java
deleted file mode 100644 (file)
index 573e5e0..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/* IntBufferImpl.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.IntBuffer;
-import java.nio.ReadOnlyBufferException;
-
-/**
- * This is a Heap memory implementation
- */
-public final class IntBufferImpl extends IntBuffer
-{
-  private boolean readOnly;
-
-  IntBufferImpl (int capacity)
-  {
-    this (new int [capacity], 0, capacity, capacity, 0, -1, false);
-  }
-  
-  IntBufferImpl (int[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
-  {
-    super (buffer, offset, capacity, limit, position, mark);
-    this.readOnly = readOnly;
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public IntBuffer slice ()
-  {
-    return new IntBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public IntBuffer duplicate ()
-  {
-    return new IntBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
-  }
-  
-  public IntBuffer asReadOnlyBuffer ()
-  {
-    return new IntBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
-  }
-  
-  public IntBuffer compact ()
-  {
-    int copied = 0;
-    
-    while (remaining () > 0)
-      {
-       put (copied, get ());
-       copied++;
-      }
-
-    position (copied);
-    return this;
-  }
-  
-  public boolean isDirect ()
-  {
-    return false;
-  }
-
-  /**
-   * Relative get method. Reads the next <code>int</code> from the buffer.
-   */
-  final public int get ()
-  {
-    int result = backing_buffer [position ()];
-    position (position () + 1);
-    return result;
-  }
-  
-  /**
-   * 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 ()] = value;
-    position (position () + 1);
-    return this;
-  }
-  
-  /**
-   * 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];
-  }
-  
-  /**
-   * 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] = value;
-    return this;
-  }
-  
-  final public ByteOrder order ()
-  {
-    return ByteOrder.nativeOrder ();
-  }
-}
diff --git a/libjava/gnu/java/nio/IntViewBufferImpl.java b/libjava/gnu/java/nio/IntViewBufferImpl.java
deleted file mode 100644 (file)
index d049eb3..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/* IntViewBufferImpl.java -- 
-   Copyright (C) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.IntBuffer;
-
-class IntViewBufferImpl extends IntBuffer
-{
-  private boolean readOnly;
-  private int offset;
-  private ByteBuffer bb;
-  private ByteOrder endian;
-  
-  public IntViewBufferImpl (ByteBuffer bb, boolean readOnly)
-  {
-    super (bb.remaining () >> 2, bb.remaining () >> 2, bb.position (), 0);
-    this.bb = bb;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from IntByteBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public IntViewBufferImpl (ByteBuffer bb, int offset, int capacity,
-                               int limit, int position, int mark,
-                               boolean readOnly)
-  {
-    super (limit >> 2, limit >> 2, position >> 2, mark >> 2);
-    this.bb = bb;
-    this.offset = offset;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from IntViewBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public int get ()
-  {
-    int result = bb.getInt ((position () << 2) + offset);
-    position (position () + 1);
-    return result;
-  }
-
-  public int get (int index)
-  {
-    return bb.getInt ((index << 2) + offset);
-  }
-
-  public IntBuffer put (int value)
-  {
-    bb.putInt ((position () << 2) + offset, value);
-    position (position () + 1);
-    return this;
-  }
-  
-  public IntBuffer put (int index, int value)
-  {
-    bb.putInt ((index << 2) + offset, value);
-    return this;
-  }
-
-  public IntBuffer compact ()
-  {
-    if (position () > 0)
-      {
-        // Copy all data from position() to limit() to the beginning of the
-        // buffer, set position to end of data and limit to capacity
-        // XXX: This can surely be optimized, for direct and non-direct buffers
-        
-        int count = limit () - position ();
-              
-        for (int i = 0; i < count; i++)
-          {
-            bb.putInt ((i >> 2) + offset,
-                          bb.getInt (((i + position ()) >> 2) + offset));
-          }
-
-        position (count);
-        limit (capacity ());
-      }
-
-    return this;
-  }
-  
-  public IntBuffer duplicate ()
-  {
-    // Create a copy of this object that shares its content
-    // FIXME: mark is not correct
-    return new IntViewBufferImpl (bb, offset, capacity (), limit (),
-                                     position (), -1, isReadOnly ());
-  }
-  
-  public IntBuffer slice ()
-  {
-    // Create a sliced copy of this object that shares its content.
-    return new IntViewBufferImpl (bb, (position () >> 2) + offset,
-                                      remaining (), remaining (), 0, -1,
-                                     isReadOnly ());
-  }
-  
-  public IntBuffer asReadOnlyBuffer ()
-  {
-    // Create a copy of this object that shares its content and is read-only
-    return new IntViewBufferImpl (bb, (position () >> 2) + offset,
-                                     remaining (), remaining (), 0, -1, true);
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public boolean isDirect ()
-  {
-    return bb.isDirect ();
-  }
-  
-  public ByteOrder order ()
-  {
-    return ByteOrder.LITTLE_ENDIAN;
-  }
-}
diff --git a/libjava/gnu/java/nio/LongBufferImpl.java b/libjava/gnu/java/nio/LongBufferImpl.java
deleted file mode 100644 (file)
index e37ac8e..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/* LongBufferImpl.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.LongBuffer;
-import java.nio.ReadOnlyBufferException;
-
-/**
- * This is a Heap memory implementation
- */
-public final class LongBufferImpl extends LongBuffer
-{
-  private boolean readOnly;
-
-  LongBufferImpl (int capacity)
-  {
-    this (new long [capacity], 0, capacity, capacity, 0, -1, false);
-  }
-  
-  LongBufferImpl (long[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
-  {
-    super (buffer, offset, capacity, limit, position, mark);
-    this.readOnly = readOnly;
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public LongBuffer slice ()
-  {
-    return new LongBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public LongBuffer duplicate ()
-  {
-    return new LongBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
-  }
-  
-  public LongBuffer asReadOnlyBuffer ()
-  {
-    return new LongBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
-  }
-  
-  public LongBuffer compact ()
-  {
-    int copied = 0;
-    
-    while (remaining () > 0)
-      {
-       put (copied, get ());
-       copied++;
-      }
-
-    position (copied);
-    return this;
-  }
-  
-  public boolean isDirect ()
-  {
-    return false;
-  }
-
-  /**
-   * Relative get method. Reads the next <code>long</code> from the buffer.
-   */
-  final public long get ()
-  {
-    long result = backing_buffer [position ()];
-    position (position () + 1);
-    return result;
-  }
-  
-  /**
-   * 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 ()] = value;
-    position (position () + 1);
-    return this;
-  }
-  
-  /**
-   * 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];
-  }
-  
-  /**
-   * 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] = value;
-    return this;
-  }
-  
-  final public ByteOrder order ()
-  {
-    return ByteOrder.nativeOrder ();
-  }
-}
diff --git a/libjava/gnu/java/nio/LongViewBufferImpl.java b/libjava/gnu/java/nio/LongViewBufferImpl.java
deleted file mode 100644 (file)
index 3742fca..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/* LongViewBufferImpl.java -- 
-   Copyright (C) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.LongBuffer;
-
-class LongViewBufferImpl extends LongBuffer
-{
-  private boolean readOnly;
-  private int offset;
-  private ByteBuffer bb;
-  private ByteOrder endian;
-  
-  public LongViewBufferImpl (ByteBuffer bb, boolean readOnly)
-  {
-    super (bb.remaining () >> 3, bb.remaining () >> 3, bb.position (), 0);
-    this.bb = bb;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from LongByteBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public LongViewBufferImpl (ByteBuffer bb, int offset, int capacity,
-                               int limit, int position, int mark,
-                               boolean readOnly)
-  {
-    super (limit >> 3, limit >> 3, position >> 3, mark >> 3);
-    this.bb = bb;
-    this.offset = offset;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from LongViewBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public long get ()
-  {
-    long result = bb.getLong ((position () << 3) + offset);
-    position (position () + 1);
-    return result;
-  }
-
-  public long get (int index)
-  {
-    return bb.getLong ((index << 3) + offset);
-  }
-
-  public LongBuffer put (long value)
-  {
-    bb.putLong ((position () << 3) + offset, value);
-    position (position () + 1);
-    return this;
-  }
-  
-  public LongBuffer put (int index, long value)
-  {
-    bb.putLong ((index << 3) + offset, value);
-    return this;
-  }
-
-  public LongBuffer compact ()
-  {
-    if (position () > 0)
-      {
-        // Copy all data from position() to limit() to the beginning of the
-        // buffer, set position to end of data and limit to capacity
-        // XXX: This can surely be optimized, for direct and non-direct buffers
-        
-        int count = limit () - position ();
-              
-        for (int i = 0; i < count; i++)
-          {
-            bb.putLong ((i >> 3) + offset,
-                          bb.getLong (((i + position ()) >> 3) + offset));
-          }
-
-        position (count);
-        limit (capacity ());
-      }
-
-    return this;
-  }
-  
-  public LongBuffer duplicate ()
-  {
-    // Create a copy of this object that shares its content
-    // FIXME: mark is not correct
-    return new LongViewBufferImpl (bb, offset, capacity (), limit (),
-                                     position (), -1, isReadOnly ());
-  }
-  
-  public LongBuffer slice ()
-  {
-    // Create a sliced copy of this object that shares its content.
-    return new LongViewBufferImpl (bb, (position () >> 3) + offset,
-                                      remaining (), remaining (), 0, -1,
-                                     isReadOnly ());
-  }
-  
-  public LongBuffer asReadOnlyBuffer ()
-  {
-    // Create a copy of this object that shares its content and is read-only
-    return new LongViewBufferImpl (bb, (position () >> 3) + offset,
-                                     remaining (), remaining (), 0, -1, true);
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public boolean isDirect ()
-  {
-    return bb.isDirect ();
-  }
-  
-  public ByteOrder order ()
-  {
-    return ByteOrder.LITTLE_ENDIAN;
-  }
-}
diff --git a/libjava/gnu/java/nio/ShortBufferImpl.java b/libjava/gnu/java/nio/ShortBufferImpl.java
deleted file mode 100644 (file)
index 3dc625e..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/* ShortBufferImpl.java -- 
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.ShortBuffer;
-import java.nio.ReadOnlyBufferException;
-
-/**
- * This is a Heap memory implementation
- */
-public final class ShortBufferImpl extends ShortBuffer
-{
-  private boolean readOnly;
-
-  ShortBufferImpl (int capacity)
-  {
-    this (new short [capacity], 0, capacity, capacity, 0, -1, false);
-  }
-  
-  ShortBufferImpl (short[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
-  {
-    super (buffer, offset, capacity, limit, position, mark);
-    this.readOnly = readOnly;
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public ShortBuffer slice ()
-  {
-    return new ShortBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
-  }
-  
-  public ShortBuffer duplicate ()
-  {
-    return new ShortBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
-  }
-  
-  public ShortBuffer asReadOnlyBuffer ()
-  {
-    return new ShortBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
-  }
-  
-  public ShortBuffer compact ()
-  {
-    int copied = 0;
-    
-    while (remaining () > 0)
-      {
-       put (copied, get ());
-       copied++;
-      }
-
-    position (copied);
-    return this;
-  }
-  
-  public boolean isDirect ()
-  {
-    return false;
-  }
-
-  /**
-   * Relative get method. Reads the next <code>short</code> from the buffer.
-   */
-  final public short get ()
-  {
-    short result = backing_buffer [position ()];
-    position (position () + 1);
-    return result;
-  }
-  
-  /**
-   * 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 ()] = value;
-    position (position () + 1);
-    return this;
-  }
-  
-  /**
-   * 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];
-  }
-  
-  /**
-   * 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] = value;
-    return this;
-  }
-  
-  final public ByteOrder order ()
-  {
-    return ByteOrder.nativeOrder ();
-  }
-}
diff --git a/libjava/gnu/java/nio/ShortViewBufferImpl.java b/libjava/gnu/java/nio/ShortViewBufferImpl.java
deleted file mode 100644 (file)
index e7853bc..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/* ShortViewBufferImpl.java -- 
-   Copyright (C) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING.  If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library.  Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module.  An independent module is a module which is not derived from
-or based on this library.  If you modify this library, you may extend
-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;
-import java.nio.ByteOrder;
-import java.nio.ShortBuffer;
-
-class ShortViewBufferImpl extends ShortBuffer
-{
-  private boolean readOnly;
-  private int offset;
-  private ByteBuffer bb;
-  private ByteOrder endian;
-  
-  public ShortViewBufferImpl (ByteBuffer bb, boolean readOnly)
-  {
-    super (bb.remaining () >> 1, bb.remaining () >> 1, bb.position (), 0);
-    this.bb = bb;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from ShortByteBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public ShortViewBufferImpl (ByteBuffer bb, int offset, int capacity,
-                               int limit, int position, int mark,
-                               boolean readOnly)
-  {
-    super (limit >> 1, limit >> 1, position >> 1, mark >> 1);
-    this.bb = bb;
-    this.offset = offset;
-    this.readOnly = readOnly;
-    // FIXME: What if this is called from ShortViewBufferImpl and ByteBuffer has changed its endianess ?
-    this.endian = bb.order ();
-  }
-
-  public short get ()
-  {
-    short result = bb.getShort ((position () << 1) + offset);
-    position (position () + 1);
-    return result;
-  }
-
-  public short get (int index)
-  {
-    return bb.getShort ((index << 1) + offset);
-  }
-
-  public ShortBuffer put (short value)
-  {
-    bb.putShort ((position () << 1) + offset, value);
-    position (position () + 1);
-    return this;
-  }
-  
-  public ShortBuffer put (int index, short value)
-  {
-    bb.putShort ((index << 1) + offset, value);
-    return this;
-  }
-
-  public ShortBuffer compact ()
-  {
-    if (position () > 0)
-      {
-        // Copy all data from position() to limit() to the beginning of the
-        // buffer, set position to end of data and limit to capacity
-        // XXX: This can surely be optimized, for direct and non-direct buffers
-        
-        int count = limit () - position ();
-              
-        for (int i = 0; i < count; i++)
-          {
-            bb.putShort ((i >> 1) + offset,
-                          bb.getShort (((i + position ()) >> 1) + offset));
-          }
-
-        position (count);
-        limit (capacity ());
-      }
-
-    return this;
-  }
-  
-  public ShortBuffer duplicate ()
-  {
-    // Create a copy of this object that shares its content
-    // FIXME: mark is not correct
-    return new ShortViewBufferImpl (bb, offset, capacity (), limit (),
-                                     position (), -1, isReadOnly ());
-  }
-  
-  public ShortBuffer slice ()
-  {
-    // Create a sliced copy of this object that shares its content.
-    return new ShortViewBufferImpl (bb, (position () >> 1) + offset,
-                                      remaining (), remaining (), 0, -1,
-                                     isReadOnly ());
-  }
-  
-  public ShortBuffer asReadOnlyBuffer ()
-  {
-    // Create a copy of this object that shares its content and is read-only
-    return new ShortViewBufferImpl (bb, (position () >> 1) + offset,
-                                     remaining (), remaining (), 0, -1, true);
-  }
-  
-  public boolean isReadOnly ()
-  {
-    return readOnly;
-  }
-  
-  public boolean isDirect ()
-  {
-    return bb.isDirect ();
-  }
-  
-  public ByteOrder order ()
-  {
-    return ByteOrder.LITTLE_ENDIAN;
-  }
-}
index 65ca62341aeaffecb85bad262c33e3a5b3933cc2..48cf585cb055f1829ac73eed1d9e43cf0e379b63 100644 (file)
@@ -194,20 +194,19 @@ public class SocketChannelImpl extends SocketChannel
     int bytes = 0;
     int len = src.position();
 
-    if (src instanceof ByteBufferImpl)
-           {
-        ByteBufferImpl bi = (ByteBufferImpl) src;
-        byte[]b = bi.array();
-        bytes = SocketWrite(fd, b, 0, len);
-           }
+    if (src.hasArray ())
+      {
+        byte[] b = src.array ();
+        bytes = SocketWrite (fd, b, 0, len);
+      }
     else
-           {
-        byte[]b = new byte[len];
-        src.get(b, 0, len);
-        bytes = SocketWrite(fd, b, 0, len);
-           }
+      {
+        byte[] b = new byte [len];
+        src.get (b, 0, len);
+        bytes = SocketWrite (fd, b, 0, len);
+      }
                
-         return bytes;
+    return bytes;
   }
 
   public long write (ByteBuffer[] srcs, int offset, int length)
diff --git a/libjava/gnu/java/nio/natDirectByteBufferImpl.cc b/libjava/gnu/java/nio/natDirectByteBufferImpl.cc
deleted file mode 100644 (file)
index 5fd6cfc..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-// natDirectByteBufferImpl.cc
-
-/* Copyright (C) 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/gcj/RawData.h>
-#include <gnu/java/nio/DirectByteBufferImpl.h>
-
-gnu::gcj::RawData*
-gnu::java::nio::DirectByteBufferImpl::allocateImpl (jint capacity)
-{
-  // FIXME: implement this
-  return 0;
-}
-
-void
-gnu::java::nio::DirectByteBufferImpl::freeImpl (gnu::gcj::RawData* address)
-{
-  // FIXME: implement this
-}
-
-jbyte
-gnu::java::nio::DirectByteBufferImpl::getImpl (jint index)
-{
-  // FIXME: implement this
-  // Dont forget: add offset to index
-  return 0;
-}
-
-void
-gnu::java::nio::DirectByteBufferImpl::putImpl (jint index, jbyte value)
-{
-  // FIXME: implement this
-  // Dont forget: add offset to index
-}
index cb743c799c760778dda08621aeab7e8105f74713..1727b41007908a24215d0d64d7fa8f991f9c1475 100644 (file)
@@ -35,10 +35,8 @@ 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 java.nio;
 
-import gnu.java.nio.ByteBufferImpl;
-import gnu.java.nio.DirectByteBufferImpl;
+package java.nio;
 
 /**
  * @since 1.4
diff --git a/libjava/java/nio/ByteBufferImpl.java b/libjava/java/nio/ByteBufferImpl.java
new file mode 100644 (file)
index 0000000..4642288
--- /dev/null
@@ -0,0 +1,422 @@
+/* ByteBufferImpl.java -- 
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+/**
+ * This is a Heap memory implementation
+ */
+public final class ByteBufferImpl extends ByteBuffer
+{
+  private boolean readOnly;
+
+  ByteBufferImpl (int capacity)
+  {
+    this (new byte [capacity], 0, capacity, capacity, 0, -1, false);
+  }
+  
+  ByteBufferImpl (byte[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
+  {
+    super (buffer, offset, capacity, limit, position, mark);
+    this.readOnly = readOnly;
+  }
+  
+  public CharBuffer asCharBuffer ()
+  {
+    return new CharViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+  }
+
+  public ShortBuffer asShortBuffer ()
+  {
+    return new ShortViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+  }
+
+  public IntBuffer asIntBuffer ()
+  {
+    return new IntViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+  }
+
+  public LongBuffer asLongBuffer ()
+  {
+    return new LongViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+  }
+
+  public FloatBuffer asFloatBuffer ()
+  {
+    return new FloatViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+  }
+
+  public DoubleBuffer asDoubleBuffer ()
+  {
+    return new DoubleViewBufferImpl (this, position (), remaining(), remaining (), 0, -1, isReadOnly ());
+  }
+
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public ByteBuffer slice ()
+  {
+    return new ByteBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public ByteBuffer duplicate ()
+  {
+    return new ByteBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
+  }
+  
+  public ByteBuffer asReadOnlyBuffer ()
+  {
+    return new ByteBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
+  }
+  
+  public ByteBuffer compact ()
+  {
+    int copied = 0;
+    
+    while (remaining () > 0)
+      {
+       put (copied, get ());
+       copied++;
+      }
+
+    position (copied);
+    return this;
+  }
+  
+  public boolean isDirect ()
+  {
+    return false;
+  }
+
+  /**
+   * Relative get method. Reads the next <code>byte</code> from the buffer.
+   */
+  final public byte get ()
+  {
+    byte result = backing_buffer [position ()];
+    position (position () + 1);
+    return result;
+  }
+  
+  /**
+   * 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 ()] = value;
+    position (position () + 1);
+    return this;
+  }
+  
+  /**
+   * 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];
+  }
+  
+  /**
+   * 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] = value;
+    return this;
+  }
+  
+  final public char getChar ()
+  {
+    // FIXME: this handles big endian only
+    return (char) (((get () & 0xff) << 8) + (get () & 0xff));
+  }
+  
+  final public ByteBuffer putChar (char value)
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    return (char) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
+  }
+  
+  final public ByteBuffer putChar (int index, char 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 ()
+  {
+    // FIXME: this handles big endian only
+    return (short) (((get () & 0xff) << 8) + (get () & 0xff));
+  }
+  
+  final public ByteBuffer putShort (short value)
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    return (short) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
+  }
+  
+  final public ByteBuffer putShort (int index, short 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 ()
+  {
+    // 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)
+  {
+    // 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)
+  {
+    // 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)
+  {
+    // 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 ()
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    put ((byte) ((value & 0xff00000000000000L) >> 56));
+    put ((byte) ((value & 0x00ff000000000000L) >> 48));
+    put ((byte) ((value & 0x0000ff0000000000L) >> 40));
+    put ((byte) ((value & 0x000000ff00000000L) >> 32));
+    put ((byte) ((value & 0x00000000ff000000L) >> 24));
+    put ((byte) ((value & 0x0000000000ff0000L) >> 16));
+    put ((byte) ((value & 0x000000000000ff00L) >> 8));
+    put ((byte) (value & 0x00000000000000ffL));
+    return this;
+  }
+  
+  final public long getLong (int index)
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    put (index, (byte) ((value & 0xff00000000000000L) >> 56));
+    put (index + 1, (byte) ((value & 0x00ff000000000000L) >> 48));
+    put (index + 2, (byte) ((value & 0x0000ff0000000000L) >> 40));
+    put (index + 3, (byte) ((value & 0x000000ff00000000L) >> 32));
+    put (index + 4, (byte) ((value & 0x00000000ff000000L) >> 24));
+    put (index + 5, (byte) ((value & 0x0000000000ff0000L) >> 16));
+    put (index + 6, (byte) ((value & 0x000000000000ff00L) >> 8));
+    put (index + 7, (byte) (value & 0x00000000000000ffL));
+    return this;
+  }
+
+  final public float getFloat ()
+  {
+    // 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)
+  {
+    // 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)
+  {
+    // 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)
+  {
+    // 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 ()
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    put ((byte) ((((long) value) & 0xff00000000000000L) >> 56));
+    put ((byte) ((((long) value) & 0x00ff000000000000L) >> 48));
+    put ((byte) ((((long) value) & 0x0000ff0000000000L) >> 40));
+    put ((byte) ((((long) value) & 0x000000ff00000000L) >> 32));
+    put ((byte) ((((long) value) & 0x00000000ff000000L) >> 24));
+    put ((byte) ((((long) value) & 0x0000000000ff0000L) >> 16));
+    put ((byte) ((((long) value) & 0x000000000000ff00L) >> 8));
+    put ((byte) (((long) value) & 0x00000000000000ffL));
+    return this;
+  }
+  
+  final public double getDouble (int index)
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    put (index, (byte) ((((long) value) & 0xff00000000000000L) >> 56));
+    put (index + 1, (byte) ((((long) value) & 0x00ff000000000000L) >> 48));
+    put (index + 2, (byte) ((((long) value) & 0x0000ff0000000000L) >> 40));
+    put (index + 3, (byte) ((((long) value) & 0x000000ff00000000L) >> 32));
+    put (index + 4, (byte) ((((long) value) & 0x00000000ff000000L) >> 24));
+    put (index + 5, (byte) ((((long) value) & 0x0000000000ff0000L) >> 16));
+    put (index + 6, (byte) ((((long) value) & 0x000000000000ff00L) >> 8));
+    put (index + 7, (byte) (((long) value) & 0x00000000000000ffL));
+    return this;
+  }
+}
index 9b97b4a6feedb7073449e109bb0b1490c5ddfb07..15a53570979241a877b7eff86b5163a68e5ae5a6 100644 (file)
@@ -35,9 +35,8 @@ 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 java.nio;
 
-import gnu.java.nio.CharBufferImpl;
+package java.nio;
 
 /**
  * @since 1.4
diff --git a/libjava/java/nio/CharBufferImpl.java b/libjava/java/nio/CharBufferImpl.java
new file mode 100644 (file)
index 0000000..708ab40
--- /dev/null
@@ -0,0 +1,183 @@
+/* CharBufferImpl.java -- 
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+/**
+ * This is a Heap memory implementation
+ */
+public final class CharBufferImpl extends CharBuffer
+{
+  private boolean readOnly;
+
+  CharBufferImpl (int capacity)
+  {
+    this (new char [capacity], 0, capacity, capacity, 0, -1, false);
+  }
+  
+  CharBufferImpl (char[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
+  {
+    super (buffer, offset, capacity, limit, position, mark);
+    this.readOnly = readOnly;
+  }
+  
+  public CharBufferImpl (CharBufferImpl copy)
+  {
+    super (copy.capacity (), copy.limit (), copy.position (), 0);
+    backing_buffer = copy.backing_buffer;
+    readOnly = copy.isReadOnly ();
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public CharBuffer slice ()
+  {
+    return new CharBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public CharBuffer duplicate ()
+  {
+    return new CharBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
+  }
+  
+  public CharBuffer asReadOnlyBuffer ()
+  {
+    return new CharBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
+  }
+  
+  public CharBuffer compact ()
+  {
+    int copied = 0;
+    
+    while (remaining () > 0)
+      {
+       put (copied, get ());
+       copied++;
+      }
+
+    position (copied);
+    return this;
+  }
+  
+  public boolean isDirect ()
+  {
+    return false;
+  }
+
+  final public CharSequence subSequence (int start, int end)
+  {
+    if (start < 0
+        || start > length ()
+        || end < start
+        || end > length ())
+      throw new IndexOutOfBoundsException ();
+
+    return new CharBufferImpl (backing_buffer, array_offset, capacity (), position () + end, position () + start, -1, isReadOnly ());
+  }
+  
+  /**
+   * Relative get method. Reads the next <code>char</code> from the buffer.
+   */
+  final public char get ()
+  {
+    char result = backing_buffer [position ()];
+    position (position () + 1);
+    return result;
+  }
+  
+  /**
+   * Relative put method. Writes <code>value</code> to the next position
+   * in the buffer.
+   * 
+   * @exception ReadOnlyBufferException If this buffer is read-only.
+   */
+  final public CharBuffer put (char value)
+  {
+    if (readOnly)
+      throw new ReadOnlyBufferException ();
+                   
+    backing_buffer [position ()] = value;
+    position (position () + 1);
+    return this;
+  }
+  
+  /**
+   * 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)
+  {
+    if (index < 0
+        || index >= limit ())
+      throw new IndexOutOfBoundsException ();
+    
+    return backing_buffer [index];
+  }
+  
+  /**
+   * 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 CharBuffer put (int index, char value)
+  {
+    if (index < 0
+        || index >= limit ())
+      throw new IndexOutOfBoundsException ();
+    
+    if (readOnly)
+      throw new ReadOnlyBufferException ();
+           
+    backing_buffer [index] = value;
+    return this;
+  }
+  
+  final public ByteOrder order ()
+  {
+    return ByteOrder.nativeOrder ();
+  }
+}
diff --git a/libjava/java/nio/CharViewBufferImpl.java b/libjava/java/nio/CharViewBufferImpl.java
new file mode 100644 (file)
index 0000000..6da6d59
--- /dev/null
@@ -0,0 +1,165 @@
+/* CharViewBufferImpl.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+class CharViewBufferImpl extends CharBuffer
+{
+  private boolean readOnly;
+  private int offset;
+  private ByteBuffer bb;
+  private ByteOrder endian;
+  
+  public CharViewBufferImpl (ByteBuffer bb, boolean readOnly)
+  {
+    super (bb.remaining () >> 1, bb.remaining () >> 1, bb.position (), 0);
+    this.bb = bb;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from CharByteBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public CharViewBufferImpl (ByteBuffer bb, int offset, int capacity,
+                               int limit, int position, int mark,
+                               boolean readOnly)
+  {
+    super (limit >> 1, limit >> 1, position >> 1, mark >> 1);
+    this.bb = bb;
+    this.offset = offset;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from CharViewBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public char get ()
+  {
+    char result = bb.getChar ((position () << 1) + offset);
+    position (position () + 1);
+    return result;
+  }
+
+  public char get (int index)
+  {
+    return bb.getChar ((index << 1) + offset);
+  }
+
+  public CharBuffer put (char value)
+  {
+    bb.putChar ((position () << 1) + offset, value);
+    position (position () + 1);
+    return this;
+  }
+  
+  public CharBuffer put (int index, char value)
+  {
+    bb.putChar ((index << 1) + offset, value);
+    return this;
+  }
+
+  public CharBuffer compact ()
+  {
+    if (position () > 0)
+      {
+        // Copy all data from position() to limit() to the beginning of the
+        // buffer, set position to end of data and limit to capacity
+        // XXX: This can surely be optimized, for direct and non-direct buffers
+        
+        int count = limit () - position ();
+              
+        for (int i = 0; i < count; i++)
+          {
+            bb.putChar ((i >> 1) + offset,
+                          bb.getChar (((i + position ()) >> 1) + offset));
+          }
+
+        position (count);
+        limit (capacity ());
+      }
+
+    return this;
+  }
+  
+  public CharBuffer duplicate ()
+  {
+    // Create a copy of this object that shares its content
+    // FIXME: mark is not correct
+    return new CharViewBufferImpl (bb, offset, capacity (), limit (),
+                                     position (), -1, isReadOnly ());
+  }
+  
+  public CharBuffer slice ()
+  {
+    // Create a sliced copy of this object that shares its content.
+    return new CharViewBufferImpl (bb, (position () >> 1) + offset,
+                                      remaining (), remaining (), 0, -1,
+                                     isReadOnly ());
+  }
+  
+  public CharSequence subSequence (int start, int end)
+  {
+    if (start < 0
+        || start > length ()
+        || end < start
+        || end > length ())
+      throw new IndexOutOfBoundsException ();
+
+    return new CharViewBufferImpl (bb, array_offset, capacity (), position () + end, position () + start, -1, isReadOnly ());
+  }
+
+  public CharBuffer asReadOnlyBuffer ()
+  {
+    // Create a copy of this object that shares its content and is read-only
+    return new CharViewBufferImpl (bb, (position () >> 1) + offset,
+                                     remaining (), remaining (), 0, -1, true);
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public boolean isDirect ()
+  {
+    return bb.isDirect ();
+  }
+  
+  public ByteOrder order ()
+  {
+    return ByteOrder.LITTLE_ENDIAN;
+  }
+}
diff --git a/libjava/java/nio/DirectByteBufferImpl.java b/libjava/java/nio/DirectByteBufferImpl.java
new file mode 100644 (file)
index 0000000..b037385
--- /dev/null
@@ -0,0 +1,416 @@
+/* DirectByteBufferImpl.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+import gnu.gcj.RawData;
+
+public class DirectByteBufferImpl extends ByteBuffer
+{
+  private RawData address;
+  private int offset;
+  private boolean readOnly;
+  
+  public DirectByteBufferImpl (RawData address, int offset, int capacity,
+                               int limit, int position, int mark,
+                               boolean readOnly)
+  {
+    super (capacity, limit, position, mark);
+    this.address = address;
+    this.offset = offset;
+    this.readOnly = readOnly;
+  }
+
+  private static native RawData allocateImpl (int capacity);
+  private static native void freeImpl (RawData address);
+  
+  protected void finalize () throws Throwable
+  {
+    freeImpl (address);
+  }
+  
+  public static ByteBuffer allocateDirect (int capacity)
+  {
+    RawData address = allocateImpl (capacity);
+
+    if (address == null)
+      throw new InternalError ("Not enough memory to create direct buffer");
+    
+    return new DirectByteBufferImpl (address, 0, capacity, capacity, 0, -1, false);
+  }
+  
+  private native byte getImpl (int index);
+  private native void putImpl (int index, byte value);
+
+  public byte get ()
+  {
+    byte result = getImpl (position () + offset);
+    position (position () + 1);
+    return result;
+  }
+
+  public byte get (int index)
+  {
+    return getImpl (index);
+  }
+
+  public ByteBuffer put (byte value)
+  {
+    putImpl (position (), value);
+    position (position () + 1);
+    return this;
+  }
+  
+  public ByteBuffer put (int index, byte value)
+  {
+    putImpl (index, value);
+    return this;
+  }
+  
+  public ByteBuffer compact ()
+  {
+    // FIXME this can sure be optimized using memcpy()  
+    int copied = 0;
+    
+    while (remaining () > 0)
+      {
+       put (copied, get ());
+       copied++;
+      }
+
+    position (copied);
+    return this;
+  }
+
+  public ByteBuffer duplicate ()
+  {
+    return new DirectByteBufferImpl (
+      address, offset, capacity (), limit (), position (), -1, isReadOnly ());
+  }
+
+  public ByteBuffer slice ()
+  {
+    return new DirectByteBufferImpl (address, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+
+  public ByteBuffer asReadOnlyBuffer ()
+  {
+    return new DirectByteBufferImpl (
+      address, offset, capacity (), limit (), position (), -1, true);
+  }
+
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+
+  public boolean isDirect ()
+  {
+    return true;
+  }
+
+  public CharBuffer asCharBuffer ()
+  {
+    return new CharViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public DoubleBuffer asDoubleBuffer ()
+  {
+    return new DoubleViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public FloatBuffer asFloatBuffer ()
+  {
+    return new FloatViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public IntBuffer asIntBuffer ()
+  {
+    return new IntViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public LongBuffer asLongBuffer ()
+  {
+    return new LongViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public ShortBuffer asShortBuffer ()
+  {
+    return new ShortViewBufferImpl (this, position () + offset, remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  final public char getChar ()
+  {
+    // FIXME: this handles big endian only
+    return (char) (((get () & 0xff) << 8) + (get () & 0xff));
+  }
+  
+  final public ByteBuffer putChar (char value)
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    return (char) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
+  }
+  
+  final public ByteBuffer putChar (int index, char 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 ()
+  {
+    // FIXME: this handles big endian only
+    return (short) (((get () & 0xff) << 8) + (get () & 0xff));
+  }
+  
+  final public ByteBuffer putShort (short value)
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    return (short) (((get (index) & 0xff) << 8) + (get (index + 1) & 0xff));
+  }
+  
+  final public ByteBuffer putShort (int index, short 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 ()
+  {
+    // 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)
+  {
+    // 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)
+  {
+    // 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)
+  {
+    // 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 ()
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    put ((byte) ((value & 0xff00000000000000L) >> 56));
+    put ((byte) ((value & 0x00ff000000000000L) >> 48));
+    put ((byte) ((value & 0x0000ff0000000000L) >> 40));
+    put ((byte) ((value & 0x000000ff00000000L) >> 32));
+    put ((byte) ((value & 0x00000000ff000000L) >> 24));
+    put ((byte) ((value & 0x0000000000ff0000L) >> 16));
+    put ((byte) ((value & 0x000000000000ff00L) >> 8));
+    put ((byte) (value & 0x00000000000000ffL));
+    return this;
+  }
+  
+  final public long getLong (int index)
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    put (index, (byte) ((value & 0xff00000000000000L) >> 56));
+    put (index + 1, (byte) ((value & 0x00ff000000000000L) >> 48));
+    put (index + 2, (byte) ((value & 0x0000ff0000000000L) >> 40));
+    put (index + 3, (byte) ((value & 0x000000ff00000000L) >> 32));
+    put (index + 4, (byte) ((value & 0x00000000ff000000L) >> 24));
+    put (index + 5, (byte) ((value & 0x0000000000ff0000L) >> 16));
+    put (index + 6, (byte) ((value & 0x000000000000ff00L) >> 8));
+    put (index + 7, (byte) (value & 0x00000000000000ffL));
+    return this;
+  }
+
+  final public float getFloat ()
+  {
+    // 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)
+  {
+    // 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)
+  {
+    // 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)
+  {
+    // 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 ()
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    put ((byte) ((((long) value) & 0xff00000000000000L) >> 56));
+    put ((byte) ((((long) value) & 0x00ff000000000000L) >> 48));
+    put ((byte) ((((long) value) & 0x0000ff0000000000L) >> 40));
+    put ((byte) ((((long) value) & 0x000000ff00000000L) >> 32));
+    put ((byte) ((((long) value) & 0x00000000ff000000L) >> 24));
+    put ((byte) ((((long) value) & 0x0000000000ff0000L) >> 16));
+    put ((byte) ((((long) value) & 0x000000000000ff00L) >> 8));
+    put ((byte) (((long) value) & 0x00000000000000ffL));
+    return this;
+  }
+  
+  final public double getDouble (int index)
+  {
+    // 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)
+  {
+    // FIXME: this handles big endian only
+    put (index, (byte) ((((long) value) & 0xff00000000000000L) >> 56));
+    put (index + 1, (byte) ((((long) value) & 0x00ff000000000000L) >> 48));
+    put (index + 2, (byte) ((((long) value) & 0x0000ff0000000000L) >> 40));
+    put (index + 3, (byte) ((((long) value) & 0x000000ff00000000L) >> 32));
+    put (index + 4, (byte) ((((long) value) & 0x00000000ff000000L) >> 24));
+    put (index + 5, (byte) ((((long) value) & 0x0000000000ff0000L) >> 16));
+    put (index + 6, (byte) ((((long) value) & 0x000000000000ff00L) >> 8));
+    put (index + 7, (byte) (((long) value) & 0x00000000000000ffL));
+    return this;
+  }
+}
index f212566111c720160f185dcd8746aae6fa0a7e5b..644f33ba6d598b608bbd1dde0db2ac231d26eb38 100644 (file)
@@ -35,9 +35,8 @@ 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 java.nio;
 
-import gnu.java.nio.DoubleBufferImpl;
+package java.nio;
 
 /**
  * @since 1.4
diff --git a/libjava/java/nio/DoubleBufferImpl.java b/libjava/java/nio/DoubleBufferImpl.java
new file mode 100644 (file)
index 0000000..dbc63bb
--- /dev/null
@@ -0,0 +1,157 @@
+/* DoubleBufferImpl.java -- 
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+/**
+ * This is a Heap memory implementation
+ */
+public final class DoubleBufferImpl extends DoubleBuffer
+{
+  private boolean readOnly;
+
+  DoubleBufferImpl (int capacity)
+  {
+    this (new double [capacity], 0, capacity, capacity, 0, -1, false);
+  }
+  
+  DoubleBufferImpl (double[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
+  {
+    super (buffer, offset, capacity, limit, position, mark);
+    this.readOnly = readOnly;
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public DoubleBuffer slice ()
+  {
+    return new DoubleBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public DoubleBuffer duplicate ()
+  {
+    return new DoubleBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
+  }
+  
+  public DoubleBuffer asReadOnlyBuffer ()
+  {
+    return new DoubleBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
+  }
+  
+  public DoubleBuffer compact ()
+  {
+    int copied = 0;
+    
+    while (remaining () > 0)
+      {
+       put (copied, get ());
+       copied++;
+      }
+
+    position (copied);
+    return this;
+  }
+  
+  public boolean isDirect ()
+  {
+    return false;
+  }
+
+  /**
+   * Relative get method. Reads the next <code>double</code> from the buffer.
+   */
+  final public double get ()
+  {
+    double result = backing_buffer [position ()];
+    position (position () + 1);
+    return result;
+  }
+  
+  /**
+   * 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 ()] = value;
+    position (position () + 1);
+    return this;
+  }
+  
+  /**
+   * 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];
+  }
+  
+  /**
+   * 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] = value;
+    return this;
+  }
+  
+  final public ByteOrder order ()
+  {
+    return ByteOrder.nativeOrder ();
+  }
+}
diff --git a/libjava/java/nio/DoubleViewBufferImpl.java b/libjava/java/nio/DoubleViewBufferImpl.java
new file mode 100644 (file)
index 0000000..480b97f
--- /dev/null
@@ -0,0 +1,154 @@
+/* DoubleViewBufferImpl.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+class DoubleViewBufferImpl extends DoubleBuffer
+{
+  private boolean readOnly;
+  private int offset;
+  private ByteBuffer bb;
+  private ByteOrder endian;
+  
+  public DoubleViewBufferImpl (ByteBuffer bb, boolean readOnly)
+  {
+    super (bb.remaining () >> 3, bb.remaining () >> 3, bb.position (), 0);
+    this.bb = bb;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from DoubleByteBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public DoubleViewBufferImpl (ByteBuffer bb, int offset, int capacity,
+                               int limit, int position, int mark,
+                               boolean readOnly)
+  {
+    super (limit >> 3, limit >> 3, position >> 3, mark >> 3);
+    this.bb = bb;
+    this.offset = offset;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from DoubleViewBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public double get ()
+  {
+    double result = bb.getDouble ((position () << 3) + offset);
+    position (position () + 1);
+    return result;
+  }
+
+  public double get (int index)
+  {
+    return bb.getDouble ((index << 3) + offset);
+  }
+
+  public DoubleBuffer put (double value)
+  {
+    bb.putDouble ((position () << 3) + offset, value);
+    position (position () + 1);
+    return this;
+  }
+  
+  public DoubleBuffer put (int index, double value)
+  {
+    bb.putDouble ((index << 3) + offset, value);
+    return this;
+  }
+
+  public DoubleBuffer compact ()
+  {
+    if (position () > 0)
+      {
+        // Copy all data from position() to limit() to the beginning of the
+        // buffer, set position to end of data and limit to capacity
+        // XXX: This can surely be optimized, for direct and non-direct buffers
+        
+        int count = limit () - position ();
+              
+        for (int i = 0; i < count; i++)
+          {
+            bb.putDouble ((i >> 3) + offset,
+                          bb.getDouble (((i + position ()) >> 3) + offset));
+          }
+
+        position (count);
+        limit (capacity ());
+      }
+
+    return this;
+  }
+  
+  public DoubleBuffer duplicate ()
+  {
+    // Create a copy of this object that shares its content
+    // FIXME: mark is not correct
+    return new DoubleViewBufferImpl (bb, offset, capacity (), limit (),
+                                     position (), -1, isReadOnly ());
+  }
+  
+  public DoubleBuffer slice ()
+  {
+    // Create a sliced copy of this object that shares its content.
+    return new DoubleViewBufferImpl (bb, (position () >> 3) + offset,
+                                      remaining (), remaining (), 0, -1,
+                                     isReadOnly ());
+  }
+  
+  public DoubleBuffer asReadOnlyBuffer ()
+  {
+    // Create a copy of this object that shares its content and is read-only
+    return new DoubleViewBufferImpl (bb, (position () >> 3) + offset,
+                                     remaining (), remaining (), 0, -1, true);
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public boolean isDirect ()
+  {
+    return bb.isDirect ();
+  }
+  
+  public ByteOrder order ()
+  {
+    return ByteOrder.LITTLE_ENDIAN;
+  }
+}
index 65d680bb108db49386057d5992a31820c8386d44..5fcfc8e6ec562b7431fd3a95d22826607564547b 100644 (file)
@@ -35,9 +35,8 @@ 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 java.nio;
 
-import gnu.java.nio.FloatBufferImpl;
+package java.nio;
 
 /**
  * @since 1.4
diff --git a/libjava/java/nio/FloatBufferImpl.java b/libjava/java/nio/FloatBufferImpl.java
new file mode 100644 (file)
index 0000000..93dd1d0
--- /dev/null
@@ -0,0 +1,157 @@
+/* FloatBufferImpl.java -- 
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+/**
+ * This is a Heap memory implementation
+ */
+public final class FloatBufferImpl extends FloatBuffer
+{
+  private boolean readOnly;
+
+  FloatBufferImpl (int capacity)
+  {
+    this (new float [capacity], 0, capacity, capacity, 0, -1, false);
+  }
+  
+  FloatBufferImpl (float[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
+  {
+    super (buffer, offset, capacity, limit, position, mark);
+    this.readOnly = readOnly;
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public FloatBuffer slice ()
+  {
+    return new FloatBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public FloatBuffer duplicate ()
+  {
+    return new FloatBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
+  }
+  
+  public FloatBuffer asReadOnlyBuffer ()
+  {
+    return new FloatBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
+  }
+  
+  public FloatBuffer compact ()
+  {
+    int copied = 0;
+    
+    while (remaining () > 0)
+      {
+       put (copied, get ());
+       copied++;
+      }
+
+    position (copied);
+    return this;
+  }
+  
+  public boolean isDirect ()
+  {
+    return false;
+  }
+
+  /**
+   * Relative get method. Reads the next <code>float</code> from the buffer.
+   */
+  final public float get ()
+  {
+    float result = backing_buffer [position ()];
+    position (position () + 1);
+    return result;
+  }
+  
+  /**
+   * 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 ()] = value;
+    position (position () + 1);
+    return this;
+  }
+  
+  /**
+   * 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];
+  }
+  
+  /**
+   * 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] = value;
+    return this;
+  }
+  
+  final public ByteOrder order ()
+  {
+    return ByteOrder.nativeOrder ();
+  }
+}
diff --git a/libjava/java/nio/FloatViewBufferImpl.java b/libjava/java/nio/FloatViewBufferImpl.java
new file mode 100644 (file)
index 0000000..e44cd5e
--- /dev/null
@@ -0,0 +1,154 @@
+/* FloatViewBufferImpl.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+class FloatViewBufferImpl extends FloatBuffer
+{
+  private boolean readOnly;
+  private int offset;
+  private ByteBuffer bb;
+  private ByteOrder endian;
+  
+  public FloatViewBufferImpl (ByteBuffer bb, boolean readOnly)
+  {
+    super (bb.remaining () >> 2, bb.remaining () >> 2, bb.position (), 0);
+    this.bb = bb;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from FloatByteBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public FloatViewBufferImpl (ByteBuffer bb, int offset, int capacity,
+                               int limit, int position, int mark,
+                               boolean readOnly)
+  {
+    super (limit >> 2, limit >> 2, position >> 2, mark >> 2);
+    this.bb = bb;
+    this.offset = offset;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from FloatViewBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public float get ()
+  {
+    float result = bb.getFloat ((position () << 2) + offset);
+    position (position () + 1);
+    return result;
+  }
+
+  public float get (int index)
+  {
+    return bb.getFloat ((index << 2) + offset);
+  }
+
+  public FloatBuffer put (float value)
+  {
+    bb.putFloat ((position () << 2) + offset, value);
+    position (position () + 1);
+    return this;
+  }
+  
+  public FloatBuffer put (int index, float value)
+  {
+    bb.putFloat ((index << 2) + offset, value);
+    return this;
+  }
+
+  public FloatBuffer compact ()
+  {
+    if (position () > 0)
+      {
+        // Copy all data from position() to limit() to the beginning of the
+        // buffer, set position to end of data and limit to capacity
+        // XXX: This can surely be optimized, for direct and non-direct buffers
+        
+        int count = limit () - position ();
+              
+        for (int i = 0; i < count; i++)
+          {
+            bb.putFloat ((i >> 2) + offset,
+                          bb.getFloat (((i + position ()) >> 2) + offset));
+          }
+
+        position (count);
+        limit (capacity ());
+      }
+
+    return this;
+  }
+  
+  public FloatBuffer duplicate ()
+  {
+    // Create a copy of this object that shares its content
+    // FIXME: mark is not correct
+    return new FloatViewBufferImpl (bb, offset, capacity (), limit (),
+                                     position (), -1, isReadOnly ());
+  }
+  
+  public FloatBuffer slice ()
+  {
+    // Create a sliced copy of this object that shares its content.
+    return new FloatViewBufferImpl (bb, (position () >> 2) + offset,
+                                      remaining (), remaining (), 0, -1,
+                                     isReadOnly ());
+  }
+  
+  public FloatBuffer asReadOnlyBuffer ()
+  {
+    // Create a copy of this object that shares its content and is read-only
+    return new FloatViewBufferImpl (bb, (position () >> 2) + offset,
+                                     remaining (), remaining (), 0, -1, true);
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public boolean isDirect ()
+  {
+    return bb.isDirect ();
+  }
+  
+  public ByteOrder order ()
+  {
+    return ByteOrder.LITTLE_ENDIAN;
+  }
+}
index c8e0d0f4b9c5da28484cf4d300b7d940c1ef59a7..79167859541e9496290dc1fc4b898dad002d70f6 100644 (file)
@@ -35,9 +35,8 @@ 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 java.nio;
 
-import gnu.java.nio.IntBufferImpl;
+package java.nio;
 
 /**
  * @since 1.4
diff --git a/libjava/java/nio/IntBufferImpl.java b/libjava/java/nio/IntBufferImpl.java
new file mode 100644 (file)
index 0000000..ebf33ec
--- /dev/null
@@ -0,0 +1,157 @@
+/* IntBufferImpl.java -- 
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+/**
+ * This is a Heap memory implementation
+ */
+public final class IntBufferImpl extends IntBuffer
+{
+  private boolean readOnly;
+
+  IntBufferImpl (int capacity)
+  {
+    this (new int [capacity], 0, capacity, capacity, 0, -1, false);
+  }
+  
+  IntBufferImpl (int[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
+  {
+    super (buffer, offset, capacity, limit, position, mark);
+    this.readOnly = readOnly;
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public IntBuffer slice ()
+  {
+    return new IntBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public IntBuffer duplicate ()
+  {
+    return new IntBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
+  }
+  
+  public IntBuffer asReadOnlyBuffer ()
+  {
+    return new IntBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
+  }
+  
+  public IntBuffer compact ()
+  {
+    int copied = 0;
+    
+    while (remaining () > 0)
+      {
+       put (copied, get ());
+       copied++;
+      }
+
+    position (copied);
+    return this;
+  }
+  
+  public boolean isDirect ()
+  {
+    return false;
+  }
+
+  /**
+   * Relative get method. Reads the next <code>int</code> from the buffer.
+   */
+  final public int get ()
+  {
+    int result = backing_buffer [position ()];
+    position (position () + 1);
+    return result;
+  }
+  
+  /**
+   * 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 ()] = value;
+    position (position () + 1);
+    return this;
+  }
+  
+  /**
+   * 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];
+  }
+  
+  /**
+   * 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] = value;
+    return this;
+  }
+  
+  final public ByteOrder order ()
+  {
+    return ByteOrder.nativeOrder ();
+  }
+}
diff --git a/libjava/java/nio/IntViewBufferImpl.java b/libjava/java/nio/IntViewBufferImpl.java
new file mode 100644 (file)
index 0000000..e60f3cb
--- /dev/null
@@ -0,0 +1,154 @@
+/* IntViewBufferImpl.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+class IntViewBufferImpl extends IntBuffer
+{
+  private boolean readOnly;
+  private int offset;
+  private ByteBuffer bb;
+  private ByteOrder endian;
+  
+  public IntViewBufferImpl (ByteBuffer bb, boolean readOnly)
+  {
+    super (bb.remaining () >> 2, bb.remaining () >> 2, bb.position (), 0);
+    this.bb = bb;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from IntByteBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public IntViewBufferImpl (ByteBuffer bb, int offset, int capacity,
+                               int limit, int position, int mark,
+                               boolean readOnly)
+  {
+    super (limit >> 2, limit >> 2, position >> 2, mark >> 2);
+    this.bb = bb;
+    this.offset = offset;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from IntViewBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public int get ()
+  {
+    int result = bb.getInt ((position () << 2) + offset);
+    position (position () + 1);
+    return result;
+  }
+
+  public int get (int index)
+  {
+    return bb.getInt ((index << 2) + offset);
+  }
+
+  public IntBuffer put (int value)
+  {
+    bb.putInt ((position () << 2) + offset, value);
+    position (position () + 1);
+    return this;
+  }
+  
+  public IntBuffer put (int index, int value)
+  {
+    bb.putInt ((index << 2) + offset, value);
+    return this;
+  }
+
+  public IntBuffer compact ()
+  {
+    if (position () > 0)
+      {
+        // Copy all data from position() to limit() to the beginning of the
+        // buffer, set position to end of data and limit to capacity
+        // XXX: This can surely be optimized, for direct and non-direct buffers
+        
+        int count = limit () - position ();
+              
+        for (int i = 0; i < count; i++)
+          {
+            bb.putInt ((i >> 2) + offset,
+                          bb.getInt (((i + position ()) >> 2) + offset));
+          }
+
+        position (count);
+        limit (capacity ());
+      }
+
+    return this;
+  }
+  
+  public IntBuffer duplicate ()
+  {
+    // Create a copy of this object that shares its content
+    // FIXME: mark is not correct
+    return new IntViewBufferImpl (bb, offset, capacity (), limit (),
+                                     position (), -1, isReadOnly ());
+  }
+  
+  public IntBuffer slice ()
+  {
+    // Create a sliced copy of this object that shares its content.
+    return new IntViewBufferImpl (bb, (position () >> 2) + offset,
+                                      remaining (), remaining (), 0, -1,
+                                     isReadOnly ());
+  }
+  
+  public IntBuffer asReadOnlyBuffer ()
+  {
+    // Create a copy of this object that shares its content and is read-only
+    return new IntViewBufferImpl (bb, (position () >> 2) + offset,
+                                     remaining (), remaining (), 0, -1, true);
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public boolean isDirect ()
+  {
+    return bb.isDirect ();
+  }
+  
+  public ByteOrder order ()
+  {
+    return ByteOrder.LITTLE_ENDIAN;
+  }
+}
index 8808fd5f507ea4026887a08653074d931f5aabc3..a39a83d94e8723c1c2672d190b6b4eafd98f9757 100644 (file)
@@ -35,9 +35,8 @@ 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 java.nio;
 
-import gnu.java.nio.LongBufferImpl;
+package java.nio;
 
 /**
  * @since 1.4
diff --git a/libjava/java/nio/LongBufferImpl.java b/libjava/java/nio/LongBufferImpl.java
new file mode 100644 (file)
index 0000000..08d4ac5
--- /dev/null
@@ -0,0 +1,157 @@
+/* LongBufferImpl.java -- 
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+/**
+ * This is a Heap memory implementation
+ */
+public final class LongBufferImpl extends LongBuffer
+{
+  private boolean readOnly;
+
+  LongBufferImpl (int capacity)
+  {
+    this (new long [capacity], 0, capacity, capacity, 0, -1, false);
+  }
+  
+  LongBufferImpl (long[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
+  {
+    super (buffer, offset, capacity, limit, position, mark);
+    this.readOnly = readOnly;
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public LongBuffer slice ()
+  {
+    return new LongBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public LongBuffer duplicate ()
+  {
+    return new LongBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
+  }
+  
+  public LongBuffer asReadOnlyBuffer ()
+  {
+    return new LongBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
+  }
+  
+  public LongBuffer compact ()
+  {
+    int copied = 0;
+    
+    while (remaining () > 0)
+      {
+       put (copied, get ());
+       copied++;
+      }
+
+    position (copied);
+    return this;
+  }
+  
+  public boolean isDirect ()
+  {
+    return false;
+  }
+
+  /**
+   * Relative get method. Reads the next <code>long</code> from the buffer.
+   */
+  final public long get ()
+  {
+    long result = backing_buffer [position ()];
+    position (position () + 1);
+    return result;
+  }
+  
+  /**
+   * 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 ()] = value;
+    position (position () + 1);
+    return this;
+  }
+  
+  /**
+   * 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];
+  }
+  
+  /**
+   * 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] = value;
+    return this;
+  }
+  
+  final public ByteOrder order ()
+  {
+    return ByteOrder.nativeOrder ();
+  }
+}
diff --git a/libjava/java/nio/LongViewBufferImpl.java b/libjava/java/nio/LongViewBufferImpl.java
new file mode 100644 (file)
index 0000000..c7ada48
--- /dev/null
@@ -0,0 +1,154 @@
+/* LongViewBufferImpl.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+class LongViewBufferImpl extends LongBuffer
+{
+  private boolean readOnly;
+  private int offset;
+  private ByteBuffer bb;
+  private ByteOrder endian;
+  
+  public LongViewBufferImpl (ByteBuffer bb, boolean readOnly)
+  {
+    super (bb.remaining () >> 3, bb.remaining () >> 3, bb.position (), 0);
+    this.bb = bb;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from LongByteBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public LongViewBufferImpl (ByteBuffer bb, int offset, int capacity,
+                               int limit, int position, int mark,
+                               boolean readOnly)
+  {
+    super (limit >> 3, limit >> 3, position >> 3, mark >> 3);
+    this.bb = bb;
+    this.offset = offset;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from LongViewBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public long get ()
+  {
+    long result = bb.getLong ((position () << 3) + offset);
+    position (position () + 1);
+    return result;
+  }
+
+  public long get (int index)
+  {
+    return bb.getLong ((index << 3) + offset);
+  }
+
+  public LongBuffer put (long value)
+  {
+    bb.putLong ((position () << 3) + offset, value);
+    position (position () + 1);
+    return this;
+  }
+  
+  public LongBuffer put (int index, long value)
+  {
+    bb.putLong ((index << 3) + offset, value);
+    return this;
+  }
+
+  public LongBuffer compact ()
+  {
+    if (position () > 0)
+      {
+        // Copy all data from position() to limit() to the beginning of the
+        // buffer, set position to end of data and limit to capacity
+        // XXX: This can surely be optimized, for direct and non-direct buffers
+        
+        int count = limit () - position ();
+              
+        for (int i = 0; i < count; i++)
+          {
+            bb.putLong ((i >> 3) + offset,
+                          bb.getLong (((i + position ()) >> 3) + offset));
+          }
+
+        position (count);
+        limit (capacity ());
+      }
+
+    return this;
+  }
+  
+  public LongBuffer duplicate ()
+  {
+    // Create a copy of this object that shares its content
+    // FIXME: mark is not correct
+    return new LongViewBufferImpl (bb, offset, capacity (), limit (),
+                                     position (), -1, isReadOnly ());
+  }
+  
+  public LongBuffer slice ()
+  {
+    // Create a sliced copy of this object that shares its content.
+    return new LongViewBufferImpl (bb, (position () >> 3) + offset,
+                                      remaining (), remaining (), 0, -1,
+                                     isReadOnly ());
+  }
+  
+  public LongBuffer asReadOnlyBuffer ()
+  {
+    // Create a copy of this object that shares its content and is read-only
+    return new LongViewBufferImpl (bb, (position () >> 3) + offset,
+                                     remaining (), remaining (), 0, -1, true);
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public boolean isDirect ()
+  {
+    return bb.isDirect ();
+  }
+  
+  public ByteOrder order ()
+  {
+    return ByteOrder.LITTLE_ENDIAN;
+  }
+}
index db14b483b66bb210da8318aca01d8a7ae0d9e53e..6bd3de9c75568054aa455c932c64a8bb90c03e8d 100644 (file)
@@ -35,9 +35,8 @@ 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 java.nio;
 
-import gnu.java.nio.ShortBufferImpl;
+package java.nio;
 
 /**
  * @since 1.4
diff --git a/libjava/java/nio/ShortBufferImpl.java b/libjava/java/nio/ShortBufferImpl.java
new file mode 100644 (file)
index 0000000..fcfbee6
--- /dev/null
@@ -0,0 +1,157 @@
+/* ShortBufferImpl.java -- 
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+/**
+ * This is a Heap memory implementation
+ */
+public final class ShortBufferImpl extends ShortBuffer
+{
+  private boolean readOnly;
+
+  ShortBufferImpl (int capacity)
+  {
+    this (new short [capacity], 0, capacity, capacity, 0, -1, false);
+  }
+  
+  ShortBufferImpl (short[] buffer, int offset, int capacity, int limit, int position, int mark, boolean readOnly)
+  {
+    super (buffer, offset, capacity, limit, position, mark);
+    this.readOnly = readOnly;
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public ShortBuffer slice ()
+  {
+    return new ShortBufferImpl (backing_buffer, array_offset + position (), remaining (), remaining (), 0, -1, isReadOnly ());
+  }
+  
+  public ShortBuffer duplicate ()
+  {
+    return new ShortBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, isReadOnly ());
+  }
+  
+  public ShortBuffer asReadOnlyBuffer ()
+  {
+    return new ShortBufferImpl (backing_buffer, array_offset, capacity (), limit (), position (), mark, true);
+  }
+  
+  public ShortBuffer compact ()
+  {
+    int copied = 0;
+    
+    while (remaining () > 0)
+      {
+       put (copied, get ());
+       copied++;
+      }
+
+    position (copied);
+    return this;
+  }
+  
+  public boolean isDirect ()
+  {
+    return false;
+  }
+
+  /**
+   * Relative get method. Reads the next <code>short</code> from the buffer.
+   */
+  final public short get ()
+  {
+    short result = backing_buffer [position ()];
+    position (position () + 1);
+    return result;
+  }
+  
+  /**
+   * 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 ()] = value;
+    position (position () + 1);
+    return this;
+  }
+  
+  /**
+   * 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];
+  }
+  
+  /**
+   * 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] = value;
+    return this;
+  }
+  
+  final public ByteOrder order ()
+  {
+    return ByteOrder.nativeOrder ();
+  }
+}
diff --git a/libjava/java/nio/ShortViewBufferImpl.java b/libjava/java/nio/ShortViewBufferImpl.java
new file mode 100644 (file)
index 0000000..9594642
--- /dev/null
@@ -0,0 +1,154 @@
+/* ShortViewBufferImpl.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+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 java.nio;
+
+class ShortViewBufferImpl extends ShortBuffer
+{
+  private boolean readOnly;
+  private int offset;
+  private ByteBuffer bb;
+  private ByteOrder endian;
+  
+  public ShortViewBufferImpl (ByteBuffer bb, boolean readOnly)
+  {
+    super (bb.remaining () >> 1, bb.remaining () >> 1, bb.position (), 0);
+    this.bb = bb;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from ShortByteBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public ShortViewBufferImpl (ByteBuffer bb, int offset, int capacity,
+                               int limit, int position, int mark,
+                               boolean readOnly)
+  {
+    super (limit >> 1, limit >> 1, position >> 1, mark >> 1);
+    this.bb = bb;
+    this.offset = offset;
+    this.readOnly = readOnly;
+    // FIXME: What if this is called from ShortViewBufferImpl and ByteBuffer has changed its endianess ?
+    this.endian = bb.order ();
+  }
+
+  public short get ()
+  {
+    short result = bb.getShort ((position () << 1) + offset);
+    position (position () + 1);
+    return result;
+  }
+
+  public short get (int index)
+  {
+    return bb.getShort ((index << 1) + offset);
+  }
+
+  public ShortBuffer put (short value)
+  {
+    bb.putShort ((position () << 1) + offset, value);
+    position (position () + 1);
+    return this;
+  }
+  
+  public ShortBuffer put (int index, short value)
+  {
+    bb.putShort ((index << 1) + offset, value);
+    return this;
+  }
+
+  public ShortBuffer compact ()
+  {
+    if (position () > 0)
+      {
+        // Copy all data from position() to limit() to the beginning of the
+        // buffer, set position to end of data and limit to capacity
+        // XXX: This can surely be optimized, for direct and non-direct buffers
+        
+        int count = limit () - position ();
+              
+        for (int i = 0; i < count; i++)
+          {
+            bb.putShort ((i >> 1) + offset,
+                          bb.getShort (((i + position ()) >> 1) + offset));
+          }
+
+        position (count);
+        limit (capacity ());
+      }
+
+    return this;
+  }
+  
+  public ShortBuffer duplicate ()
+  {
+    // Create a copy of this object that shares its content
+    // FIXME: mark is not correct
+    return new ShortViewBufferImpl (bb, offset, capacity (), limit (),
+                                     position (), -1, isReadOnly ());
+  }
+  
+  public ShortBuffer slice ()
+  {
+    // Create a sliced copy of this object that shares its content.
+    return new ShortViewBufferImpl (bb, (position () >> 1) + offset,
+                                      remaining (), remaining (), 0, -1,
+                                     isReadOnly ());
+  }
+  
+  public ShortBuffer asReadOnlyBuffer ()
+  {
+    // Create a copy of this object that shares its content and is read-only
+    return new ShortViewBufferImpl (bb, (position () >> 1) + offset,
+                                     remaining (), remaining (), 0, -1, true);
+  }
+  
+  public boolean isReadOnly ()
+  {
+    return readOnly;
+  }
+  
+  public boolean isDirect ()
+  {
+    return bb.isDirect ();
+  }
+  
+  public ByteOrder order ()
+  {
+    return ByteOrder.LITTLE_ENDIAN;
+  }
+}
diff --git a/libjava/java/nio/natDirectByteBufferImpl.cc b/libjava/java/nio/natDirectByteBufferImpl.cc
new file mode 100644 (file)
index 0000000..8286390
--- /dev/null
@@ -0,0 +1,45 @@
+// natDirectByteBufferImpl.cc
+
+/* Copyright (C) 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/gcj/RawData.h>
+#include <java/nio/DirectByteBufferImpl.h>
+
+gnu::gcj::RawData*
+java::nio::DirectByteBufferImpl::allocateImpl (jint /*capacity*/)
+{
+  // FIXME: implement this
+  return 0;
+}
+
+void
+java::nio::DirectByteBufferImpl::freeImpl (gnu::gcj::RawData* /*address*/)
+{
+  // FIXME: implement this
+}
+
+jbyte
+java::nio::DirectByteBufferImpl::getImpl (jint /*index*/)
+{
+  // FIXME: implement this
+  // Dont forget: add offset to index
+  return 0;
+}
+
+void
+java::nio::DirectByteBufferImpl::putImpl (jint /*index*/, jbyte /*value*/)
+{
+  // FIXME: implement this
+  // Dont forget: add offset to index
+}