diff options
author | Michael Koch <konqueror@gmx.de> | 2003-06-17 19:09:56 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2003-06-17 19:09:56 +0000 |
commit | 6f3aed57fb4258b97b6c068bd7aef10f45f272d5 (patch) | |
tree | 070d161eb50c6f132e76f98bbc8b9ada414dad0f /libjava/java | |
parent | 67f63f32d59b22241faa6f3390757ce9535f8898 (diff) | |
download | gcc-6f3aed57fb4258b97b6c068bd7aef10f45f272d5.zip gcc-6f3aed57fb4258b97b6c068bd7aef10f45f272d5.tar.gz gcc-6f3aed57fb4258b97b6c068bd7aef10f45f272d5.tar.bz2 |
2003-06-17 Michael Koch <konqueror@gmx.de>
* java/nio/DirectByteBufferImpl.java
(address): Made package private.
(DirectByteBufferImpl): New constructor.
* java/nio/natDirectByteBufferImpl.cc
(allocateImpl): Moved to java.nio namespace, implemented.
(freeImpl): Likewise.
(getImpl): Likewise.
(putImpl): Likewise.
* jni.cc
(_Jv_JNI_NewDirectByteBuffer): Implemented.
(_Jv_JNI_GetDirectBufferAddress): Implemented.
(_Jv_JNI_GetDirectBufferCapacity): Implemented.
From-SVN: r68105
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/nio/DirectByteBufferImpl.java | 7 | ||||
-rw-r--r-- | libjava/java/nio/natDirectByteBufferImpl.cc | 24 |
2 files changed, 18 insertions, 13 deletions
diff --git a/libjava/java/nio/DirectByteBufferImpl.java b/libjava/java/nio/DirectByteBufferImpl.java index b037385..c746723 100644 --- a/libjava/java/nio/DirectByteBufferImpl.java +++ b/libjava/java/nio/DirectByteBufferImpl.java @@ -42,9 +42,14 @@ import gnu.gcj.RawData; public class DirectByteBufferImpl extends ByteBuffer { - private RawData address; + RawData address; private int offset; private boolean readOnly; + + public DirectByteBufferImpl (RawData address, long len) + { + this (address, 0, (int) len, (int) len, 0, -1, false); + } public DirectByteBufferImpl (RawData address, int offset, int capacity, int limit, int position, int mark, diff --git a/libjava/java/nio/natDirectByteBufferImpl.cc b/libjava/java/nio/natDirectByteBufferImpl.cc index 8286390..2ceea17 100644 --- a/libjava/java/nio/natDirectByteBufferImpl.cc +++ b/libjava/java/nio/natDirectByteBufferImpl.cc @@ -13,33 +13,33 @@ details. */ #include <gcj/cni.h> #include <jvm.h> +#include <stdlib.h> + #include <gnu/gcj/RawData.h> #include <java/nio/DirectByteBufferImpl.h> gnu::gcj::RawData* -java::nio::DirectByteBufferImpl::allocateImpl (jint /*capacity*/) +java::nio::DirectByteBufferImpl::allocateImpl (jint capacity) { - // FIXME: implement this - return 0; + return reinterpret_cast<gnu::gcj::RawData*> (::malloc (capacity)); } void -java::nio::DirectByteBufferImpl::freeImpl (gnu::gcj::RawData* /*address*/) +java::nio::DirectByteBufferImpl::freeImpl (gnu::gcj::RawData* address) { - // FIXME: implement this + ::free (reinterpret_cast<void*> (address)); } jbyte -java::nio::DirectByteBufferImpl::getImpl (jint /*index*/) +java::nio::DirectByteBufferImpl::getImpl (jint index) { - // FIXME: implement this - // Dont forget: add offset to index - return 0; + jbyte* pointer = reinterpret_cast<jbyte*> (address) + offset + index; + return *pointer; } void -java::nio::DirectByteBufferImpl::putImpl (jint /*index*/, jbyte /*value*/) +java::nio::DirectByteBufferImpl::putImpl (jint index, jbyte value) { - // FIXME: implement this - // Dont forget: add offset to index + jbyte* pointer = reinterpret_cast<jbyte*> (address) + offset + index; + *pointer = value; } |