[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] Patch: RFA: jni.h re-merge
From: |
Tom Tromey |
Subject: |
[cp-patches] Patch: RFA: jni.h re-merge |
Date: |
22 Apr 2005 18:35:11 -0600 |
I'm not checking this in yet, but I plan to if I don't hear any
objections. I believe this change requires a change to VMs.
This re-merges jni.h with libgcj. I started with the libgcj version,
since the Classpath jni.h was an earlier fork of the libgcj jni.h.
I plan to put a similar patch in libgcj when this patch goes in to
Classpath, and from then on the Classpath jni.h will be the primary
copy.
The one real fix I know of is that there is now a fix in place to
properly declare the JNI functions exported by the VM (e.g.,
JNI_GetDefaultJavaVMInitArgs). On Windows, as I understand it, the
user of jni.h must see these as 'JNIIMPORT', but the VM must declare
them as 'JNIEXPORT'.
I changed the name of a preprocessor macro to be more
"classpath-like". In particular I changed
_JNI_VM_INTERNAL_TYPES_DEFINED to _CLASSPATH_VM_JNI_TYPES_DEFINED.
I also added a couple more jni.h-tweaking symbols with a similar
naming scheme. These are documented in vmintegration.texinfo. Both
are used by libgcj.
Let me know what you think,
Tom
2005-04-22 Tom Tromey <address@hidden>
* include/jni_md-x86-linux-gnu.h (JNIIMPORT): New define.
(jsize): New typedef.
* include/jni.h: Re-merged with libgcj.
* doc/vmintegration.texinfo (JNI Implementation): New node.
Index: include/jni.h
===================================================================
RCS file: /cvsroot/classpath/classpath/include/jni.h,v
retrieving revision 1.4
diff -u -r1.4 jni.h
--- include/jni.h 3 Nov 2004 22:54:26 -0000 1.4
+++ include/jni.h 23 Apr 2005 00:25:15 -0000
@@ -1,5 +1,5 @@
/* jni.h
- Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 Free Software
Foundation
This file is part of GNU Classpath.
@@ -35,88 +35,75 @@
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-/* This file is based on jni.h from libgcj */
-#ifndef __CLASSPATH_JNI_H__
-#define __CLASSPATH_JNI_H__
+/* Note: this file must be compilable by the C compiler (for now,
+ assuming GNU C is ok). This means you must never use `//'
+ comments, and all C++-specific code must be conditional on
+ __cplusplus. */
+
+#ifndef _CLASSPATH_JNI_H
+#define _CLASSPATH_JNI_H
+
+/* We include <stdio.h> for compatibility with Sun's <jni.h>. */
+#include <stdio.h>
#include <stdarg.h>
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#include "jni_md.h"
+#include "jni_md.h"
-typedef jint jsize;
-
-#ifdef __cplusplus
-}
-#endif
+/* The VM might define jobject and friends. */
+#ifndef _CLASSPATH_VM_JNI_TYPES_DEFINED
-/*
- * Before jni.h is #included within a typical JVM, the source code should
- * #define _JNI_VM_INTERNAL_TYPES_DEFINED and provide the real declarations
- * for 'jobject', 'jfieldID', 'jMethodID' and other implementation types.
- * If _JNI_VM_INTERNAL_TYPES_DEFINED is not defined, the following
- * declares the old versions of the types.
- */
-#ifndef _JNI_VM_INTERNAL_TYPES_DEFINED
-/*
-typedef void *jobject;
-typedef void *jfieldID;
-typedef void *jmethodID;
-*/
-struct _jfieldID;
-struct _jmethodID;
-typedef struct _jfieldID *jfieldID;
-typedef struct _jmethodID *jmethodID;
-#endif
-
-#ifdef __cplusplus
-
-class _jobject {};
-class _jclass : public _jobject {};
-class _jthrowable : public _jobject {};
-class _jstring : public _jobject {};
-class _jarray : public _jobject {};
-class _jbooleanArray : public _jarray {};
-class _jbyteArray : public _jarray {};
-class _jcharArray : public _jarray {};
-class _jshortArray : public _jarray {};
-class _jintArray : public _jarray {};
-class _jlongArray : public _jarray {};
-class _jfloatArray : public _jarray {};
-class _jdoubleArray : public _jarray {};
-class _jobjectArray : public _jarray {};
-
-typedef _jobject *jobject;
-typedef _jclass *jclass;
-typedef _jthrowable *jthrowable;
-typedef _jstring *jstring;
-typedef _jarray *jarray;
-typedef _jbooleanArray *jbooleanArray;
-typedef _jbyteArray *jbyteArray;
-typedef _jcharArray *jcharArray;
-typedef _jshortArray *jshortArray;
-typedef _jintArray *jintArray;
-typedef _jlongArray *jlongArray;
-typedef _jfloatArray *jfloatArray;
-typedef _jdoubleArray *jdoubleArray;
-typedef _jobjectArray *jobjectArray;
+# ifdef __cplusplus
+
+/* Define dummy classes and then define the JNI types as pointers. */
+struct __jobject {};
+struct __jclass : __jobject {};
+struct __jstring : __jobject {};
+struct __jthrowable : __jobject {};
+struct __jweak : __jobject {};
+struct __jarray : __jobject {};
+struct __jobjectArray : __jarray {};
+struct __jbyteArray : __jarray {};
+struct __jshortArray : __jarray {};
+struct __jintArray : __jarray {};
+struct __jlongArray : __jarray {};
+struct __jbooleanArray : __jarray {};
+struct __jcharArray : __jarray {};
+struct __jfloatArray : __jarray {};
+struct __jdoubleArray : __jarray {};
+
+typedef __jobject *jobject;
+typedef __jclass *jclass;
+typedef __jstring *jstring;
+typedef __jthrowable *jthrowable;
+typedef __jweak *jweak;
+typedef __jarray *jarray;
+typedef __jobjectArray *jobjectArray;
+typedef __jbyteArray *jbyteArray;
+typedef __jshortArray *jshortArray;
+typedef __jintArray *jintArray;
+typedef __jlongArray *jlongArray;
+typedef __jbooleanArray *jbooleanArray;
+typedef __jcharArray *jcharArray;
+typedef __jfloatArray *jfloatArray;
+typedef __jdoubleArray *jdoubleArray;
+
+#define JNI_TRUE true
+#define JNI_FALSE false
typedef struct _Jv_JNIEnv JNIEnv;
typedef struct _Jv_JavaVM JavaVM;
-#else /* __cplusplus */
+# else /* __cplusplus */
-
+/* For C, simply define the class types as generic pointers. */
typedef void *jobject;
typedef jobject jclass;
typedef jobject jstring;
-typedef jobject jarray;
typedef jobject jthrowable;
+typedef jobject jweak;
+typedef jobject jarray;
typedef jobject jobjectArray;
typedef jobject jbyteArray;
typedef jobject jshortArray;
@@ -126,20 +113,78 @@
typedef jobject jcharArray;
typedef jobject jfloatArray;
typedef jobject jdoubleArray;
-
-/* Dummy defines. */
+
+#define JNI_TRUE 1
+#define JNI_FALSE 0
+
typedef const struct JNINativeInterface *JNIEnv;
typedef const struct JNIInvokeInterface *JavaVM;
-#endif /* __cplusplus */
+# endif /* __cplusplus */
+
+#endif /* _CLASSPATH_VM_JNI_TYPES_DEFINED */
+
+/*
+ * Before jni.h is #included within a typical JVM, the source code should
+ * #define _JNI_VM_INTERNAL_TYPES_DEFINED and provide the real declarations
+ * for 'jobject', 'jfieldID', 'jmethodID' and other implementation types.
+ * If _JNI_VM_INTERNAL_TYPES_DEFINED is not defined, the following
+ * declares the old versions of the types.
+ */
+#ifndef _CLASSPATH_VM_INTERNAL_TYPES_DEFINED
+struct _jfieldID;
+struct _jmethodID;
+typedef struct _jfieldID *jfieldID;
+typedef struct _jmethodID *jmethodID;
+#endif
+
+/* Version numbers. */
+#define JNI_VERSION_1_1 0x00010001
+#define JNI_VERSION_1_2 0x00010002
+#define JNI_VERSION_1_4 0x00010004
+
+/* Used when releasing array elements. */
+#define JNI_COMMIT 1
+#define JNI_ABORT 2
+
+/* Error codes */
+#define JNI_OK 0
+#define JNI_ERR (-1)
+#define JNI_EDETACHED (-2)
+#define JNI_EVERSION (-3)
-#define _Jv_va_list va_list
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
+/* These functions might be defined in libraries which we load; the
+ JNI implementation calls them at the appropriate times. */
+extern JNIEXPORT jint JNICALL JNI_OnLoad (JavaVM *, void *);
+extern JNIEXPORT void JNICALL JNI_OnUnload (JavaVM *, void *);
+
+/* This can be defined as JNIIMPORT or JNIEXPORT by the md file,
+ depending on whether this is the implementation or a user. */
+#ifndef _CLASSPATH_JNIIMPEXP
+#define _CLASSPATH_JNIIMPEXP JNIIMPORT
+#endif
+
+/* These functions are called by user code to start using the
+ invocation API. */
+extern _CLASSPATH_JNIIMPEXP jint JNICALL
+JNI_GetDefaultJavaVMInitArgs (void *);
+
+extern _CLASSPATH_JNIIMPEXP jint JNICALL
+JNI_CreateJavaVM (JavaVM **, void **, void *);
+
+extern _CLASSPATH_JNIIMPEXP jint JNICALL
+JNI_GetCreatedJavaVMs (JavaVM **, jsize, jsize *);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
typedef union jvalue
{
jboolean z;
@@ -152,334 +197,457 @@
jdouble d;
jobject l;
} jvalue;
-
-/* Used for jboolean type */
-#define JNI_TRUE 1
-#define JNI_FALSE 0
-
-/* Used when releasing array elements. */
-#define JNI_COMMIT 1
-#define JNI_ABORT 2
-
-/* FIXME: Could be wrong */
-typedef jobject jweak;
-
-/* Version numbers. */
-#define JNI_VERSION_1_1 0x00010001 /* JNI version 1.1 */
-#define JNI_VERSION_1_2 0x00010002 /* JNI version 1.2 */
-#define JNI_VERSION_1_4 0x00010004 /* JNI version 1.4 */
-
-/* Error codes */
-#define JNI_OK 0
-#define JNI_ERR (-1)
-#define JNI_EDETACHED (-2)
-#define JNI_EVERSION (-3)
-
-/* These functions might be defined in libraries which we load; the
- JNI implementation calls them at the appropriate times. */
-JNIEXPORT jint JNICALL JNI_OnLoad (JavaVM *, void *);
-JNIEXPORT void JNICALL JNI_OnUnload (JavaVM *, void *);
-
-/* These functions are called by user code to start using the
- invocation API. */
-JNIEXPORT jint JNICALL JNI_GetDefaultJavaVMInitArgs (void *);
-JNIEXPORT jint JNICALL JNI_CreateJavaVM (JavaVM **, void **, void *);
-JNIEXPORT jint JNICALL JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
-
/* This structure is used when registering native methods. */
typedef struct
{
char *name;
char *signature;
- void *fnPtr;
+ void *fnPtr; /* Sigh. */
} JNINativeMethod;
struct JNINativeInterface
{
- void *reserved0; /* 0 */
- void *reserved1; /* 1 */
- void *reserved2; /* 2 */
- void *reserved3; /* 3 */
-
- jint (JNICALL *GetVersion) (JNIEnv *);
/* 4 */
- jclass (JNICALL *DefineClass) (JNIEnv *, const char *,
jobject, const jbyte *, jsize); /* 5 */
- jclass (JNICALL *FindClass) (JNIEnv *, const char *);
/* 6 */
-
- jmethodID (JNICALL *FromReflectedMethod) (JNIEnv *, jobject);
/* 7 */
- jfieldID (JNICALL *FromReflectedField) (JNIEnv *, jobject);
/* 8 */
- jobject (JNICALL *ToReflectedMethod) (JNIEnv *, jclass,
jmethodID, jboolean); /* 9 */
-
- jclass (JNICALL *GetSuperclass) (JNIEnv *, jclass);
/* 10 */
- jboolean (JNICALL *IsAssignableFrom) (JNIEnv *, jclass, jclass);
/* 11 */
-
- jobject (JNICALL *ToReflectedField) (JNIEnv *, jclass, jfieldID,
jboolean); /* 12 */
-
- jint (JNICALL *Throw) (JNIEnv *, jthrowable);
/* 13 */
- jint (JNICALL *ThrowNew) (JNIEnv *, jclass, const
char *); /* 14 */
- jthrowable (JNICALL *ExceptionOccurred) (JNIEnv *);
/* 15 */
- void (JNICALL *ExceptionDescribe) (JNIEnv *);
/* 16 */
- void (JNICALL *ExceptionClear) (JNIEnv *);
/* 17 */
- void (JNICALL *FatalError) (JNIEnv *, const char *);
/* 18 */
-
- jint (JNICALL *PushLocalFrame) (JNIEnv *, jint);
/* 19 */
- jobject (JNICALL *PopLocalFrame) (JNIEnv *, jobject);
/* 20 */
-
- jobject (JNICALL *NewGlobalRef) (JNIEnv *, jobject);
/* 21 */
- void (JNICALL *DeleteGlobalRef) (JNIEnv *, jobject);
/* 22 */
- void (JNICALL *DeleteLocalRef) (JNIEnv *, jobject);
/* 23 */
- jboolean (JNICALL *IsSameObject) (JNIEnv *, jobject,
jobject); /* 24 */
-
- jobject (JNICALL *NewLocalRef) (JNIEnv *, jobject);
/* 25 */
- jint (JNICALL *EnsureLocalCapacity) (JNIEnv *, jint);
/* 26 */
-
- jobject (JNICALL *AllocObject) (JNIEnv *, jclass);
/* 27 */
- jobject (JNICALL *NewObject) (JNIEnv *, jclass,
jmethodID, ...); /* 28 */
- jobject (JNICALL *NewObjectV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 29 */
- jobject (JNICALL *NewObjectA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 30 */
-
- jclass (JNICALL *GetObjectClass) (JNIEnv *, jobject);
/* 31 */
- jboolean (JNICALL *IsInstanceOf) (JNIEnv *, jobject,
jclass); /* 32 */
- jmethodID (JNICALL *GetMethodID) (JNIEnv *, jclass, const
char *, const char *); /* 33 */
-
- jobject (JNICALL *CallObjectMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 34 */
- jobject (JNICALL *CallObjectMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 35 */
- jobject (JNICALL *CallObjectMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 36 */
- jboolean (JNICALL *CallBooleanMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 37 */
- jboolean (JNICALL *CallBooleanMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 38 */
- jboolean (JNICALL *CallBooleanMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 39 */
- jbyte (JNICALL *CallByteMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 40 */
- jbyte (JNICALL *CallByteMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 41 */
- jbyte (JNICALL *CallByteMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 42 */
- jchar (JNICALL *CallCharMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 43 */
- jchar (JNICALL *CallCharMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 44 */
- jchar (JNICALL *CallCharMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 45 */
- jshort (JNICALL *CallShortMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 46 */
- jshort (JNICALL *CallShortMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 47 */
- jshort (JNICALL *CallShortMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 48 */
- jint (JNICALL *CallIntMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 49 */
- jint (JNICALL *CallIntMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 50 */
- jint (JNICALL *CallIntMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 51 */
- jlong (JNICALL *CallLongMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 52 */
- jlong (JNICALL *CallLongMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 53 */
- jlong (JNICALL *CallLongMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 54 */
- jfloat (JNICALL *CallFloatMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 55 */
- jfloat (JNICALL *CallFloatMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 56 */
- jfloat (JNICALL *CallFloatMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 57 */
- jdouble (JNICALL *CallDoubleMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 58 */
- jdouble (JNICALL *CallDoubleMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 59 */
- jdouble (JNICALL *CallDoubleMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 60 */
- void (JNICALL *CallVoidMethod) (JNIEnv *, jobject,
jmethodID, ...); /* 61 */
- void (JNICALL *CallVoidMethodV) (JNIEnv *, jobject,
jmethodID, _Jv_va_list); /* 62 */
- void (JNICALL *CallVoidMethodA) (JNIEnv *, jobject,
jmethodID, jvalue *); /* 63 */
-
- jobject (JNICALL *CallNonvirtualObjectMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...); /* 64 */
- jobject (JNICALL *CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
jmethodID, _Jv_va_list); /* 65 */
- jobject (JNICALL *CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
jmethodID, jvalue *); /* 66 */
- jboolean (JNICALL *CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...); /* 67 */
- jboolean (JNICALL *CallNonvirtualBooleanMethodV) (JNIEnv *, jobject,
jclass, jmethodID, _Jv_va_list); /* 68 */
- jboolean (JNICALL *CallNonvirtualBooleanMethodA) (JNIEnv *, jobject,
jclass, jmethodID, jvalue *); /* 69 */
- jbyte (JNICALL *CallNonvirtualByteMethod) (JNIEnv *, jobject,
jclass, jmethodID, ...); /* 70 */
- jbyte (JNICALL *CallNonvirtualByteMethodV) (JNIEnv *, jobject, jclass,
jmethodID, _Jv_va_list); /* 71 */
- jbyte (JNICALL *CallNonvirtualByteMethodA) (JNIEnv *, jobject, jclass,
jmethodID, jvalue *); /* 72 */
- jchar (JNICALL *CallNonvirtualCharMethod) (JNIEnv *, jobject,
jclass, jmethodID, ...); /* 73 */
- jchar (JNICALL *CallNonvirtualCharMethodV) (JNIEnv *, jobject, jclass,
jmethodID, _Jv_va_list); /* 74 */
- jchar (JNICALL *CallNonvirtualCharMethodA) (JNIEnv *, jobject, jclass,
jmethodID, jvalue *); /* 75 */
- jshort (JNICALL *CallNonvirtualShortMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...); /* 76 */
- jshort (JNICALL *CallNonvirtualShortMethodV) (JNIEnv *, jobject, jclass,
jmethodID, _Jv_va_list); /* 77 */
- jshort (JNICALL *CallNonvirtualShortMethodA) (JNIEnv *, jobject, jclass,
jmethodID, jvalue *); /* 78 */
- jint (JNICALL *CallNonvirtualIntMethod) (JNIEnv *, jobject,
jclass, jmethodID, ...); /* 79 */
- jint (JNICALL *CallNonvirtualIntMethodV) (JNIEnv *, jobject,
jclass, jmethodID, _Jv_va_list); /* 80 */
- jint (JNICALL *CallNonvirtualIntMethodA) (JNIEnv *, jobject,
jclass, jmethodID, jvalue *); /* 81 */
- jlong (JNICALL *CallNonvirtualLongMethod) (JNIEnv *, jobject,
jclass, jmethodID, ...); /* 82 */
- jlong (JNICALL *CallNonvirtualLongMethodV) (JNIEnv *, jobject, jclass,
jmethodID, _Jv_va_list); /* 83 */
- jlong (JNICALL *CallNonvirtualLongMethodA) (JNIEnv *, jobject, jclass,
jmethodID, jvalue *); /* 84 */
- jfloat (JNICALL *CallNonvirtualFloatMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...); /* 85 */
- jfloat (JNICALL *CallNonvirtualFloatMethodV) (JNIEnv *, jobject, jclass,
jmethodID, _Jv_va_list); /* 86 */
- jfloat (JNICALL *CallNonvirtualFloatMethodA) (JNIEnv *, jobject, jclass,
jmethodID, jvalue *); /* 87 */
- jdouble (JNICALL *CallNonvirtualDoubleMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...); /* 88 */
- jdouble (JNICALL *CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
jmethodID, _Jv_va_list); /* 89 */
- jdouble (JNICALL *CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
jmethodID, jvalue *); /* 90 */
- void (JNICALL *CallNonvirtualVoidMethod) (JNIEnv *, jobject,
jclass, jmethodID, ...); /* 91 */
- void (JNICALL *CallNonvirtualVoidMethodV) (JNIEnv *, jobject, jclass,
jmethodID, _Jv_va_list); /* 92 */
- void (JNICALL *CallNonvirtualVoidMethodA) (JNIEnv *, jobject, jclass,
jmethodID, jvalue *); /* 93 */
-
- jfieldID (JNICALL *GetFieldID) (JNIEnv *, jclass, const
char *, const char *); /* 94 */
-
- jobject (JNICALL *GetObjectField) (JNIEnv *, jobject,
jfieldID); /* 95 */
- jboolean (JNICALL *GetBooleanField) (JNIEnv *, jobject,
jfieldID); /* 96 */
- jbyte (JNICALL *GetByteField) (JNIEnv *, jobject,
jfieldID); /* 97 */
- jchar (JNICALL *GetCharField) (JNIEnv *, jobject,
jfieldID); /* 98 */
- jshort (JNICALL *GetShortField) (JNIEnv *, jobject,
jfieldID); /* 99 */
- jint (JNICALL *GetIntField) (JNIEnv *, jobject,
jfieldID); /* 100 */
- jlong (JNICALL *GetLongField) (JNIEnv *, jobject,
jfieldID); /* 101 */
- jfloat (JNICALL *GetFloatField) (JNIEnv *, jobject,
jfieldID); /* 102 */
- jdouble (JNICALL *GetDoubleField) (JNIEnv *, jobject,
jfieldID); /* 103 */
-
- void (JNICALL *SetObjectField) (JNIEnv *, jobject,
jfieldID, jobject); /* 104 */
- void (JNICALL *SetBooleanField) (JNIEnv *, jobject,
jfieldID, jboolean); /* 105 */
- void (JNICALL *SetByteField) (JNIEnv *, jobject,
jfieldID, jbyte); /* 106 */
- void (JNICALL *SetCharField) (JNIEnv *, jobject,
jfieldID, jchar); /* 107 */
- void (JNICALL *SetShortField) (JNIEnv *, jobject,
jfieldID, jshort); /* 108 */
- void (JNICALL *SetIntField) (JNIEnv *, jobject,
jfieldID, jint); /* 109 */
- void (JNICALL *SetLongField) (JNIEnv *, jobject,
jfieldID, jlong); /* 110 */
- void (JNICALL *SetFloatField) (JNIEnv *, jobject,
jfieldID, jfloat); /* 111 */
- void (JNICALL *SetDoubleField) (JNIEnv *, jobject,
jfieldID, jdouble); /* 112 */
-
- jmethodID (JNICALL *GetStaticMethodID) (JNIEnv *, jclass, const
char *, const char *); /* 113 */
-
- jobject (JNICALL *CallStaticObjectMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 114 */
- jobject (JNICALL *CallStaticObjectMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 115 */
- jobject (JNICALL *CallStaticObjectMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 116 */
- jboolean (JNICALL *CallStaticBooleanMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 117 */
- jboolean (JNICALL *CallStaticBooleanMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 118 */
- jboolean (JNICALL *CallStaticBooleanMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 119 */
- jbyte (JNICALL *CallStaticByteMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 120 */
- jbyte (JNICALL *CallStaticByteMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 121 */
- jbyte (JNICALL *CallStaticByteMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 122 */
- jchar (JNICALL *CallStaticCharMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 123 */
- jchar (JNICALL *CallStaticCharMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 124 */
- jchar (JNICALL *CallStaticCharMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 125 */
- jshort (JNICALL *CallStaticShortMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 126 */
- jshort (JNICALL *CallStaticShortMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 127 */
- jshort (JNICALL *CallStaticShortMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 128 */
- jint (JNICALL *CallStaticIntMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 129 */
- jint (JNICALL *CallStaticIntMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 130 */
- jint (JNICALL *CallStaticIntMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 131 */
- jlong (JNICALL *CallStaticLongMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 132 */
- jlong (JNICALL *CallStaticLongMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 133 */
- jlong (JNICALL *CallStaticLongMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 134 */
- jfloat (JNICALL *CallStaticFloatMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 135 */
- jfloat (JNICALL *CallStaticFloatMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 136 */
- jfloat (JNICALL *CallStaticFloatMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 137 */
- jdouble (JNICALL *CallStaticDoubleMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 138 */
- jdouble (JNICALL *CallStaticDoubleMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 139 */
- jdouble (JNICALL *CallStaticDoubleMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 140 */
- void (JNICALL *CallStaticVoidMethod) (JNIEnv *, jclass,
jmethodID, ...); /* 141 */
- void (JNICALL *CallStaticVoidMethodV) (JNIEnv *, jclass,
jmethodID, _Jv_va_list); /* 142 */
- void (JNICALL *CallStaticVoidMethodA) (JNIEnv *, jclass,
jmethodID, jvalue *); /* 143 */
-
- jfieldID (JNICALL *GetStaticFieldID) (JNIEnv *, jclass, const
char *, const char *); /* 144 */
-
- jobject (JNICALL *GetStaticObjectField) (JNIEnv *, jclass,
jfieldID); /* 145 */
- jboolean (JNICALL *GetStaticBooleanField) (JNIEnv *, jclass,
jfieldID); /* 146 */
- jbyte (JNICALL *GetStaticByteField) (JNIEnv *, jclass,
jfieldID); /* 147 */
- jchar (JNICALL *GetStaticCharField) (JNIEnv *, jclass,
jfieldID); /* 148 */
- jshort (JNICALL *GetStaticShortField) (JNIEnv *, jclass,
jfieldID); /* 149 */
- jint (JNICALL *GetStaticIntField) (JNIEnv *, jclass,
jfieldID); /* 150 */
- jlong (JNICALL *GetStaticLongField) (JNIEnv *, jclass,
jfieldID); /* 151 */
- jfloat (JNICALL *GetStaticFloatField) (JNIEnv *, jclass,
jfieldID); /* 152 */
- jdouble (JNICALL *GetStaticDoubleField) (JNIEnv *, jclass,
jfieldID); /* 153 */
-
- void (JNICALL *SetStaticObjectField) (JNIEnv *, jclass,
jfieldID, jobject); /* 154 */
- void (JNICALL *SetStaticBooleanField) (JNIEnv *, jclass,
jfieldID, jboolean); /* 155 */
- void (JNICALL *SetStaticByteField) (JNIEnv *, jclass,
jfieldID, jbyte); /* 156 */
- void (JNICALL *SetStaticCharField) (JNIEnv *, jclass,
jfieldID, jchar); /* 157 */
- void (JNICALL *SetStaticShortField) (JNIEnv *, jclass,
jfieldID, jshort); /* 158 */
- void (JNICALL *SetStaticIntField) (JNIEnv *, jclass,
jfieldID, jint); /* 159 */
- void (JNICALL *SetStaticLongField) (JNIEnv *, jclass,
jfieldID, jlong); /* 160 */
- void (JNICALL *SetStaticFloatField) (JNIEnv *, jclass,
jfieldID, jfloat); /* 161 */
- void (JNICALL *SetStaticDoubleField) (JNIEnv *, jclass,
jfieldID, jdouble); /* 162 */
-
- jstring (JNICALL *NewString) (JNIEnv *, const jchar *,
jsize); /* 163 */
- jsize (JNICALL *GetStringLength) (JNIEnv *, jstring);
/* 164 */
- const jchar * (JNICALL *GetStringChars) (JNIEnv *, jstring,
jboolean *); /* 165 */
- void (JNICALL *ReleaseStringChars) (JNIEnv *, jstring, const
jchar *); /* 166 */
- jstring (JNICALL *NewStringUTF) (JNIEnv *, const char *);
/* 167 */
- jsize (JNICALL *GetStringUTFLength) (JNIEnv *, jstring);
/* 168 */
- const char * (JNICALL *GetStringUTFChars) (JNIEnv *, jstring, jboolean
*); /* 169 */
- void (JNICALL *ReleaseStringUTFChars) (JNIEnv *, jstring, const
char *); /* 170 */
- jsize (JNICALL *GetArrayLength) (JNIEnv *, jarray);
/* 171 */
- jobjectArray (JNICALL *NewObjectArray) (JNIEnv *, jsize, jclass,
jobject); /* 172 */
- jobject (JNICALL *GetObjectArrayElement) (JNIEnv *, jobjectArray,
jsize); /* 173 */
- void (JNICALL *SetObjectArrayElement) (JNIEnv *, jobjectArray,
jsize, jobject); /* 174 */
-
- jbooleanArray (JNICALL *NewBooleanArray) (JNIEnv *, jsize);
/* 175 */
- jbyteArray (JNICALL *NewByteArray) (JNIEnv *, jsize);
/* 176 */
- jcharArray (JNICALL *NewCharArray) (JNIEnv *, jsize);
/* 177 */
- jshortArray (JNICALL *NewShortArray) (JNIEnv *, jsize);
/* 178 */
- jintArray (JNICALL *NewIntArray) (JNIEnv *, jsize);
/* 179 */
- jlongArray (JNICALL *NewLongArray) (JNIEnv *, jsize);
/* 180 */
- jfloatArray (JNICALL *NewFloatArray) (JNIEnv *, jsize);
/* 181 */
- jdoubleArray (JNICALL *NewDoubleArray) (JNIEnv *, jsize);
/* 182 */
-
- jboolean * (JNICALL *GetBooleanArrayElements) (JNIEnv *, jbooleanArray,
jboolean *); /* 183 */
- jbyte * (JNICALL *GetByteArrayElements) (JNIEnv *, jbyteArray,
jboolean *); /* 184 */
- jchar * (JNICALL *GetCharArrayElements) (JNIEnv *, jcharArray,
jboolean *); /* 185 */
- jshort * (JNICALL *GetShortArrayElements) (JNIEnv *, jshortArray,
jboolean *); /* 186 */
- jint * (JNICALL *GetIntArrayElements) (JNIEnv *, jintArray,
jboolean *); /* 187 */
- jlong * (JNICALL *GetLongArrayElements) (JNIEnv *, jlongArray,
jboolean *); /* 188 */
- jfloat * (JNICALL *GetFloatArrayElements) (JNIEnv *, jfloatArray,
jboolean *); /* 189 */
- jdouble * (JNICALL *GetDoubleArrayElements) (JNIEnv *, jdoubleArray,
jboolean *); /* 190 */
-
- void (JNICALL *ReleaseBooleanArrayElements) (JNIEnv *,
jbooleanArray, jboolean *, jint); /* 191 */
- void (JNICALL *ReleaseByteArrayElements) (JNIEnv *, jbyteArray,
jbyte *, jint); /* 192 */
- void (JNICALL *ReleaseCharArrayElements) (JNIEnv *, jcharArray,
jchar *, jint); /* 193 */
- void (JNICALL *ReleaseShortArrayElements) (JNIEnv *, jshortArray,
jshort *, jint); /* 194 */
- void (JNICALL *ReleaseIntArrayElements) (JNIEnv *, jintArray,
jint *, jint); /* 195 */
- void (JNICALL *ReleaseLongArrayElements) (JNIEnv *, jlongArray,
jlong *, jint); /* 196 */
- void (JNICALL *ReleaseFloatArrayElements) (JNIEnv *, jfloatArray,
jfloat *, jint); /* 197 */
- void (JNICALL *ReleaseDoubleArrayElements) (JNIEnv *, jdoubleArray,
jdouble *, jint); /* 198 */
-
- void (JNICALL *GetBooleanArrayRegion) (JNIEnv *,
jbooleanArray,jsize, jsize, jboolean *); /* 199 */
- void (JNICALL *GetByteArrayRegion) (JNIEnv *,
jbyteArray, jsize, jsize, jbyte *); /* 200 */
- void (JNICALL *GetCharArrayRegion) (JNIEnv *,
jcharArray, jsize, jsize, jchar *); /* 201 */
- void (JNICALL *GetShortArrayRegion) (JNIEnv *,
jshortArray, jsize, jsize, jshort *); /* 202 */
- void (JNICALL *GetIntArrayRegion) (JNIEnv *,
jintArray, jsize, jsize, jint *); /* 203 */
- void (JNICALL *GetLongArrayRegion) (JNIEnv *,
jlongArray, jsize, jsize, jlong *); /* 204 */
- void (JNICALL *GetFloatArrayRegion) (JNIEnv *,
jfloatArray, jsize, jsize, jfloat *); /* 205 */
- void (JNICALL *GetDoubleArrayRegion) (JNIEnv *,
jdoubleArray, jsize, jsize, jdouble *); /* 206 */
-
- void (JNICALL *SetBooleanArrayRegion) (JNIEnv *,
jbooleanArray, jsize, jsize, jboolean *); /* 207 */
- void (JNICALL *SetByteArrayRegion) (JNIEnv *,
jbyteArray, jsize, jsize, jbyte *); /* 208 */
- void (JNICALL *SetCharArrayRegion) (JNIEnv *,
jcharArray, jsize, jsize, jchar *); /* 209 */
- void (JNICALL *SetShortArrayRegion) (JNIEnv *,
jshortArray, jsize, jsize, jshort *); /* 210 */
- void (JNICALL *SetIntArrayRegion) (JNIEnv *,
jintArray, jsize, jsize, jint *); /* 211 */
- void (JNICALL *SetLongArrayRegion) (JNIEnv *,
jlongArray, jsize, jsize, jlong *); /* 212 */
- void (JNICALL *SetFloatArrayRegion) (JNIEnv *,
jfloatArray, jsize, jsize, jfloat *); /* 213 */
- void (JNICALL *SetDoubleArrayRegion) (JNIEnv *,
jdoubleArray, jsize, jsize, jdouble *); /* 214 */
-
- jint (JNICALL *RegisterNatives) (JNIEnv *, jclass, const
JNINativeMethod *, jint); /* 215 */
- jint (JNICALL *UnregisterNatives) (JNIEnv *, jclass);
/* 216 */
- jint (JNICALL *MonitorEnter) (JNIEnv *, jobject);
/* 217 */
- jint (JNICALL *MonitorExit) (JNIEnv *, jobject);
/* 218 */
- jint (JNICALL *GetJavaVM) (JNIEnv *, JavaVM **);
/* 219 */
-
- /* ---- JNI 1.2 functions ---- */
- void (JNICALL *GetStringRegion) (JNIEnv *, jstring, jsize,
jsize, jchar *); /* 220 */
- void (JNICALL *GetStringUTFRegion) (JNIEnv *, jstring, jsize,
jsize, char *); /* 221 */
+ void *reserved0;
+ void *reserved1;
+ void *reserved2;
+ void *reserved3;
- void * (JNICALL *GetPrimitiveArrayCritical) (JNIEnv *, jarray, jboolean
*); /* 222 */
- void (JNICALL *ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *,
jint); /* 223 */
+ jint (JNICALL *GetVersion) (JNIEnv *);
+ jclass (JNICALL *DefineClass) (JNIEnv *, const char *,
+ jobject, const jbyte *,
+ jsize);
+ jclass (JNICALL *FindClass) (JNIEnv *, const char *);
+
+ jmethodID (JNICALL *FromReflectedMethod) (JNIEnv *, jobject);
+ jfieldID (JNICALL *FromReflectedField) (JNIEnv *, jobject);
+ jobject (JNICALL *ToReflectedMethod) (JNIEnv *, jclass,
+ jmethodID, jboolean);
+
+ jclass (JNICALL *GetSuperclass) (JNIEnv *, jclass);
+ jboolean (JNICALL *IsAssignableFrom) (JNIEnv *, jclass, jclass);
+
+ jobject (JNICALL *ToReflectedField) (JNIEnv *, jclass, jfieldID,
+ jboolean);
+
+ jint (JNICALL *Throw) (JNIEnv *, jthrowable);
+ jint (JNICALL *ThrowNew) (JNIEnv *, jclass,
+ const char *);
+ jthrowable (JNICALL *ExceptionOccurred) (JNIEnv *);
+ void (JNICALL *ExceptionDescribe) (JNIEnv *);
+ void (JNICALL *ExceptionClear) (JNIEnv *);
+ void (JNICALL *FatalError) (JNIEnv *, const char *);
+
+ jint (JNICALL *PushLocalFrame) (JNIEnv *, jint);
+ jobject (JNICALL *PopLocalFrame) (JNIEnv *, jobject);
+
+ jobject (JNICALL *NewGlobalRef) (JNIEnv *, jobject);
+ void (JNICALL *DeleteGlobalRef) (JNIEnv *, jobject);
+ void (JNICALL *DeleteLocalRef) (JNIEnv *, jobject);
+ jboolean (JNICALL *IsSameObject) (JNIEnv *, jobject,
+ jobject);
+
+ jobject (JNICALL *NewLocalRef) (JNIEnv *, jobject);
+ jint (JNICALL *EnsureLocalCapacity) (JNIEnv *, jint);
+
+ jobject (JNICALL *AllocObject) (JNIEnv *, jclass);
+ jobject (JNICALL *NewObject) (JNIEnv *, jclass,
+ jmethodID, ...);
+ jobject (JNICALL *NewObjectV) (JNIEnv *, jclass,
+ jmethodID, va_list);
+ jobject (JNICALL *NewObjectA) (JNIEnv *, jclass,
+ jmethodID, jvalue *);
+
+ jclass (JNICALL *GetObjectClass) (JNIEnv *, jobject);
+ jboolean (JNICALL *IsInstanceOf) (JNIEnv *, jobject, jclass);
+ jmethodID (JNICALL *GetMethodID) (JNIEnv *, jclass,
+ const char *, const char
*);
+
+ jobject (JNICALL *CallObjectMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jobject (JNICALL *CallObjectMethodV) (JNIEnv *, jobject, jmethodID,
+ va_list);
+ jobject (JNICALL *CallObjectMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jboolean (JNICALL *CallBooleanMethod) (JNIEnv *, jobject,
jmethodID,
+ ...);
+ jboolean (JNICALL *CallBooleanMethodV) (JNIEnv *, jobject, jmethodID,
+ va_list);
+ jboolean (JNICALL *CallBooleanMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jbyte (JNICALL *CallByteMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jbyte (JNICALL *CallByteMethodV) (JNIEnv *, jobject, jmethodID,
+ va_list);
+ jbyte (JNICALL *CallByteMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jchar (JNICALL *CallCharMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jchar (JNICALL *CallCharMethodV) (JNIEnv *, jobject, jmethodID,
+ va_list);
+ jchar (JNICALL *CallCharMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jshort (JNICALL *CallShortMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jshort (JNICALL *CallShortMethodV) (JNIEnv *, jobject, jmethodID,
+ va_list);
+ jshort (JNICALL *CallShortMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jint (JNICALL *CallIntMethod) (JNIEnv *, jobject,
jmethodID, ...);
+ jint (JNICALL *CallIntMethodV) (JNIEnv *, jobject,
jmethodID,
+ va_list);
+ jint (JNICALL *CallIntMethodA) (JNIEnv *, jobject,
jmethodID,
+ jvalue *);
+ jlong (JNICALL *CallLongMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jlong (JNICALL *CallLongMethodV) (JNIEnv *, jobject, jmethodID,
+ va_list);
+ jlong (JNICALL *CallLongMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jfloat (JNICALL *CallFloatMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jfloat (JNICALL *CallFloatMethodV) (JNIEnv *, jobject, jmethodID,
+ va_list);
+ jfloat (JNICALL *CallFloatMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ jdouble (JNICALL *CallDoubleMethod) (JNIEnv *, jobject, jmethodID, ...);
+ jdouble (JNICALL *CallDoubleMethodV) (JNIEnv *, jobject, jmethodID,
+ va_list);
+ jdouble (JNICALL *CallDoubleMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+ void (JNICALL *CallVoidMethod) (JNIEnv *, jobject, jmethodID, ...);
+ void (JNICALL *CallVoidMethodV) (JNIEnv *, jobject, jmethodID,
+ va_list);
+ void (JNICALL *CallVoidMethodA) (JNIEnv *, jobject, jmethodID,
+ jvalue *);
+
+ jobject (JNICALL *CallNonvirtualObjectMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jobject (JNICALL *CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, va_list);
+ jobject (JNICALL *CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jboolean (JNICALL *CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jboolean (JNICALL *CallNonvirtualBooleanMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, va_list);
+ jboolean (JNICALL *CallNonvirtualBooleanMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jbyte (JNICALL *CallNonvirtualByteMethod) (JNIEnv *, jobject,
jclass,
+ jmethodID, ...);
+ jbyte (JNICALL *CallNonvirtualByteMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, va_list);
+ jbyte (JNICALL *CallNonvirtualByteMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jchar (JNICALL *CallNonvirtualCharMethod) (JNIEnv *, jobject,
jclass,
+ jmethodID, ...);
+ jchar (JNICALL *CallNonvirtualCharMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, va_list);
+ jchar (JNICALL *CallNonvirtualCharMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jshort (JNICALL *CallNonvirtualShortMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jshort (JNICALL *CallNonvirtualShortMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, va_list);
+ jshort (JNICALL *CallNonvirtualShortMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jint (JNICALL *CallNonvirtualIntMethod) (JNIEnv *, jobject,
jclass,
+ jmethodID, ...);
+ jint (JNICALL *CallNonvirtualIntMethodV) (JNIEnv *, jobject,
jclass,
+ jmethodID, va_list);
+ jint (JNICALL *CallNonvirtualIntMethodA) (JNIEnv *, jobject,
jclass,
+ jmethodID, jvalue *);
+ jlong (JNICALL *CallNonvirtualLongMethod) (JNIEnv *, jobject,
jclass,
+ jmethodID, ...);
+ jlong (JNICALL *CallNonvirtualLongMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, va_list);
+ jlong (JNICALL *CallNonvirtualLongMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jfloat (JNICALL *CallNonvirtualFloatMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jfloat (JNICALL *CallNonvirtualFloatMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, va_list);
+ jfloat (JNICALL *CallNonvirtualFloatMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ jdouble (JNICALL *CallNonvirtualDoubleMethod) (JNIEnv *, jobject, jclass,
+ jmethodID, ...);
+ jdouble (JNICALL *CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, va_list);
+ jdouble (JNICALL *CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+ void (JNICALL *CallNonvirtualVoidMethod) (JNIEnv *, jobject,
jclass,
+ jmethodID, ...);
+ void (JNICALL *CallNonvirtualVoidMethodV) (JNIEnv *, jobject, jclass,
+ jmethodID, va_list);
+ void (JNICALL *CallNonvirtualVoidMethodA) (JNIEnv *, jobject, jclass,
+ jmethodID, jvalue *);
+
+ jfieldID (JNICALL *GetFieldID) (JNIEnv *, jclass, const char *,
+ const char *);
+
+ jobject (JNICALL *GetObjectField) (JNIEnv *, jobject, jfieldID);
+ jboolean (JNICALL *GetBooleanField) (JNIEnv *, jobject, jfieldID);
+ jbyte (JNICALL *GetByteField) (JNIEnv *, jobject, jfieldID);
+ jchar (JNICALL *GetCharField) (JNIEnv *, jobject, jfieldID);
+ jshort (JNICALL *GetShortField) (JNIEnv *, jobject, jfieldID);
+ jint (JNICALL *GetIntField) (JNIEnv *, jobject, jfieldID);
+ jlong (JNICALL *GetLongField) (JNIEnv *, jobject, jfieldID);
+ jfloat (JNICALL *GetFloatField) (JNIEnv *, jobject, jfieldID);
+ jdouble (JNICALL *GetDoubleField) (JNIEnv *, jobject, jfieldID);
+
+ void (JNICALL *SetObjectField) (JNIEnv *, jobject,
+ jfieldID, jobject);
+ void (JNICALL *SetBooleanField) (JNIEnv *, jobject,
+ jfieldID, jboolean);
+ void (JNICALL *SetByteField) (JNIEnv *, jobject,
+ jfieldID, jbyte);
+ void (JNICALL *SetCharField) (JNIEnv *, jobject,
+ jfieldID, jchar);
+ void (JNICALL *SetShortField) (JNIEnv *, jobject,
+ jfieldID, jshort);
+ void (JNICALL *SetIntField) (JNIEnv *, jobject,
+ jfieldID, jint);
+ void (JNICALL *SetLongField) (JNIEnv *, jobject,
+ jfieldID, jlong);
+ void (JNICALL *SetFloatField) (JNIEnv *, jobject,
+ jfieldID, jfloat);
+ void (JNICALL *SetDoubleField) (JNIEnv *, jobject,
+ jfieldID, jdouble);
+
+ jmethodID (JNICALL *GetStaticMethodID) (JNIEnv *, jclass, const char *,
+ const char *);
+
+ jobject (JNICALL *CallStaticObjectMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jobject (JNICALL *CallStaticObjectMethodV) (JNIEnv *, jclass, jmethodID,
+ va_list);
+ jobject (JNICALL *CallStaticObjectMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jboolean (JNICALL *CallStaticBooleanMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jboolean (JNICALL *CallStaticBooleanMethodV) (JNIEnv *, jclass, jmethodID,
+ va_list);
+ jboolean (JNICALL *CallStaticBooleanMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jbyte (JNICALL *CallStaticByteMethod) (JNIEnv *, jclass,
jmethodID,
+ ...);
+ jbyte (JNICALL *CallStaticByteMethodV) (JNIEnv *, jclass, jmethodID,
+ va_list);
+ jbyte (JNICALL *CallStaticByteMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jchar (JNICALL *CallStaticCharMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jchar (JNICALL *CallStaticCharMethodV) (JNIEnv *, jclass, jmethodID,
+ va_list);
+ jchar (JNICALL *CallStaticCharMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jshort (JNICALL *CallStaticShortMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jshort (JNICALL *CallStaticShortMethodV) (JNIEnv *, jclass, jmethodID,
+ va_list);
+ jshort (JNICALL *CallStaticShortMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jint (JNICALL *CallStaticIntMethod) (JNIEnv *, jclass,
jmethodID,
+ ...);
+ jint (JNICALL *CallStaticIntMethodV) (JNIEnv *, jclass,
jmethodID,
+ va_list);
+ jint (JNICALL *CallStaticIntMethodA) (JNIEnv *, jclass,
jmethodID,
+ jvalue *);
+ jlong (JNICALL *CallStaticLongMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jlong (JNICALL *CallStaticLongMethodV) (JNIEnv *, jclass, jmethodID,
+ va_list);
+ jlong (JNICALL *CallStaticLongMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jfloat (JNICALL *CallStaticFloatMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jfloat (JNICALL *CallStaticFloatMethodV) (JNIEnv *, jclass, jmethodID,
+ va_list);
+ jfloat (JNICALL *CallStaticFloatMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ jdouble (JNICALL *CallStaticDoubleMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ jdouble (JNICALL *CallStaticDoubleMethodV) (JNIEnv *, jclass, jmethodID,
+ va_list);
+ jdouble (JNICALL *CallStaticDoubleMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+ void (JNICALL *CallStaticVoidMethod) (JNIEnv *, jclass, jmethodID,
+ ...);
+ void (JNICALL *CallStaticVoidMethodV) (JNIEnv *, jclass, jmethodID,
+ va_list);
+ void (JNICALL *CallStaticVoidMethodA) (JNIEnv *, jclass, jmethodID,
+ jvalue *);
+
+ jfieldID (JNICALL *GetStaticFieldID) (JNIEnv *, jclass, const char *,
+ const char *);
+
+ jobject (JNICALL *GetStaticObjectField) (JNIEnv *, jclass, jfieldID);
+ jboolean (JNICALL *GetStaticBooleanField) (JNIEnv *, jclass, jfieldID);
+ jbyte (JNICALL *GetStaticByteField) (JNIEnv *, jclass,
jfieldID);
+ jchar (JNICALL *GetStaticCharField) (JNIEnv *, jclass,
jfieldID);
+ jshort (JNICALL *GetStaticShortField) (JNIEnv *, jclass, jfieldID);
+ jint (JNICALL *GetStaticIntField) (JNIEnv *, jclass, jfieldID);
+ jlong (JNICALL *GetStaticLongField) (JNIEnv *, jclass,
jfieldID);
+ jfloat (JNICALL *GetStaticFloatField) (JNIEnv *, jclass, jfieldID);
+ jdouble (JNICALL *GetStaticDoubleField) (JNIEnv *, jclass, jfieldID);
+
+ void (JNICALL *SetStaticObjectField) (JNIEnv *, jclass,
+ jfieldID, jobject);
+ void (JNICALL *SetStaticBooleanField) (JNIEnv *, jclass,
+ jfieldID, jboolean);
+ void (JNICALL *SetStaticByteField) (JNIEnv *, jclass,
+ jfieldID, jbyte);
+ void (JNICALL *SetStaticCharField) (JNIEnv *, jclass,
+ jfieldID, jchar);
+ void (JNICALL *SetStaticShortField) (JNIEnv *, jclass,
+ jfieldID, jshort);
+ void (JNICALL *SetStaticIntField) (JNIEnv *, jclass,
+ jfieldID, jint);
+ void (JNICALL *SetStaticLongField) (JNIEnv *, jclass,
+ jfieldID, jlong);
+ void (JNICALL *SetStaticFloatField) (JNIEnv *, jclass,
+ jfieldID, jfloat);
+ void (JNICALL *SetStaticDoubleField) (JNIEnv *, jclass,
+ jfieldID, jdouble);
+
+ jstring (JNICALL *NewString) (JNIEnv *, const jchar *, jsize);
+ jsize (JNICALL *GetStringLength) (JNIEnv *, jstring);
+ const jchar * (JNICALL *GetStringChars) (JNIEnv *, jstring, jboolean *);
+ void (JNICALL *ReleaseStringChars) (JNIEnv *, jstring, const jchar *);
+ jstring (JNICALL *NewStringUTF) (JNIEnv *, const char *);
+ jsize (JNICALL *GetStringUTFLength) (JNIEnv *, jstring);
+ const char * (JNICALL *GetStringUTFChars) (JNIEnv *, jstring, jboolean *);
+ void (JNICALL *ReleaseStringUTFChars) (JNIEnv *, jstring, const char *);
+ jsize (JNICALL *GetArrayLength) (JNIEnv *, jarray);
+ jobjectArray (JNICALL *NewObjectArray) (JNIEnv *, jsize, jclass, jobject);
+ jobject (JNICALL *GetObjectArrayElement) (JNIEnv *, jobjectArray, jsize);
+ void (JNICALL *SetObjectArrayElement) (JNIEnv *, jobjectArray, jsize,
+ jobject);
+
+ jbooleanArray (JNICALL *NewBooleanArray) (JNIEnv *, jsize);
+ jbyteArray (JNICALL *NewByteArray) (JNIEnv *, jsize);
+ jcharArray (JNICALL *NewCharArray) (JNIEnv *, jsize);
+ jshortArray (JNICALL *NewShortArray) (JNIEnv *, jsize);
+ jintArray (JNICALL *NewIntArray) (JNIEnv *, jsize);
+ jlongArray (JNICALL *NewLongArray) (JNIEnv *, jsize);
+ jfloatArray (JNICALL *NewFloatArray) (JNIEnv *, jsize);
+ jdoubleArray (JNICALL *NewDoubleArray) (JNIEnv *, jsize);
+
+ jboolean * (JNICALL *GetBooleanArrayElements) (JNIEnv *, jbooleanArray,
+ jboolean *);
+ jbyte * (JNICALL *GetByteArrayElements) (JNIEnv *, jbyteArray,
+ jboolean *);
+ jchar * (JNICALL *GetCharArrayElements) (JNIEnv *, jcharArray,
+ jboolean *);
+ jshort * (JNICALL *GetShortArrayElements) (JNIEnv *, jshortArray,
+ jboolean *);
+ jint * (JNICALL *GetIntArrayElements) (JNIEnv *, jintArray,
+ jboolean *);
+ jlong * (JNICALL *GetLongArrayElements) (JNIEnv *, jlongArray,
+ jboolean *);
+ jfloat * (JNICALL *GetFloatArrayElements) (JNIEnv *, jfloatArray,
+ jboolean *);
+ jdouble * (JNICALL *GetDoubleArrayElements) (JNIEnv *, jdoubleArray,
+ jboolean *);
+
+ void (JNICALL *ReleaseBooleanArrayElements) (JNIEnv *, jbooleanArray,
+ jboolean *, jint);
+ void (JNICALL *ReleaseByteArrayElements) (JNIEnv *, jbyteArray,
+ jbyte *, jint);
+ void (JNICALL *ReleaseCharArrayElements) (JNIEnv *, jcharArray,
+ jchar *, jint);
+ void (JNICALL *ReleaseShortArrayElements) (JNIEnv *, jshortArray,
+ jshort *, jint);
+ void (JNICALL *ReleaseIntArrayElements) (JNIEnv *, jintArray,
+ jint *, jint);
+ void (JNICALL *ReleaseLongArrayElements) (JNIEnv *, jlongArray,
+ jlong *, jint);
+ void (JNICALL *ReleaseFloatArrayElements) (JNIEnv *, jfloatArray,
+ jfloat *, jint);
+ void (JNICALL *ReleaseDoubleArrayElements) (JNIEnv *, jdoubleArray,
+ jdouble *, jint);
+
+ void (JNICALL *GetBooleanArrayRegion) (JNIEnv *,
jbooleanArray,
+ jsize, jsize, jboolean *);
+ void (JNICALL *GetByteArrayRegion) (JNIEnv *,
jbyteArray,
+ jsize, jsize, jbyte *);
+ void (JNICALL *GetCharArrayRegion) (JNIEnv *,
jcharArray,
+ jsize, jsize, jchar *);
+ void (JNICALL *GetShortArrayRegion) (JNIEnv *,
jshortArray,
+ jsize, jsize, jshort *);
+ void (JNICALL *GetIntArrayRegion) (JNIEnv *, jintArray,
+ jsize, jsize, jint *);
+ void (JNICALL *GetLongArrayRegion) (JNIEnv *,
jlongArray,
+ jsize, jsize, jlong *);
+ void (JNICALL *GetFloatArrayRegion) (JNIEnv *,
jfloatArray,
+ jsize, jsize, jfloat *);
+ void (JNICALL *GetDoubleArrayRegion) (JNIEnv *,
jdoubleArray,
+ jsize, jsize, jdouble *);
+
+ void (JNICALL *SetBooleanArrayRegion) (JNIEnv *,
jbooleanArray,
+ jsize, jsize, jboolean *);
+ void (JNICALL *SetByteArrayRegion) (JNIEnv *,
jbyteArray,
+ jsize, jsize, jbyte *);
+ void (JNICALL *SetCharArrayRegion) (JNIEnv *,
jcharArray,
+ jsize, jsize, jchar *);
+ void (JNICALL *SetShortArrayRegion) (JNIEnv *,
jshortArray,
+ jsize, jsize, jshort *);
+ void (JNICALL *SetIntArrayRegion) (JNIEnv *, jintArray,
+ jsize, jsize, jint *);
+ void (JNICALL *SetLongArrayRegion) (JNIEnv *,
jlongArray,
+ jsize, jsize, jlong *);
+ void (JNICALL *SetFloatArrayRegion) (JNIEnv *,
jfloatArray,
+ jsize, jsize, jfloat *);
+ void (JNICALL *SetDoubleArrayRegion) (JNIEnv *,
jdoubleArray,
+ jsize, jsize, jdouble *);
+
+ jint (JNICALL *RegisterNatives) (JNIEnv *, jclass,
+ const JNINativeMethod *,
+ jint);
+ jint (JNICALL *UnregisterNatives) (JNIEnv *, jclass);
+ jint (JNICALL *MonitorEnter) (JNIEnv *, jobject);
+ jint (JNICALL *MonitorExit) (JNIEnv *, jobject);
+ jint (JNICALL *GetJavaVM) (JNIEnv *, JavaVM **);
- const jchar * (JNICALL *GetStringCritical) (JNIEnv *, jstring,
jboolean *); /* 224 */
- void (JNICALL *ReleaseStringCritical) (JNIEnv *, jstring, const
jchar *); /* 225 */
+ /* ---- JNI 1.2 functions ---- */
+ void (JNICALL *GetStringRegion) (JNIEnv *, jstring, jsize,
+ jsize, jchar *);
+ void (JNICALL *GetStringUTFRegion) (JNIEnv *, jstring, jsize,
+ jsize, char *);
+
+ void * (JNICALL *GetPrimitiveArrayCritical) (JNIEnv *, jarray,
+ jboolean *);
+ void (JNICALL *ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *,
+ jint);
+
+ const jchar * (JNICALL *GetStringCritical) (JNIEnv *, jstring,
+ jboolean *);
+ void (JNICALL *ReleaseStringCritical) (JNIEnv *, jstring,
+ const jchar *);
- jweak (JNICALL *NewWeakGlobalRef) (JNIEnv *, jobject);
/* 226 */
- void (JNICALL *DeleteWeakGlobalRef) (JNIEnv *, jweak);
/* 227 */
+ jweak (JNICALL *NewWeakGlobalRef) (JNIEnv *, jobject);
+ void (JNICALL *DeleteWeakGlobalRef) (JNIEnv *, jweak);
- jboolean (JNICALL *ExceptionCheck) (JNIEnv *);
/* 228 */
+ jboolean (JNICALL *ExceptionCheck) (JNIEnv *);
/* ---- JNI 1.4 functions ---- */
- jobject (JNICALL *NewDirectByteBuffer) (JNIEnv *, void *, jlong);
/* 229 */
- void * (JNICALL *GetDirectBufferAddress) (JNIEnv *, jobject);
/* 230 */
- long (JNICALL *GetDirectBufferCapacity) (JNIEnv *, jobject);
/* 231 */
-
+ jobject (JNICALL *NewDirectByteBuffer) (JNIEnv *, void *, jlong);
+ void * (JNICALL *GetDirectBufferAddress) (JNIEnv *, jobject);
+ jlong (JNICALL *GetDirectBufferCapacity) (JNIEnv *, jobject);
};
#ifdef __cplusplus
-} /* Extern "C" */
-struct _Jv_JNIEnv
+class _Jv_JNIEnv
{
+public:
/* The method table. */
- const struct JNINativeInterface *p;
+ struct JNINativeInterface *p;
+
+#ifdef _CLASSPATH_JNIENV_CONTENTS
+ _CLASSPATH_JNIENV_CONTENTS
+#endif
jint GetVersion ()
{ return p->GetVersion (this); }
- jclass DefineClass (const char* char0, jobject obj0, const jbyte * val1,
jsize val2)
- { return p->DefineClass (this, char0, obj0, val1, val2); }
+ jclass DefineClass (const char *name, jobject obj0, const jbyte * val1,
+ jsize val2)
+ { return p->DefineClass (this, name, obj0, val1, val2); }
jclass FindClass (const char * val0)
{ return p->FindClass (this, val0); }
@@ -549,14 +717,14 @@
jobject NewObject (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jobject result = p->NewObjectV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jobject NewObjectV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
+ jobject NewObjectV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->NewObjectV (this, cl0, meth1, val2); }
jobject NewObjectA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -573,14 +741,14 @@
jobject CallObjectMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jobject result = p->CallObjectMethodV (this, obj0, meth1, args);
va_end (args);
return result;
}
- jobject CallObjectMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ jobject CallObjectMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallObjectMethodV (this, obj0, meth1, val2); }
jobject CallObjectMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -588,14 +756,14 @@
jboolean CallBooleanMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jboolean result = p->CallBooleanMethodV (this, obj0, meth1, args);
va_end (args);
return result;
}
- jboolean CallBooleanMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ jboolean CallBooleanMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallBooleanMethodV (this, obj0, meth1, val2); }
jboolean CallBooleanMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -603,14 +771,14 @@
jbyte CallByteMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jbyte result = p->CallByteMethodV (this, obj0, meth1, args);
va_end (args);
return result;
}
- jbyte CallByteMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ jbyte CallByteMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallByteMethodV (this, obj0, meth1, val2); }
jbyte CallByteMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -618,14 +786,14 @@
jchar CallCharMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jchar result = p->CallCharMethodV (this, obj0, meth1, args);
va_end (args);
return result;
}
- jchar CallCharMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ jchar CallCharMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallCharMethodV (this, obj0, meth1, val2); }
jchar CallCharMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -633,14 +801,14 @@
jshort CallShortMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jshort result = p->CallShortMethodV (this, obj0, meth1, args);
va_end (args);
return result;
}
- jshort CallShortMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ jshort CallShortMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallShortMethodV (this, obj0, meth1, val2); }
jshort CallShortMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -648,14 +816,14 @@
jint CallIntMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jint result = p->CallIntMethodV (this, obj0, meth1, args);
va_end (args);
return result;
}
- jint CallIntMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ jint CallIntMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallIntMethodV (this, obj0, meth1, val2); }
jint CallIntMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -663,14 +831,14 @@
jlong CallLongMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jlong result = p->CallLongMethodV (this, obj0, meth1, args);
va_end (args);
return result;
}
- jlong CallLongMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ jlong CallLongMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallLongMethodV (this, obj0, meth1, val2); }
jlong CallLongMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -678,14 +846,14 @@
jfloat CallFloatMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jfloat result = p->CallFloatMethodV (this, obj0, meth1, args);
va_end (args);
return result;
}
- jfloat CallFloatMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ jfloat CallFloatMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallFloatMethodV (this, obj0, meth1, val2); }
jfloat CallFloatMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -693,14 +861,14 @@
jdouble CallDoubleMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jdouble result = p->CallDoubleMethodV (this, obj0, meth1, args);
va_end (args);
return result;
}
- jdouble CallDoubleMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ jdouble CallDoubleMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallDoubleMethodV (this, obj0, meth1, val2); }
jdouble CallDoubleMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -708,13 +876,13 @@
void CallVoidMethod (jobject obj0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
p->CallVoidMethodV (this, obj0, meth1, args);
va_end (args);
}
- void CallVoidMethodV (jobject obj0, jmethodID meth1, _Jv_va_list val2)
+ void CallVoidMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ p->CallVoidMethodV (this, obj0, meth1, val2); }
void CallVoidMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
@@ -722,14 +890,14 @@
jobject CallNonvirtualObjectMethod (jobject obj0, jclass cl1, jmethodID
meth2, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
jobject result = p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2,
args);
va_end (args);
return result;
}
- jobject CallNonvirtualObjectMethodV (jobject obj0, jclass cl1, jmethodID
meth2, _Jv_va_list val3)
+ jobject CallNonvirtualObjectMethodV (jobject obj0, jclass cl1, jmethodID
meth2, va_list val3)
{ return p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, val3); }
jobject CallNonvirtualObjectMethodA (jobject obj0, jclass cl1, jmethodID
meth2, jvalue * val3)
@@ -737,14 +905,14 @@
jboolean CallNonvirtualBooleanMethod (jobject obj0, jclass cl1, jmethodID
meth2, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
jboolean result = p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2,
args);
va_end (args);
return result;
}
- jboolean CallNonvirtualBooleanMethodV (jobject obj0, jclass cl1, jmethodID
meth2, _Jv_va_list val3)
+ jboolean CallNonvirtualBooleanMethodV (jobject obj0, jclass cl1, jmethodID
meth2, va_list val3)
{ return p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, val3); }
jboolean CallNonvirtualBooleanMethodA (jobject obj0, jclass cl1, jmethodID
meth2, jvalue * val3)
@@ -752,14 +920,14 @@
jbyte CallNonvirtualByteMethod (jobject obj0, jclass cl1, jmethodID meth2,
...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
jbyte result = p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, args);
va_end (args);
return result;
}
- jbyte CallNonvirtualByteMethodV (jobject obj0, jclass cl1, jmethodID meth2,
_Jv_va_list val3)
+ jbyte CallNonvirtualByteMethodV (jobject obj0, jclass cl1, jmethodID meth2,
va_list val3)
{ return p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, val3); }
jbyte CallNonvirtualByteMethodA (jobject obj0, jclass cl1, jmethodID meth2,
jvalue * val3)
@@ -767,14 +935,14 @@
jchar CallNonvirtualCharMethod (jobject obj0, jclass cl1, jmethodID meth2,
...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
jchar result = p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, args);
va_end (args);
return result;
}
- jchar CallNonvirtualCharMethodV (jobject obj0, jclass cl1, jmethodID meth2,
_Jv_va_list val3)
+ jchar CallNonvirtualCharMethodV (jobject obj0, jclass cl1, jmethodID meth2,
va_list val3)
{ return p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, val3); }
jchar CallNonvirtualCharMethodA (jobject obj0, jclass cl1, jmethodID meth2,
jvalue * val3)
@@ -782,14 +950,14 @@
jshort CallNonvirtualShortMethod (jobject obj0, jclass cl1, jmethodID meth2,
...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
jshort result = p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2,
args);
va_end (args);
return result;
}
- jshort CallNonvirtualShortMethodV (jobject obj0, jclass cl1, jmethodID
meth2, _Jv_va_list val3)
+ jshort CallNonvirtualShortMethodV (jobject obj0, jclass cl1, jmethodID
meth2, va_list val3)
{ return p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, val3); }
jshort CallNonvirtualShortMethodA (jobject obj0, jclass cl1, jmethodID
meth2, jvalue * val3)
@@ -797,14 +965,14 @@
jint CallNonvirtualIntMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
jint result = p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, args);
va_end (args);
return result;
}
- jint CallNonvirtualIntMethodV (jobject obj0, jclass cl1, jmethodID meth2,
_Jv_va_list val3)
+ jint CallNonvirtualIntMethodV (jobject obj0, jclass cl1, jmethodID meth2,
va_list val3)
{ return p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, val3); }
jint CallNonvirtualIntMethodA (jobject obj0, jclass cl1, jmethodID meth2,
jvalue * val3)
@@ -812,14 +980,14 @@
jlong CallNonvirtualLongMethod (jobject obj0, jclass cl1, jmethodID meth2,
...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
jlong result = p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, args);
va_end (args);
return result;
}
- jlong CallNonvirtualLongMethodV (jobject obj0, jclass cl1, jmethodID meth2,
_Jv_va_list val3)
+ jlong CallNonvirtualLongMethodV (jobject obj0, jclass cl1, jmethodID meth2,
va_list val3)
{ return p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, val3); }
jlong CallNonvirtualLongMethodA (jobject obj0, jclass cl1, jmethodID meth2,
jvalue * val3)
@@ -827,14 +995,14 @@
jfloat CallNonvirtualFloatMethod (jobject obj0, jclass cl1, jmethodID meth2,
...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
jfloat result = p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2,
args);
va_end (args);
return result;
}
- jfloat CallNonvirtualFloatMethodV (jobject obj0, jclass cl1, jmethodID
meth2, _Jv_va_list val3)
+ jfloat CallNonvirtualFloatMethodV (jobject obj0, jclass cl1, jmethodID
meth2, va_list val3)
{ return p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, val3); }
jfloat CallNonvirtualFloatMethodA (jobject obj0, jclass cl1, jmethodID
meth2, jvalue * val3)
@@ -842,14 +1010,14 @@
jdouble CallNonvirtualDoubleMethod (jobject obj0, jclass cl1, jmethodID
meth2, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
jdouble result = p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2,
args);
va_end (args);
return result;
}
- jdouble CallNonvirtualDoubleMethodV (jobject obj0, jclass cl1, jmethodID
meth2, _Jv_va_list val3)
+ jdouble CallNonvirtualDoubleMethodV (jobject obj0, jclass cl1, jmethodID
meth2, va_list val3)
{ return p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, val3); }
jdouble CallNonvirtualDoubleMethodA (jobject obj0, jclass cl1, jmethodID
meth2, jvalue * val3)
@@ -857,13 +1025,13 @@
void CallNonvirtualVoidMethod (jobject obj0, jclass cl1, jmethodID meth2,
...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth2);
p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, args);
va_end (args);
}
- void CallNonvirtualVoidMethodV (jobject obj0, jclass cl1, jmethodID meth2,
_Jv_va_list val3)
+ void CallNonvirtualVoidMethodV (jobject obj0, jclass cl1, jmethodID meth2,
va_list val3)
{ p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, val3); }
void CallNonvirtualVoidMethodA (jobject obj0, jclass cl1, jmethodID meth2,
jvalue * val3)
@@ -931,14 +1099,14 @@
jobject CallStaticObjectMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jobject result = p->CallStaticObjectMethodV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jobject CallStaticObjectMethodV (jclass cl0, jmethodID meth1, _Jv_va_list
val2)
+ jobject CallStaticObjectMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticObjectMethodV (this, cl0, meth1, val2); }
jobject CallStaticObjectMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -946,14 +1114,14 @@
jboolean CallStaticBooleanMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jboolean result = p->CallStaticBooleanMethodV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jboolean CallStaticBooleanMethodV (jclass cl0, jmethodID meth1, _Jv_va_list
val2)
+ jboolean CallStaticBooleanMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticBooleanMethodV (this, cl0, meth1, val2); }
jboolean CallStaticBooleanMethodA (jclass cl0, jmethodID meth1, jvalue *
val2)
@@ -961,14 +1129,14 @@
jbyte CallStaticByteMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jbyte result = p->CallStaticByteMethodV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jbyte CallStaticByteMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
+ jbyte CallStaticByteMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticByteMethodV (this, cl0, meth1, val2); }
jbyte CallStaticByteMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -976,14 +1144,14 @@
jchar CallStaticCharMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jchar result = p->CallStaticCharMethodV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jchar CallStaticCharMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
+ jchar CallStaticCharMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticCharMethodV (this, cl0, meth1, val2); }
jchar CallStaticCharMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -991,14 +1159,14 @@
jshort CallStaticShortMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jshort result = p->CallStaticShortMethodV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jshort CallStaticShortMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
+ jshort CallStaticShortMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticShortMethodV (this, cl0, meth1, val2); }
jshort CallStaticShortMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -1006,14 +1174,14 @@
jint CallStaticIntMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jint result = p->CallStaticIntMethodV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jint CallStaticIntMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
+ jint CallStaticIntMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticIntMethodV (this, cl0, meth1, val2); }
jint CallStaticIntMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -1021,14 +1189,14 @@
jlong CallStaticLongMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jlong result = p->CallStaticLongMethodV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jlong CallStaticLongMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
+ jlong CallStaticLongMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticLongMethodV (this, cl0, meth1, val2); }
jlong CallStaticLongMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -1036,14 +1204,14 @@
jfloat CallStaticFloatMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jfloat result = p->CallStaticFloatMethodV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jfloat CallStaticFloatMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
+ jfloat CallStaticFloatMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticFloatMethodV (this, cl0, meth1, val2); }
jfloat CallStaticFloatMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -1051,14 +1219,14 @@
jdouble CallStaticDoubleMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
jdouble result = p->CallStaticDoubleMethodV (this, cl0, meth1, args);
va_end (args);
return result;
}
- jdouble CallStaticDoubleMethodV (jclass cl0, jmethodID meth1, _Jv_va_list
val2)
+ jdouble CallStaticDoubleMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticDoubleMethodV (this, cl0, meth1, val2); }
jdouble CallStaticDoubleMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -1066,13 +1234,13 @@
void CallStaticVoidMethod (jclass cl0, jmethodID meth1, ...)
{
- _Jv_va_list args;
+ va_list args;
va_start (args, meth1);
p->CallStaticVoidMethodV (this, cl0, meth1, args);
va_end (args);
}
- void CallStaticVoidMethodV (jclass cl0, jmethodID meth1, _Jv_va_list val2)
+ void CallStaticVoidMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ p->CallStaticVoidMethodV (this, cl0, meth1, val2); }
void CallStaticVoidMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
@@ -1138,7 +1306,7 @@
jstring NewString (const jchar * val0, jsize val1)
{ return p->NewString (this, val0, val1); }
- jsize GetStringLength (jstring val0)
+ jint GetStringLength (jstring val0)
{ return p->GetStringLength (this, val0); }
const jchar * GetStringChars (jstring val0, jboolean * val1)
@@ -1333,16 +1501,16 @@
jboolean ExceptionCheck ()
{ return p->ExceptionCheck (this); }
- jobject NewDirectByteBuffer (void * val1, jlong val2)
- { return p->NewDirectByteBuffer (this, val1, val2); }
+ jobject NewDirectByteBuffer (void *addr, jlong capacity)
+ { return p->NewDirectByteBuffer (this, addr, capacity); }
- void * GetDirectBufferAddress (jobject val1)
- { return p->GetDirectBufferAddress (this, val1); }
-
- long GetDirectBufferCapacity (jobject val1)
- { return p->GetDirectBufferCapacity (this, val1); }
+ void *GetDirectBufferAddress (jobject buf)
+ { return p->GetDirectBufferAddress (this, buf); }
+ jlong GetDirectBufferCapacity (jobject buf)
+ { return p->GetDirectBufferCapacity (this, buf); }
};
+
#endif /* __cplusplus */
/*
@@ -1355,18 +1523,18 @@
void *reserved1;
void *reserved2;
- jint (JNICALL *DestroyJavaVM) (JavaVM *);
- jint (JNICALL *AttachCurrentThread) (JavaVM *, void **, void *);
- jint (JNICALL *DetachCurrentThread) (JavaVM *);
- jint (JNICALL *GetEnv) (JavaVM *, void **, jint);
+ jint (JNICALL *DestroyJavaVM) (JavaVM *);
+ jint (JNICALL *AttachCurrentThread) (JavaVM *, void **, void *);
+ jint (JNICALL *DetachCurrentThread) (JavaVM *);
+ jint (JNICALL *GetEnv) (JavaVM *, void **, jint);
jint (JNICALL *AttachCurrentThreadAsDaemon) (JavaVM *, void **, void *);
-
};
#ifdef __cplusplus
-struct _Jv_JavaVM
+class _Jv_JavaVM
{
+public:
const struct JNIInvokeInterface *functions;
jint DestroyJavaVM ()
@@ -1384,6 +1552,7 @@
jint AttachCurrentThreadAsDaemon (void **penv, void *args)
{ return functions->AttachCurrentThreadAsDaemon (this, penv, args); }
};
+
#endif /* __cplusplus */
typedef struct JavaVMAttachArgs
@@ -1415,6 +1584,7 @@
jboolean ignoreUnrecognized;
} JavaVMInitArgs;
+
/* Keep c-font-lock-extra-types in alphabetical order. */
/* Local Variables: */
@@ -1425,4 +1595,5 @@
"jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" "jstring"
"jthrowable"
"jvalue" "jweak") */
/* End: */
-#endif /* __CLASSPATH_JNI_H__ */
+
+#endif /* _CLASSPATH_JNI_H */
Index: include/jni_md-x86-linux-gnu.h
===================================================================
RCS file: /cvsroot/classpath/classpath/include/jni_md-x86-linux-gnu.h,v
retrieving revision 1.1
diff -u -r1.1 jni_md-x86-linux-gnu.h
--- include/jni_md-x86-linux-gnu.h 6 Nov 2001 02:13:06 -0000 1.1
+++ include/jni_md-x86-linux-gnu.h 23 Apr 2005 00:25:15 -0000
@@ -1,5 +1,5 @@
/* jni_md.h
- Copyright (C) 2001 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -30,6 +30,7 @@
/* Define some defaults */
#define JNICALL
#define JNIEXPORT
+#define JNIIMPORT
typedef unsigned char jboolean;
typedef signed char jbyte;
@@ -39,5 +40,6 @@
typedef long long jlong;
typedef float jfloat;
typedef double jdouble;
+typedef jint jsize;
#endif /* __CLASSPATH_JNI_MD_H__ */
Index: doc/vmintegration.texinfo
===================================================================
RCS file: /cvsroot/classpath/classpath/doc/vmintegration.texinfo,v
retrieving revision 1.16
diff -u -r1.16 vmintegration.texinfo
--- doc/vmintegration.texinfo 22 Apr 2005 17:56:27 -0000 1.16
+++ doc/vmintegration.texinfo 23 Apr 2005 00:25:15 -0000
@@ -65,6 +65,7 @@
* Initialization:: Initializing the classes
* Classpath Hooks:: Hooks from Classpath to the VM
* VM Hooks:: Hooks from the underlying VM to Classpath
+* JNI Implementation:: Hooking the VM to jni.h
* Miscellaneous VM Requirements::
@end menu
@@ -224,7 +225,7 @@
@end itemize
address@hidden VM Hooks, Miscellaneous VM Requirements, Classpath Hooks, Top
address@hidden VM Hooks, JNI Implementation, Classpath Hooks, Top
@comment node-name, next, previous, up
@chapter VM Hooks
@@ -293,7 +294,49 @@
@end itemize
address@hidden Miscellaneous VM Requirements, , VM Hooks, Top
address@hidden JNI Implementation, Miscellaneous VM Requirements, VM Hooks, Top
address@hidden node-name, next, previous, up
address@hidden JNI Implementation
+
+Classpath comes with its own implementation of @file{jni.h}. This
+file can be customized by the VM in a few ways, by defining macros
+that affect the interpretation of the file.
+
address@hidden @bullet
address@hidden _CLASSPATH_VM_JNI_TYPES_DEFINED
+Some VMs like to define JNI ``object'' types in a special way. If
+this macro is defined, the Classpath @file{jni.h} will avoid defining
+these types. By default, these types are defined in @file{jni.h}.
+The full list of types and macros treated this way is: @samp{jobject},
address@hidden, @samp{jstring}, @samp{jthrowable}, @samp{jweak},
address@hidden, @samp{jobjectArray}, @samp{jbyteArray},
address@hidden, @samp{jintArray}, @samp{jlongArray},
address@hidden, @samp{jcharArray}, @samp{jfloatArray},
address@hidden, @samp{JNIEnv}, @samp{JavaVM}, @samp{JNI_TRUE}
+(macro), @samp{JNI_FALSE} (macro).
+
address@hidden _CLASSPATH_VM_INTERNAL_TYPES_DEFINED
+If the VM has its own definitions for @samp{jfieldID} and
address@hidden, then it should define this macro. Otherwise,
address@hidden will provide definitions for these types.
+
address@hidden _CLASSPATH_JNIIMPEXP
+Three functions -- @samp{JNI_GetDefaultJavaVMInitArgs},
address@hidden, and @samp{JNI_GetCreatedJavaVMs} -- must be
+marked as @samp{JNIIMPORT} when seen by user code, but most likely
+should be marked as @samp{JNIEXPORT} when defined in the VM
+implementation. This macro can be defined to one or the other by the
+VM as appropriate. If this macro is not defined, it defaults to
address@hidden
+
address@hidden _CLASSPATH_JNIENV_CONTENTS
+A VM can add fields to the @samp{JNIEnv} structure by defining this to
+be a sequence of field declarations.
+
address@hidden itemize
+
+
address@hidden Miscellaneous VM Requirements, , JNI Implementation, Top
@comment node-name, next, previous, up
@chapter Miscellaneous VM Requirements
- [cp-patches] Patch: RFA: jni.h re-merge,
Tom Tromey <=