| // jni.cc - JNI implementation, including the jump table. |
| |
| /* Copyright (C) 1998, 1999 Cygnus Solutions |
| |
| 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 <stddef.h> |
| |
| #include <jni.h> |
| #include <java-field.h> |
| |
| static jclass |
| _Jv_JNI_GetSuperclass (JNIEnv *, jclass clazz) |
| { |
| return clazz->getSuperclass (); |
| } |
| |
| static jboolean |
| IsAssignableFrom(JNIEnv *, jclass clazz1, jclass clazz2) |
| { |
| return clazz1->isAssignableFrom (clazz2); |
| } |
| |
| static jobject |
| _Jv_JNI_GetObjectField (JNIEnv *, jobject obj, jfieldID field) |
| { |
| return _Jv_GetObjectField (obj, field); |
| } |
| |
| static jbyte |
| _Jv_JNI_GetByteField (JNIEnv *, jobject obj, jfieldID field) |
| { |
| return _Jv_GetByteField (obj, field); |
| } |
| |
| static jshort |
| _Jv_JNI_GetShortField (JNIEnv *, jobject obj, jfieldID field) |
| { |
| return _Jv_GetShortField (obj, field); |
| } |
| |
| static jint |
| _Jv_JNI_GetIntField (JNIEnv *, jobject obj, jfieldID field) |
| { |
| return _Jv_GetIntField (obj, field); |
| } |
| |
| static jlong |
| _Jv_JNI_GetLongField (JNIEnv *, jobject obj, jfieldID field) |
| { |
| return _Jv_GetLongField (obj, field); |
| } |
| |
| static jsize |
| _Jv_JNI_GetStringLength (JNIEnv *, jstring string) |
| { |
| return string->length(); |
| } |
| |
| // JDK 1.2 |
| jobject |
| _Jv_JNI_ToReflectedField (JNIEnv *, jclass cls, jfieldID fieldID) |
| { |
| java::lang::reflect::Field *field = new java::lang::reflect::Field(); |
| field->declaringClass = cls; |
| field->offset = (char*) fieldID - (char *) cls->fields; |
| field->name = _Jv_NewStringUtf8Const (fieldID->getNameUtf8Const (cls)); |
| return field; |
| } |
| |
| // JDK 1.2 |
| jfieldID |
| _Jv_JNI_FromReflectedField (JNIEnv *, java::lang::reflect::Field *field) |
| { |
| return _Jv_FromReflectedField (field); |
| } |
| |
| #define NOT_IMPL NULL |
| |
| struct JNINativeInterface _Jv_JNIFunctions = |
| { |
| NULL, |
| NULL, |
| NULL, |
| NULL, |
| NOT_IMPL /* GetVersion */, |
| NOT_IMPL /* DefineClass */, |
| NOT_IMPL /* FindClass */, |
| NULL, |
| NULL, |
| NULL, |
| _Jv_JNI_GetSuperclass, |
| IsAssignableFrom, |
| NULL, |
| NOT_IMPL /* Throw */, |
| NOT_IMPL /* ThrowNew */, |
| NOT_IMPL /* ExceptionOccurred */, |
| NOT_IMPL /* ExceptionDescribe */, |
| NOT_IMPL /* ExceptionClear */, |
| NOT_IMPL /* FatalError */, |
| NOT_IMPL /* NULL */, |
| NOT_IMPL /* NULL */, |
| NOT_IMPL /* NewGlobalRef */, |
| NOT_IMPL /* DeleteGlobalRef */, |
| NOT_IMPL /* DeleteLocalRef */, |
| NOT_IMPL /* IsSameObject */, |
| NOT_IMPL /* NULL */, |
| NOT_IMPL /* NULL */, |
| NOT_IMPL /* AllocObject */, |
| NOT_IMPL /* NewObject */, |
| NOT_IMPL /* NewObjectV */, |
| NOT_IMPL /* NewObjectA */, |
| NOT_IMPL /* GetObjectClass */, |
| NOT_IMPL /* IsInstanceOf */, |
| NOT_IMPL /* GetMethodID */, |
| NOT_IMPL /* CallObjectMethod */, |
| NOT_IMPL /* CallObjectMethodV */, |
| NOT_IMPL /* CallObjectMethodA */, |
| NOT_IMPL /* CallBooleanMethod */, |
| NOT_IMPL /* CallBooleanMethodV */, |
| NOT_IMPL /* CallBooleanMethodA */, |
| NOT_IMPL /* CallByteMethod */, |
| NOT_IMPL /* CallByteMethodV */, |
| NOT_IMPL /* CallByteMethodA */, |
| NOT_IMPL /* CallCharMethod */, |
| NOT_IMPL /* CallCharMethodV */, |
| NOT_IMPL /* CallCharMethodA */, |
| NOT_IMPL /* CallShortMethod */, |
| NOT_IMPL /* CallShortMethodV */, |
| NOT_IMPL /* CallShortMethodA */, |
| NOT_IMPL /* CallIntMethod */, |
| NOT_IMPL /* CallIntMethodV */, |
| NOT_IMPL /* CallIntMethodA */, |
| NOT_IMPL /* CallLongMethod */, |
| NOT_IMPL /* CallLongMethodV */, |
| NOT_IMPL /* CallLongMethodA */, |
| NOT_IMPL /* CallFloatMethod */, |
| NOT_IMPL /* CallFloatMethodV */, |
| NOT_IMPL /* CallFloatMethodA */, |
| NOT_IMPL /* CallDoubleMethod */, |
| NOT_IMPL /* CallDoubleMethodV */, |
| NOT_IMPL /* CallDoubleMethodA */, |
| NOT_IMPL /* CallVoidMethod */, |
| NOT_IMPL /* CallVoidMethodV */, |
| NOT_IMPL /* CallVoidMethodA */, |
| NOT_IMPL /* CallNonvirtualObjectMethod */, |
| NOT_IMPL /* CallNonvirtualObjectMethodV */, |
| NOT_IMPL /* CallNonvirtualObjectMethodA */, |
| NOT_IMPL /* CallNonvirtualBooleanMethod */, |
| NOT_IMPL /* CallNonvirtualBooleanMethodV */, |
| NOT_IMPL /* CallNonvirtualBooleanMethodA */, |
| NOT_IMPL /* CallNonvirtualByteMethod */, |
| NOT_IMPL /* CallNonvirtualByteMethodV */, |
| NOT_IMPL /* CallNonvirtualByteMethodA */, |
| NOT_IMPL /* CallNonvirtualCharMethod */, |
| NOT_IMPL /* CallNonvirtualCharMethodV */, |
| NOT_IMPL /* CallNonvirtualCharMethodA */, |
| NOT_IMPL /* CallNonvirtualShortMethod */, |
| NOT_IMPL /* CallNonvirtualShortMethodV */, |
| NOT_IMPL /* CallNonvirtualShortMethodA */, |
| NOT_IMPL /* CallNonvirtualIntMethod */, |
| NOT_IMPL /* CallNonvirtualIntMethodV */, |
| NOT_IMPL /* CallNonvirtualIntMethodA */, |
| NOT_IMPL /* CallNonvirtualLongMethod */, |
| NOT_IMPL /* CallNonvirtualLongMethodV */, |
| NOT_IMPL /* CallNonvirtualLongMethodA */, |
| NOT_IMPL /* CallNonvirtualFloatMethod */, |
| NOT_IMPL /* CallNonvirtualFloatMethodV */, |
| NOT_IMPL /* CallNonvirtualFloatMethodA */, |
| NOT_IMPL /* CallNonvirtualDoubleMethod */, |
| NOT_IMPL /* CallNonvirtualDoubleMethodV */, |
| NOT_IMPL /* CallNonvirtualDoubleMethodA */, |
| NOT_IMPL /* CallNonvirtualVoidMethod */, |
| NOT_IMPL /* CallNonvirtualVoidMethodV */, |
| NOT_IMPL /* CallNonvirtualVoidMethodA */, |
| NOT_IMPL /* GetFieldID */, |
| _Jv_JNI_GetObjectField, |
| NOT_IMPL /* GetBooleanField */, |
| _Jv_JNI_GetByteField, |
| NOT_IMPL /* GetCharField */, |
| _Jv_JNI_GetShortField, |
| _Jv_JNI_GetIntField, |
| _Jv_JNI_GetLongField, |
| NOT_IMPL /* GetFloatField */, |
| NOT_IMPL /* GetDoubleField */, |
| NOT_IMPL /* SetObjectField */, |
| NOT_IMPL /* SetBooleanField */, |
| NOT_IMPL /* SetByteField */, |
| NOT_IMPL /* SetCharField */, |
| NOT_IMPL /* SetShortField */, |
| NOT_IMPL /* SetIntField */, |
| NOT_IMPL /* SetLongField */, |
| NOT_IMPL /* SetFloatField */, |
| NOT_IMPL /* SetDoubleField */, |
| NOT_IMPL /* GetStaticMethodID */, |
| NOT_IMPL /* CallStaticObjectMethod */, |
| NOT_IMPL /* CallStaticObjectMethodV */, |
| NOT_IMPL /* CallStaticObjectMethodA */, |
| NOT_IMPL /* CallStaticBooleanMethod */, |
| NOT_IMPL /* CallStaticBooleanMethodV */, |
| NOT_IMPL /* CallStaticBooleanMethodA */, |
| NOT_IMPL /* CallStaticByteMethod */, |
| NOT_IMPL /* CallStaticByteMethodV */, |
| NOT_IMPL /* CallStaticByteMethodA */, |
| NOT_IMPL /* CallStaticCharMethod */, |
| NOT_IMPL /* CallStaticCharMethodV */, |
| NOT_IMPL /* CallStaticCharMethodA */, |
| NOT_IMPL /* CallStaticShortMethod */, |
| NOT_IMPL /* CallStaticShortMethodV */, |
| NOT_IMPL /* CallStaticShortMethodA */, |
| NOT_IMPL /* CallStaticIntMethod */, |
| NOT_IMPL /* CallStaticIntMethodV */, |
| NOT_IMPL /* CallStaticIntMethodA */, |
| NOT_IMPL /* CallStaticLongMethod */, |
| NOT_IMPL /* CallStaticLongMethodV */, |
| NOT_IMPL /* CallStaticLongMethodA */, |
| NOT_IMPL /* CallStaticFloatMethod */, |
| NOT_IMPL /* CallStaticFloatMethodV */, |
| NOT_IMPL /* CallStaticFloatMethodA */, |
| NOT_IMPL /* CallStaticDoubleMethod */, |
| NOT_IMPL /* CallStaticDoubleMethodV */, |
| NOT_IMPL /* CallStaticDoubleMethodA */, |
| NOT_IMPL /* CallStaticVoidMethod */, |
| NOT_IMPL /* CallStaticVoidMethodV */, |
| NOT_IMPL /* CallStaticVoidMethodA */, |
| NOT_IMPL /* GetStaticFieldID */, |
| NOT_IMPL /* GetStaticObjectField */, |
| NOT_IMPL /* GetStaticBooleanField */, |
| NOT_IMPL /* GetStaticByteField */, |
| NOT_IMPL /* GetStaticCharField */, |
| NOT_IMPL /* GetStaticShortField */, |
| NOT_IMPL /* GetStaticIntField */, |
| NOT_IMPL /* GetStaticLongField */, |
| NOT_IMPL /* GetStaticFloatField */, |
| NOT_IMPL /* GetStaticDoubleField */, |
| NOT_IMPL /* SetStaticObjectField */, |
| NOT_IMPL /* SetStaticBooleanField */, |
| NOT_IMPL /* SetStaticByteField */, |
| NOT_IMPL /* SetStaticCharField */, |
| NOT_IMPL /* SetStaticShortField */, |
| NOT_IMPL /* SetStaticIntField */, |
| NOT_IMPL /* SetStaticLongField */, |
| NOT_IMPL /* SetStaticFloatField */, |
| NOT_IMPL /* SetStaticDoubleField */, |
| NOT_IMPL /* NewString */, |
| _Jv_JNI_GetStringLength, |
| NOT_IMPL /* GetStringChars */, |
| NOT_IMPL /* ReleaseStringChars */, |
| NOT_IMPL /* NewStringUTF */, |
| NOT_IMPL /* GetStringUTFLength */, |
| NOT_IMPL /* GetStringUTFChars */, |
| NOT_IMPL /* ReleaseStringUTFChars */, |
| NOT_IMPL /* GetArrayLength */, |
| NOT_IMPL /* NewObjectArray */, |
| NOT_IMPL /* GetObjectArrayElement */, |
| NOT_IMPL /* SetObjectArrayElement */, |
| NOT_IMPL /* NewBooleanArray */, |
| NOT_IMPL /* NewByteArray */, |
| NOT_IMPL /* NewCharArray */, |
| NOT_IMPL /* NewShortArray */, |
| NOT_IMPL /* NewIntArray */, |
| NOT_IMPL /* NewLongArray */, |
| NOT_IMPL /* NewFloatArray */, |
| NOT_IMPL /* NewDoubleArray */, |
| NOT_IMPL /* GetBooleanArrayElements */, |
| NOT_IMPL /* GetByteArrayElements */, |
| NOT_IMPL /* GetCharArrayElements */, |
| NOT_IMPL /* GetShortArrayElements */, |
| NOT_IMPL /* GetIntArrayElements */, |
| NOT_IMPL /* GetLongArrayElements */, |
| NOT_IMPL /* GetFloatArrayElements */, |
| NOT_IMPL /* GetDoubleArrayElements */, |
| NOT_IMPL /* ReleaseBooleanArrayElements */, |
| NOT_IMPL /* ReleaseByteArrayElements */, |
| NOT_IMPL /* ReleaseCharArrayElements */, |
| NOT_IMPL /* ReleaseShortArrayElements */, |
| NOT_IMPL /* ReleaseIntArrayElements */, |
| NOT_IMPL /* ReleaseLongArrayElements */, |
| NOT_IMPL /* ReleaseFloatArrayElements */, |
| NOT_IMPL /* ReleaseDoubleArrayElements */, |
| NOT_IMPL /* GetBooleanArrayRegion */, |
| NOT_IMPL /* GetByteArrayRegion */, |
| NOT_IMPL /* GetCharArrayRegion */, |
| NOT_IMPL /* GetShortArrayRegion */, |
| NOT_IMPL /* GetIntArrayRegion */, |
| NOT_IMPL /* GetLongArrayRegion */, |
| NOT_IMPL /* GetFloatArrayRegion */, |
| NOT_IMPL /* GetDoubleArrayRegion */, |
| NOT_IMPL /* SetBooleanArrayRegion */, |
| NOT_IMPL /* SetByteArrayRegion */, |
| NOT_IMPL /* SetCharArrayRegion */, |
| NOT_IMPL /* SetShortArrayRegion */, |
| NOT_IMPL /* SetIntArrayRegion */, |
| NOT_IMPL /* SetLongArrayRegion */, |
| NOT_IMPL /* SetFloatArrayRegion */, |
| NOT_IMPL /* SetDoubleArrayRegion */, |
| NOT_IMPL /* RegisterNatives */, |
| NOT_IMPL /* UnregisterNatives */, |
| NOT_IMPL /* MonitorEnter */, |
| NOT_IMPL /* MonitorExit */, |
| NOT_IMPL /* GetJavaVM */, |
| }; |