aboutsummaryrefslogtreecommitdiff
path: root/libjava/include/jni.h
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>2000-01-26 23:56:36 +0000
committerTom Tromey <tromey@gcc.gnu.org>2000-01-26 23:56:36 +0000
commit355dff4cef9a9697733e29c3f6c4ff546c9b4046 (patch)
tree183896886d52c6412a2339fe8a27adf081f0cb6a /libjava/include/jni.h
parent673fdf6d778614d291d139ed4beecea7df6a014d (diff)
downloadgcc-355dff4cef9a9697733e29c3f6c4ff546c9b4046.zip
gcc-355dff4cef9a9697733e29c3f6c4ff546c9b4046.tar.gz
gcc-355dff4cef9a9697733e29c3f6c4ff546c9b4046.tar.bz2
method.h (JvNumMethods): Moved from Class.h.
* gcj/method.h (JvNumMethods): Moved from Class.h. (JvGetFirstMethod): Likewise. * java/lang/Class.h (Object): Updated decl of _Jv_JNI_ToReflectedField. (Object): Added _Jv_JNI_ToReflectedMethod as a friend. * Makefile.in: Rebuilt. * Makefile.am (java/lang/reflect/Field.h): Added `jboolean' argument of _Jv_JNI_ToReflectedField. (java/lang/reflect/Constructor.h): Added _Jv_JNI_ToReflectedMethod as a friend. (java/lang/reflect/Method.h): Likewise. * include/jni.h (class _Jv_JNIEnv): Added `klass' member. Use __GCJ_JNI_IMPL__. (jweak): New typedef. (struct JNINativeInterface): Correctly declare remaining entries. * jni.cc: Include Class.h, ClassLoader.h. (_Jv_JNI_FindClass): New function. (_Jv_JNI_DefineClass): New function. (_Jv_JNI_conversion_call): New function. (_Jv_JNI_FindClass): Use current class loader to find class. (_Jv_JNI_ExceptionCheck): New function. (_Jv_JNI_FromReflectedField): Now static. (MethodClass): New define. (_Jv_JNI_FromReflectedMethod): New function. (_Jv_JNI_ToReflectedMethod): Likewise. Include Method.h. (_Jv_JNI_IsAssignableFrom): Renamed. (_Jv_JNI_GetStringRegion): New function. Include StringIndexOutOfBoundsException.h. (_Jv_JNI_GetStringUTFRegion): New function. (_Jv_JNIFunctions): Updated for new functions. (_Jv_JNI_GetPrimitiveArrayCritical): New function (_Jv_JNI_ReleasePrimitiveArrayCritical): Likewise. (_Jv_JNI_GetStringCritical): New function. (_Jv_JNI_ReleaseStringCritical): Likewise. (get_throwable): Removed. (GCJ_JV_JNIENV_FRIEND): Removed. (__GCJ_JNI_IMPL__): Define. Include method.h. From-SVN: r31638
Diffstat (limited to 'libjava/include/jni.h')
-rw-r--r--libjava/include/jni.h103
1 files changed, 68 insertions, 35 deletions
diff --git a/libjava/include/jni.h b/libjava/include/jni.h
index c2ba2f2..60b2302 100644
--- a/libjava/include/jni.h
+++ b/libjava/include/jni.h
@@ -65,6 +65,9 @@ typedef const struct JNINativeInterface *JNIEnv;
#endif /* __cplusplus */
+/* FIXME: this is wrong. */
+typedef jobject jweak;
+
/* Version numbers. */
#define JNI_VERSION_1_1 0x00010001
#define JNI_VERSION_1_2 0x00010002
@@ -88,35 +91,57 @@ typedef union jvalue
typedef void * (*_Jv_func)(...);
+/* This structure is used when registering native methods. */
+typedef struct
+{
+ char *name;
+ char *signature;
+ void *fnPtr; /* Sigh. */
+} JNINativeMethod;
+
+/* FIXME: this is just a placeholder. */
+typedef int JavaVM;
+
struct JNINativeInterface
{
_Jv_func reserved0;
_Jv_func reserved1;
_Jv_func reserved2;
_Jv_func reserved3;
- jint (*GetVersion) (JNIEnv*);
- _Jv_func DefineClass;
- _Jv_func FindClass;
- _Jv_func reserved4;
- _Jv_func reserved5;
- _Jv_func reserved6;
- jclass (*GetSuperclass) (JNIEnv*, jclass);
- jboolean (*IsAssignableFrom) (JNIEnv*, jclass, jclass);
- _Jv_func reserved7;
- jint (*Throw) (JNIEnv*, jthrowable);
- jint (*ThrowNew) (JNIEnv*, jclass, const char *);
+
+ jint (*GetVersion) (JNIEnv *);
+ jclass (*DefineClass) (JNIEnv *, jobject,
+ const jbyte *, jsize);
+ jclass (*FindClass) (JNIEnv *, const char *);
+
+ jmethodID (*FromReflectedMethod) (JNIEnv *, jobject);
+ jfieldID (*FromReflectedField) (JNIEnv *, jobject);
+ jobject (*ToReflectedMethod) (JNIEnv *, jclass, jmethodID,
+ jboolean);
+
+ jclass (*GetSuperclass) (JNIEnv *, jclass);
+ jboolean (*IsAssignableFrom) (JNIEnv *, jclass, jclass);
+
+ jobject (*ToReflectedField) (JNIEnv *, jclass, jfieldID,
+ jboolean);
+
+ jint (*Throw) (JNIEnv *, jthrowable);
+ jint (*ThrowNew) (JNIEnv *, jclass, const char *);
jthrowable (*ExceptionOccurred) (JNIEnv *);
void (*ExceptionDescribe) (JNIEnv *);
void (*ExceptionClear) (JNIEnv *);
void (*FatalError) (JNIEnv *, const char *);
- _Jv_func reserved8;
- _Jv_func reserved9;
- _Jv_func NewGlobalRef;
- _Jv_func DeleteGlobalRef;
- _Jv_func DeleteLocalRef;
+
+ jint (*PushLocalFrame) (JNIEnv *, jint);
+ jobject (*PopLocalFrame) (JNIEnv *, jobject result);
+
+ jobject (*NewGlobalRef) (JNIEnv *, jobject);
+ void (*DeleteGlobalRef) (JNIEnv *, jobject);
+ void (*DeleteLocalRef) (JNIEnv *, jobject);;
jboolean (*IsSameObject) (JNIEnv *, jobject, jobject);
- _Jv_func reserved10;
- _Jv_func reserved11;
+
+ jobject (*NewLocalRef) (JNIEnv *, jobject);
+ jint (*EnsureLocalCapacity) (JNIEnv *, jint);
jobject (*AllocObject) (JNIEnv *, jclass);
jobject (*NewObject) (JNIEnv *, jclass, jmethodID, ...);
@@ -471,20 +496,29 @@ struct JNINativeInterface
void (*SetDoubleArrayRegion) (JNIEnv *, jbooleanArray,
jsize, jsize, jboolean *);
- _Jv_func RegisterNatives;
- _Jv_func UnregisterNatives;
+ jint (*RegisterNatives) (JNIEnv *, jclass,
+ const JNINativeMethod *, jint);
+ jint (*UnregisterNatives) (JNIEnv *, jclass);
jint (*MonitorEnter) (JNIEnv *, jobject);
jint (*MonitorExit) (JNIEnv *, jobject);
- _Jv_func GetJavaVM;
-};
+ jint (*GetJavaVM) (JNIEnv *, JavaVM **);
-/* This structure is used when registering native methods. */
-typedef struct
-{
- char *name;
- char *signature;
- void *fnPtr; /* Sigh. */
-} JNINativeMethod;
+ void (*GetStringRegion) (JNIEnv *, jstring, jsize,
+ jsize, jchar *);
+ void (*GetStringUTFRegion) (JNIEnv *, jstring, jsize,
+ jsize, char *);
+
+ void * (*GetPrimitiveArrayCritical) (JNIEnv *, jarray, jboolean *);
+ void (*ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *, jint);
+
+ const jchar * (*GetStringCritical) (JNIEnv *, jstring, jboolean *);
+ void (*ReleaseStringCritical) (JNIEnv *, jstring, const jchar *);
+
+ jweak (*NewWeakGlobalRef) (JNIEnv *, jobject);
+ void (*DeleteWeakGlobalRef) (JNIEnv *, jweak);
+
+ jboolean (*ExceptionCheck) (JNIEnv *);
+};
#ifdef __cplusplus
@@ -494,16 +528,15 @@ public:
/* The method table. */
struct JNINativeInterface *p;
+ /* FIXME: this is really ugly. */
+#ifndef __GCJ_JNI_IMPL__
private:
+#endif
/* The current exception. */
jthrowable ex;
- /* This doesn't really protect the private contents, because anybody
- can set this macro. However, if they do set it then they at
- least know they are doing something unportable. */
-#ifdef GCJ_JV_JNIENV_FRIEND
- GCJ_JV_JNIENV_FRIEND;
-#endif
+ /* The class of the current native method. */
+ jclass klass;
public:
jclass GetSuperclass (jclass cl)