Commit 6f3aed57 by Michael Koch Committed by Michael Koch

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
parent 67f63f32
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.
2003-06-17 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> 2003-06-17 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* include/powerpc-signal.h: New File. * include/powerpc-signal.h: New File.
......
...@@ -42,9 +42,14 @@ import gnu.gcj.RawData; ...@@ -42,9 +42,14 @@ import gnu.gcj.RawData;
public class DirectByteBufferImpl extends ByteBuffer public class DirectByteBufferImpl extends ByteBuffer
{ {
private RawData address; RawData address;
private int offset; private int offset;
private boolean readOnly; 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, public DirectByteBufferImpl (RawData address, int offset, int capacity,
int limit, int position, int mark, int limit, int position, int mark,
......
...@@ -13,33 +13,33 @@ details. */ ...@@ -13,33 +13,33 @@ details. */
#include <gcj/cni.h> #include <gcj/cni.h>
#include <jvm.h> #include <jvm.h>
#include <stdlib.h>
#include <gnu/gcj/RawData.h> #include <gnu/gcj/RawData.h>
#include <java/nio/DirectByteBufferImpl.h> #include <java/nio/DirectByteBufferImpl.h>
gnu::gcj::RawData* gnu::gcj::RawData*
java::nio::DirectByteBufferImpl::allocateImpl (jint /*capacity*/) java::nio::DirectByteBufferImpl::allocateImpl (jint capacity)
{ {
// FIXME: implement this return reinterpret_cast<gnu::gcj::RawData*> (::malloc (capacity));
return 0;
} }
void 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 jbyte
java::nio::DirectByteBufferImpl::getImpl (jint /*index*/) java::nio::DirectByteBufferImpl::getImpl (jint index)
{ {
// FIXME: implement this jbyte* pointer = reinterpret_cast<jbyte*> (address) + offset + index;
// Dont forget: add offset to index return *pointer;
return 0;
} }
void void
java::nio::DirectByteBufferImpl::putImpl (jint /*index*/, jbyte /*value*/) java::nio::DirectByteBufferImpl::putImpl (jint index, jbyte value)
{ {
// FIXME: implement this jbyte* pointer = reinterpret_cast<jbyte*> (address) + offset + index;
// Dont forget: add offset to index *pointer = value;
} }
...@@ -35,11 +35,13 @@ details. */ ...@@ -35,11 +35,13 @@ details. */
#include <java/lang/reflect/Method.h> #include <java/lang/reflect/Method.h>
#include <java/lang/reflect/Modifier.h> #include <java/lang/reflect/Modifier.h>
#include <java/lang/OutOfMemoryError.h> #include <java/lang/OutOfMemoryError.h>
#include <java/util/IdentityHashMap.h>
#include <java/lang/Integer.h> #include <java/lang/Integer.h>
#include <java/lang/ThreadGroup.h> #include <java/lang/ThreadGroup.h>
#include <java/lang/Thread.h> #include <java/lang/Thread.h>
#include <java/lang/IllegalAccessError.h> #include <java/lang/IllegalAccessError.h>
#include <java/nio/DirectByteBufferImpl.h>
#include <java/util/IdentityHashMap.h>
#include <gnu/gcj/RawData.h>
#include <gcj/method.h> #include <gcj/method.h>
#include <gcj/field.h> #include <gcj/field.h>
...@@ -1720,24 +1722,28 @@ void ...@@ -1720,24 +1722,28 @@ void
// Direct byte buffers. // Direct byte buffers.
static jobject static jobject
(JNICALL _Jv_JNI_NewDirectByteBuffer) (JNIEnv *, void *, jlong) (JNICALL _Jv_JNI_NewDirectByteBuffer) (JNIEnv *, void *address, jlong length)
{ {
// For now we don't support this. using namespace gnu::gcj;
return NULL; using namespace java::nio;
return new DirectByteBufferImpl (reinterpret_cast<RawData *> (address),
length);
} }
static void * static void *
(JNICALL _Jv_JNI_GetDirectBufferAddress) (JNIEnv *, jobject) (JNICALL _Jv_JNI_GetDirectBufferAddress) (JNIEnv *, jobject buffer)
{ {
// For now we don't support this. using namespace java::nio;
return NULL; DirectByteBufferImpl* bb = static_cast<DirectByteBufferImpl *> (buffer);
return reinterpret_cast<void *> (bb->address);
} }
static jlong static jlong
(JNICALL _Jv_JNI_GetDirectBufferCapacity) (JNIEnv *, jobject) (JNICALL _Jv_JNI_GetDirectBufferCapacity) (JNIEnv *, jobject buffer)
{ {
// For now we don't support this. using namespace java::nio;
return -1; DirectByteBufferImpl* bb = static_cast<DirectByteBufferImpl *> (buffer);
return bb->capacity();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment