LCOV - code coverage report
Current view: top level - home/bbc/buildbot/slave/coverage-cacao-classpath-x86_64/install/classpath/include - jni.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 2 2 100.0 %
Date: 2015-06-10 18:10:59 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* jni.h
       2             :    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008  Free Software Foundation
       3             : 
       4             : This file is part of GNU Classpath.
       5             : 
       6             : GNU Classpath is free software; you can redistribute it and/or modify
       7             : it under the terms of the GNU General Public License as published by
       8             : the Free Software Foundation; either version 2, or (at your option)
       9             : any later version.
      10             :  
      11             : GNU Classpath is distributed in the hope that it will be useful, but
      12             : WITHOUT ANY WARRANTY; without even the implied warranty of
      13             : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14             : General Public License for more details.
      15             : 
      16             : You should have received a copy of the GNU General Public License
      17             : along with GNU Classpath; see the file COPYING.  If not, write to the
      18             : Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
      19             : 02110-1301 USA.
      20             : 
      21             : Linking this library statically or dynamically with other modules is
      22             : making a combined work based on this library.  Thus, the terms and
      23             : conditions of the GNU General Public License cover the whole
      24             : combination.
      25             : 
      26             : As a special exception, the copyright holders of this library give you
      27             : permission to link this library with independent modules to produce an
      28             : executable, regardless of the license terms of these independent
      29             : modules, and to copy and distribute the resulting executable under
      30             : terms of your choice, provided that you also meet, for each linked
      31             : independent module, the terms and conditions of the license of that
      32             : module.  An independent module is a module which is not derived from
      33             : or based on this library.  If you modify this library, you may extend
      34             : this exception to your version of the library, but you are not
      35             : obligated to do so.  If you do not wish to do so, delete this
      36             : exception statement from your version. */
      37             : 
      38             : 
      39             : /* Note: this file must be compilable by the C compiler (for now,
      40             :    assuming GNU C is ok).  This means you must never use `//'
      41             :    comments, and all C++-specific code must be conditional on
      42             :    __cplusplus.  */
      43             : 
      44             : #ifndef _CLASSPATH_JNI_H
      45             : #define _CLASSPATH_JNI_H
      46             : 
      47             : /* We include <stdio.h> for compatibility with Sun's <jni.h>.  */
      48             : #include <stdio.h>
      49             : 
      50             : #include <stdarg.h>
      51             : 
      52             : #include "jni_md.h"
      53             : 
      54             : /* The VM might define jobject and friends.  */
      55             : #ifndef _CLASSPATH_VM_JNI_TYPES_DEFINED
      56             : 
      57             : # ifdef __cplusplus
      58             : 
      59             : /* Define dummy classes and then define the JNI types as pointers.  */
      60             : struct __jobject {};
      61             : struct __jclass : __jobject {};
      62             : struct __jstring : __jobject {};
      63             : struct __jthrowable : __jobject {};
      64             : struct __jweak : __jobject {};
      65             : struct __jarray : __jobject {};
      66             : struct __jobjectArray : __jarray {};
      67             : struct __jbyteArray : __jarray {};
      68             : struct __jshortArray : __jarray {};
      69             : struct __jintArray : __jarray {};
      70             : struct __jlongArray : __jarray {};
      71             : struct __jbooleanArray : __jarray {};
      72             : struct __jcharArray : __jarray {};
      73             : struct __jfloatArray : __jarray {};
      74             : struct __jdoubleArray : __jarray {};
      75             : 
      76             : typedef __jobject *jobject;
      77             : typedef __jclass *jclass;
      78             : typedef __jstring *jstring;
      79             : typedef __jthrowable *jthrowable;
      80             : typedef __jweak *jweak;
      81             : typedef __jarray *jarray;
      82             : typedef __jobjectArray *jobjectArray;
      83             : typedef __jbyteArray *jbyteArray;
      84             : typedef __jshortArray *jshortArray;
      85             : typedef __jintArray *jintArray;
      86             : typedef __jlongArray *jlongArray;
      87             : typedef __jbooleanArray *jbooleanArray;
      88             : typedef __jcharArray *jcharArray;
      89             : typedef __jfloatArray *jfloatArray;
      90             : typedef __jdoubleArray *jdoubleArray;
      91             : 
      92             : #define JNI_TRUE true
      93             : #define JNI_FALSE false
      94             : 
      95             : typedef struct _Jv_JNIEnv JNIEnv;
      96             : typedef struct _Jv_JavaVM JavaVM;
      97             : 
      98             : # else /* __cplusplus */
      99             : 
     100             : /* For C, simply define the class types as generic pointers.  */
     101             : typedef void *jobject;
     102             : typedef jobject jclass;
     103             : typedef jobject jstring;
     104             : typedef jobject jthrowable;
     105             : typedef jobject jweak;
     106             : typedef jobject jarray;
     107             : typedef jobject jobjectArray;
     108             : typedef jobject jbyteArray;
     109             : typedef jobject jshortArray;
     110             : typedef jobject jintArray;
     111             : typedef jobject jlongArray;
     112             : typedef jobject jbooleanArray;
     113             : typedef jobject jcharArray;
     114             : typedef jobject jfloatArray;
     115             : typedef jobject jdoubleArray;
     116             : 
     117             : #define JNI_TRUE  1
     118             : #define JNI_FALSE 0
     119             : 
     120             : typedef const struct JNINativeInterface_ *JNIEnv;
     121             : typedef const struct JNIInvokeInterface_ *JavaVM;
     122             : 
     123             : # endif /* __cplusplus */
     124             : 
     125             : #endif /* _CLASSPATH_VM_JNI_TYPES_DEFINED */
     126             : 
     127             : /* 
     128             :  * Before jni.h is #included within a typical JVM, the source code should 
     129             :  * #define _JNI_VM_INTERNAL_TYPES_DEFINED and provide the real declarations
     130             :  * for 'jobject', 'jfieldID', 'jmethodID' and other implementation types.
     131             :  * If _JNI_VM_INTERNAL_TYPES_DEFINED is not defined, the following 
     132             :  * declares the old versions of the types.
     133             :  */
     134             : #ifndef _CLASSPATH_VM_INTERNAL_TYPES_DEFINED
     135             : struct _jfieldID;
     136             : struct _jmethodID;
     137             : typedef struct _jfieldID *jfieldID;
     138             : typedef struct _jmethodID *jmethodID;
     139             : #endif 
     140             : 
     141             : /* Version numbers.  */
     142             : #define JNI_VERSION_1_1 0x00010001
     143             : #define JNI_VERSION_1_2 0x00010002
     144             : #define JNI_VERSION_1_4 0x00010004
     145             : #define JNI_VERSION_1_6 0x00010006
     146             : 
     147             : /* Used when releasing array elements.  */
     148             : #define JNI_COMMIT 1
     149             : #define JNI_ABORT  2
     150             : 
     151             : /* Error codes */
     152             : #define JNI_OK            0
     153             : #define JNI_ERR          (-1)
     154             : #define JNI_EDETACHED    (-2)
     155             : #define JNI_EVERSION     (-3)
     156             : 
     157             : enum _jobjectRefType
     158             : {
     159             :   JNIInvalidRefType    = 0,
     160             :   JNILocalRefType      = 1,
     161             :   JNIGlobalRefType     = 2,
     162             :   JNIWeakGlobalRefType = 3 
     163             : };
     164             : 
     165             : typedef enum _jobjectRefType jobjectRefType;
     166             : 
     167             : #ifdef __cplusplus
     168             : extern "C"
     169             : {
     170             : #endif /* __cplusplus */
     171             : 
     172             : /* These functions might be defined in libraries which we load; the
     173             :    JNI implementation calls them at the appropriate times.  */
     174             : extern JNIEXPORT jint JNICALL JNI_OnLoad (JavaVM *, void *);
     175             : extern JNIEXPORT void JNICALL JNI_OnUnload (JavaVM *, void *);
     176             : 
     177             : /* This can be defined as JNIIMPORT or JNIEXPORT by the md file,
     178             :    depending on whether this is the implementation or a user.  */
     179             : #ifndef _CLASSPATH_JNIIMPEXP
     180             : #define _CLASSPATH_JNIIMPEXP JNIIMPORT
     181             : #endif
     182             : 
     183             : /* These functions are called by user code to start using the
     184             :    invocation API.  */
     185             : extern _CLASSPATH_JNIIMPEXP jint JNICALL
     186             : JNI_GetDefaultJavaVMInitArgs (void *);
     187             : 
     188             : extern _CLASSPATH_JNIIMPEXP jint JNICALL
     189             : JNI_CreateJavaVM (JavaVM **, void **, void *);
     190             : 
     191             : extern _CLASSPATH_JNIIMPEXP jint JNICALL
     192             : JNI_GetCreatedJavaVMs (JavaVM **, jsize, jsize *);
     193             : 
     194             : #ifdef __cplusplus
     195             : }
     196             : #endif /* __cplusplus */
     197             : 
     198             : typedef union jvalue
     199             : {
     200             :   jboolean z;
     201             :   jbyte    b;
     202             :   jchar    c;
     203             :   jshort   s;
     204             :   jint     i;
     205             :   jlong    j;
     206             :   jfloat   f;
     207             :   jdouble  d;
     208             :   jobject  l;
     209             : } jvalue;
     210             : 
     211             : /* This structure is used when registering native methods.  */
     212             : typedef struct
     213             : {
     214             :   char *name;
     215             :   char *signature;
     216             :   void *fnPtr;                  /* Sigh.  */
     217             : } JNINativeMethod;
     218             : 
     219             : struct JNINativeInterface_
     220             : {
     221             :   void *reserved0;
     222             :   void *reserved1;
     223             :   void *reserved2;
     224             :   void *reserved3;
     225             : 
     226             :   jint     (JNICALL *GetVersion)                   (JNIEnv *);
     227             :   jclass   (JNICALL *DefineClass)                  (JNIEnv *, const char *,
     228             :                                                     jobject, const jbyte *,
     229             :                                                     jsize);
     230             :   jclass   (JNICALL *FindClass)                    (JNIEnv *, const char *);
     231             : 
     232             :   jmethodID (JNICALL *FromReflectedMethod)         (JNIEnv *, jobject);
     233             :   jfieldID  (JNICALL *FromReflectedField)          (JNIEnv *, jobject);
     234             :   jobject   (JNICALL *ToReflectedMethod)           (JNIEnv *, jclass,
     235             :                                                     jmethodID, jboolean);
     236             : 
     237             :   jclass   (JNICALL *GetSuperclass)                (JNIEnv *, jclass);
     238             :   jboolean (JNICALL *IsAssignableFrom)             (JNIEnv *, jclass, jclass);
     239             : 
     240             :   jobject  (JNICALL *ToReflectedField)             (JNIEnv *, jclass, jfieldID,
     241             :                                                     jboolean);
     242             : 
     243             :   jint     (JNICALL *Throw)                        (JNIEnv *, jthrowable);
     244             :   jint     (JNICALL *ThrowNew)                     (JNIEnv *, jclass, 
     245             :                                                     const char *);
     246             :   jthrowable (JNICALL *ExceptionOccurred)          (JNIEnv *);
     247             :   void     (JNICALL *ExceptionDescribe)            (JNIEnv *);
     248             :   void     (JNICALL *ExceptionClear)               (JNIEnv *);
     249             :   void     (JNICALL *FatalError)                   (JNIEnv *, const char *);
     250             : 
     251             :   jint     (JNICALL *PushLocalFrame)               (JNIEnv *, jint);
     252             :   jobject  (JNICALL *PopLocalFrame)                (JNIEnv *, jobject);
     253             : 
     254             :   jobject  (JNICALL *NewGlobalRef)                 (JNIEnv *, jobject);
     255             :   void     (JNICALL *DeleteGlobalRef)              (JNIEnv *, jobject);
     256             :   void     (JNICALL *DeleteLocalRef)               (JNIEnv *, jobject);
     257             :   jboolean (JNICALL *IsSameObject)                 (JNIEnv *, jobject, 
     258             :                                                     jobject);
     259             : 
     260             :   jobject  (JNICALL *NewLocalRef)                  (JNIEnv *, jobject);
     261             :   jint     (JNICALL *EnsureLocalCapacity)          (JNIEnv *, jint);
     262             : 
     263             :   jobject  (JNICALL *AllocObject)                  (JNIEnv *, jclass);
     264             :   jobject (JNICALL *NewObject)                     (JNIEnv *, jclass, 
     265             :                                                     jmethodID, ...);
     266             :   jobject (JNICALL *NewObjectV)                    (JNIEnv *, jclass, 
     267             :                                                     jmethodID, va_list);
     268             :   jobject (JNICALL *NewObjectA)                    (JNIEnv *, jclass, 
     269             :                                                     jmethodID, const jvalue *);
     270             : 
     271             :   jclass   (JNICALL *GetObjectClass)               (JNIEnv *, jobject);
     272             :   jboolean (JNICALL *IsInstanceOf)                 (JNIEnv *, jobject, jclass);
     273             :   jmethodID (JNICALL *GetMethodID)                 (JNIEnv *, jclass, 
     274             :                                                     const char *, const char *);
     275             : 
     276             :   jobject (JNICALL *CallObjectMethod)      (JNIEnv *, jobject, jmethodID, ...);
     277             :   jobject (JNICALL *CallObjectMethodV)     (JNIEnv *, jobject, jmethodID,
     278             :                                             va_list);
     279             :   jobject (JNICALL *CallObjectMethodA)     (JNIEnv *, jobject, jmethodID,
     280             :                                             const jvalue *);
     281             :   jboolean (JNICALL *CallBooleanMethod)    (JNIEnv *, jobject, jmethodID,
     282             :                                             ...);
     283             :   jboolean (JNICALL *CallBooleanMethodV)   (JNIEnv *, jobject, jmethodID,
     284             :                                             va_list);
     285             :   jboolean (JNICALL *CallBooleanMethodA)   (JNIEnv *, jobject, jmethodID,
     286             :                                             const jvalue *);
     287             :   jbyte (JNICALL *CallByteMethod)   (JNIEnv *, jobject, jmethodID, ...);
     288             :   jbyte (JNICALL *CallByteMethodV)         (JNIEnv *, jobject, jmethodID,
     289             :                                             va_list);
     290             :   jbyte (JNICALL *CallByteMethodA)         (JNIEnv *, jobject, jmethodID,
     291             :                                             const jvalue *);
     292             :   jchar (JNICALL *CallCharMethod)          (JNIEnv *, jobject, jmethodID, ...);
     293             :   jchar (JNICALL *CallCharMethodV)         (JNIEnv *, jobject, jmethodID,
     294             :                                             va_list);
     295             :   jchar (JNICALL *CallCharMethodA)         (JNIEnv *, jobject, jmethodID,
     296             :                                             const jvalue *);
     297             :   jshort (JNICALL *CallShortMethod)        (JNIEnv *, jobject, jmethodID, ...);
     298             :   jshort (JNICALL *CallShortMethodV)       (JNIEnv *, jobject, jmethodID,
     299             :                                             va_list);
     300             :   jshort (JNICALL *CallShortMethodA)       (JNIEnv *, jobject, jmethodID,
     301             :                                             const jvalue *);
     302             :   jint  (JNICALL *CallIntMethod)           (JNIEnv *, jobject, jmethodID, ...);
     303             :   jint  (JNICALL *CallIntMethodV)          (JNIEnv *, jobject, jmethodID,
     304             :                                             va_list);
     305             :   jint  (JNICALL *CallIntMethodA)          (JNIEnv *, jobject, jmethodID,
     306             :                                             const jvalue *);
     307             :   jlong (JNICALL *CallLongMethod)          (JNIEnv *, jobject, jmethodID, ...);
     308             :   jlong (JNICALL *CallLongMethodV)         (JNIEnv *, jobject, jmethodID,
     309             :                                             va_list);
     310             :   jlong (JNICALL *CallLongMethodA)         (JNIEnv *, jobject, jmethodID,
     311             :                                             const jvalue *);
     312             :   jfloat (JNICALL *CallFloatMethod)        (JNIEnv *, jobject, jmethodID, ...);
     313             :   jfloat (JNICALL *CallFloatMethodV)       (JNIEnv *, jobject, jmethodID,
     314             :                                             va_list);
     315             :   jfloat (JNICALL *CallFloatMethodA)       (JNIEnv *, jobject, jmethodID,
     316             :                                             const jvalue *);
     317             :   jdouble (JNICALL *CallDoubleMethod)      (JNIEnv *, jobject, jmethodID, ...);
     318             :   jdouble (JNICALL *CallDoubleMethodV)     (JNIEnv *, jobject, jmethodID,
     319             :                                             va_list);
     320             :   jdouble (JNICALL *CallDoubleMethodA)     (JNIEnv *, jobject, jmethodID,
     321             :                                             const jvalue *);
     322             :   void  (JNICALL *CallVoidMethod)          (JNIEnv *, jobject, jmethodID, ...);
     323             :   void  (JNICALL *CallVoidMethodV)         (JNIEnv *, jobject, jmethodID,
     324             :                                             va_list);
     325             :   void  (JNICALL *CallVoidMethodA)         (JNIEnv *, jobject, jmethodID,
     326             :                                             const jvalue *);
     327             : 
     328             :   jobject   (JNICALL *CallNonvirtualObjectMethod)  (JNIEnv *, jobject, jclass,
     329             :                                                     jmethodID, ...);
     330             :   jobject   (JNICALL *CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
     331             :                                                     jmethodID, va_list);
     332             :   jobject   (JNICALL *CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
     333             :                                                     jmethodID, const jvalue *);
     334             :   jboolean  (JNICALL *CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
     335             :                                                     jmethodID, ...);
     336             :   jboolean  (JNICALL *CallNonvirtualBooleanMethodV) (JNIEnv *, jobject, jclass,
     337             :                                                      jmethodID, va_list);
     338             :   jboolean  (JNICALL *CallNonvirtualBooleanMethodA) (JNIEnv *, jobject, jclass,
     339             :                                                      jmethodID, const jvalue *);
     340             :   jbyte     (JNICALL *CallNonvirtualByteMethod)    (JNIEnv *, jobject, jclass,
     341             :                                                     jmethodID, ...);
     342             :   jbyte     (JNICALL *CallNonvirtualByteMethodV)   (JNIEnv *, jobject, jclass,
     343             :                                                     jmethodID, va_list);
     344             :   jbyte     (JNICALL *CallNonvirtualByteMethodA)   (JNIEnv *, jobject, jclass,
     345             :                                                     jmethodID, const jvalue *);
     346             :   jchar     (JNICALL *CallNonvirtualCharMethod)    (JNIEnv *, jobject, jclass,
     347             :                                                     jmethodID, ...);
     348             :   jchar     (JNICALL *CallNonvirtualCharMethodV)   (JNIEnv *, jobject, jclass,
     349             :                                                     jmethodID, va_list);
     350             :   jchar     (JNICALL *CallNonvirtualCharMethodA)   (JNIEnv *, jobject, jclass,
     351             :                                                     jmethodID, const jvalue *);
     352             :   jshort    (JNICALL *CallNonvirtualShortMethod)   (JNIEnv *, jobject, jclass,
     353             :                                                     jmethodID, ...);
     354             :   jshort    (JNICALL *CallNonvirtualShortMethodV)  (JNIEnv *, jobject, jclass,
     355             :                                                     jmethodID, va_list);
     356             :   jshort    (JNICALL *CallNonvirtualShortMethodA)  (JNIEnv *, jobject, jclass,
     357             :                                                     jmethodID, const jvalue *);
     358             :   jint      (JNICALL *CallNonvirtualIntMethod)     (JNIEnv *, jobject, jclass,
     359             :                                                     jmethodID, ...);
     360             :   jint      (JNICALL *CallNonvirtualIntMethodV)    (JNIEnv *, jobject, jclass,
     361             :                                                     jmethodID, va_list);
     362             :   jint      (JNICALL *CallNonvirtualIntMethodA)    (JNIEnv *, jobject, jclass,
     363             :                                                     jmethodID, const jvalue *);
     364             :   jlong     (JNICALL *CallNonvirtualLongMethod)    (JNIEnv *, jobject, jclass,
     365             :                                                     jmethodID, ...);
     366             :   jlong     (JNICALL *CallNonvirtualLongMethodV)   (JNIEnv *, jobject, jclass,
     367             :                                                     jmethodID, va_list);
     368             :   jlong     (JNICALL *CallNonvirtualLongMethodA)   (JNIEnv *, jobject, jclass,
     369             :                                                     jmethodID, const jvalue *);
     370             :   jfloat    (JNICALL *CallNonvirtualFloatMethod)   (JNIEnv *, jobject, jclass,
     371             :                                                     jmethodID, ...);
     372             :   jfloat    (JNICALL *CallNonvirtualFloatMethodV)  (JNIEnv *, jobject, jclass,
     373             :                                                     jmethodID, va_list);
     374             :   jfloat    (JNICALL *CallNonvirtualFloatMethodA)  (JNIEnv *, jobject, jclass,
     375             :                                                     jmethodID, const jvalue *);
     376             :   jdouble   (JNICALL *CallNonvirtualDoubleMethod)  (JNIEnv *, jobject, jclass,
     377             :                                                     jmethodID, ...);
     378             :   jdouble   (JNICALL *CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
     379             :                                                     jmethodID, va_list);
     380             :   jdouble   (JNICALL *CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
     381             :                                                     jmethodID, const jvalue *);
     382             :   void      (JNICALL *CallNonvirtualVoidMethod)    (JNIEnv *, jobject, jclass,
     383             :                                                     jmethodID, ...);
     384             :   void      (JNICALL *CallNonvirtualVoidMethodV)   (JNIEnv *, jobject, jclass,
     385             :                                                     jmethodID, va_list);
     386             :   void      (JNICALL *CallNonvirtualVoidMethodA)   (JNIEnv *, jobject, jclass,
     387             :                                                     jmethodID, const jvalue *);
     388             : 
     389             :   jfieldID  (JNICALL *GetFieldID)          (JNIEnv *, jclass, const char *,
     390             :                                             const char *);
     391             : 
     392             :   jobject  (JNICALL *GetObjectField)       (JNIEnv *, jobject, jfieldID);
     393             :   jboolean (JNICALL *GetBooleanField)      (JNIEnv *, jobject, jfieldID);
     394             :   jbyte    (JNICALL *GetByteField)         (JNIEnv *, jobject, jfieldID);
     395             :   jchar    (JNICALL *GetCharField)         (JNIEnv *, jobject, jfieldID);
     396             :   jshort   (JNICALL *GetShortField)        (JNIEnv *, jobject, jfieldID);
     397             :   jint     (JNICALL *GetIntField)          (JNIEnv *, jobject, jfieldID);
     398             :   jlong    (JNICALL *GetLongField)         (JNIEnv *, jobject, jfieldID);
     399             :   jfloat   (JNICALL *GetFloatField)        (JNIEnv *, jobject, jfieldID);
     400             :   jdouble  (JNICALL *GetDoubleField)       (JNIEnv *, jobject, jfieldID);
     401             : 
     402             :   void  (JNICALL *SetObjectField)          (JNIEnv *, jobject,
     403             :                                             jfieldID, jobject);
     404             :   void  (JNICALL *SetBooleanField)         (JNIEnv *, jobject,
     405             :                                             jfieldID, jboolean);
     406             :   void  (JNICALL *SetByteField)            (JNIEnv *, jobject,
     407             :                                             jfieldID, jbyte);
     408             :   void  (JNICALL *SetCharField)            (JNIEnv *, jobject,
     409             :                                             jfieldID, jchar);
     410             :   void  (JNICALL *SetShortField)           (JNIEnv *, jobject,
     411             :                                             jfieldID, jshort);
     412             :   void  (JNICALL *SetIntField)             (JNIEnv *, jobject,
     413             :                                             jfieldID, jint);
     414             :   void  (JNICALL *SetLongField)            (JNIEnv *, jobject,
     415             :                                             jfieldID, jlong);
     416             :   void  (JNICALL *SetFloatField)           (JNIEnv *, jobject,
     417             :                                             jfieldID, jfloat);
     418             :   void  (JNICALL *SetDoubleField)          (JNIEnv *, jobject,
     419             :                                             jfieldID, jdouble);
     420             : 
     421             :   jmethodID (JNICALL *GetStaticMethodID)   (JNIEnv *, jclass, const char *,
     422             :                                             const char *);
     423             : 
     424             :   jobject  (JNICALL *CallStaticObjectMethod)  (JNIEnv *, jclass, jmethodID,
     425             :                                                ...);
     426             :   jobject  (JNICALL *CallStaticObjectMethodV) (JNIEnv *, jclass, jmethodID,
     427             :                                                va_list);
     428             :   jobject  (JNICALL *CallStaticObjectMethodA) (JNIEnv *, jclass, jmethodID,
     429             :                                                const jvalue *);
     430             :   jboolean (JNICALL *CallStaticBooleanMethod) (JNIEnv *, jclass, jmethodID,
     431             :                                                ...);
     432             :   jboolean (JNICALL *CallStaticBooleanMethodV) (JNIEnv *, jclass, jmethodID,
     433             :                                                 va_list);
     434             :   jboolean (JNICALL *CallStaticBooleanMethodA) (JNIEnv *, jclass, jmethodID,
     435             :                                                 const jvalue *);
     436             :   jbyte    (JNICALL *CallStaticByteMethod)    (JNIEnv *, jclass, jmethodID,
     437             :                                                ...);
     438             :   jbyte    (JNICALL *CallStaticByteMethodV)   (JNIEnv *, jclass, jmethodID,
     439             :                                                va_list);
     440             :   jbyte    (JNICALL *CallStaticByteMethodA)   (JNIEnv *, jclass, jmethodID,
     441             :                                                const jvalue *);
     442             :   jchar    (JNICALL *CallStaticCharMethod)    (JNIEnv *, jclass, jmethodID,
     443             :                                                ...);
     444             :   jchar    (JNICALL *CallStaticCharMethodV)   (JNIEnv *, jclass, jmethodID,
     445             :                                                va_list);
     446             :   jchar    (JNICALL *CallStaticCharMethodA)   (JNIEnv *, jclass, jmethodID,
     447             :                                                const jvalue *);
     448             :   jshort   (JNICALL *CallStaticShortMethod)   (JNIEnv *, jclass, jmethodID,
     449             :                                                ...);
     450             :   jshort   (JNICALL *CallStaticShortMethodV)  (JNIEnv *, jclass, jmethodID,
     451             :                                                va_list);
     452             :   jshort   (JNICALL *CallStaticShortMethodA)  (JNIEnv *, jclass, jmethodID,
     453             :                                                const jvalue *);
     454             :   jint     (JNICALL *CallStaticIntMethod)     (JNIEnv *, jclass, jmethodID,
     455             :                                                ...);
     456             :   jint     (JNICALL *CallStaticIntMethodV)    (JNIEnv *, jclass, jmethodID,
     457             :                                                va_list);
     458             :   jint     (JNICALL *CallStaticIntMethodA)    (JNIEnv *, jclass, jmethodID,
     459             :                                                const jvalue *);
     460             :   jlong    (JNICALL *CallStaticLongMethod)    (JNIEnv *, jclass, jmethodID,
     461             :                                                ...);
     462             :   jlong    (JNICALL *CallStaticLongMethodV)   (JNIEnv *, jclass, jmethodID,
     463             :                                                va_list);
     464             :   jlong    (JNICALL *CallStaticLongMethodA)   (JNIEnv *, jclass, jmethodID,
     465             :                                                const jvalue *);
     466             :   jfloat   (JNICALL *CallStaticFloatMethod)   (JNIEnv *, jclass, jmethodID,
     467             :                                                ...);
     468             :   jfloat   (JNICALL *CallStaticFloatMethodV)  (JNIEnv *, jclass, jmethodID,
     469             :                                                va_list);
     470             :   jfloat   (JNICALL *CallStaticFloatMethodA)  (JNIEnv *, jclass, jmethodID,
     471             :                                                const jvalue *);
     472             :   jdouble  (JNICALL *CallStaticDoubleMethod)  (JNIEnv *, jclass, jmethodID,
     473             :                                                ...);
     474             :   jdouble  (JNICALL *CallStaticDoubleMethodV) (JNIEnv *, jclass, jmethodID,
     475             :                                                va_list);
     476             :   jdouble  (JNICALL *CallStaticDoubleMethodA) (JNIEnv *, jclass, jmethodID,
     477             :                                                const jvalue *);
     478             :   void     (JNICALL *CallStaticVoidMethod)    (JNIEnv *, jclass, jmethodID,
     479             :                                                ...);
     480             :   void     (JNICALL *CallStaticVoidMethodV)   (JNIEnv *, jclass, jmethodID,
     481             :                                                va_list);
     482             :   void     (JNICALL *CallStaticVoidMethodA)   (JNIEnv *, jclass, jmethodID,
     483             :                                                const jvalue *);
     484             : 
     485             :   jfieldID (JNICALL *GetStaticFieldID)        (JNIEnv *, jclass, const char *,
     486             :                                                const char *);
     487             : 
     488             :   jobject  (JNICALL *GetStaticObjectField)    (JNIEnv *, jclass, jfieldID);
     489             :   jboolean (JNICALL *GetStaticBooleanField)   (JNIEnv *, jclass, jfieldID);
     490             :   jbyte    (JNICALL *GetStaticByteField)      (JNIEnv *, jclass, jfieldID);
     491             :   jchar    (JNICALL *GetStaticCharField)      (JNIEnv *, jclass, jfieldID);
     492             :   jshort   (JNICALL *GetStaticShortField)     (JNIEnv *, jclass, jfieldID);
     493             :   jint     (JNICALL *GetStaticIntField)       (JNIEnv *, jclass, jfieldID);
     494             :   jlong    (JNICALL *GetStaticLongField)      (JNIEnv *, jclass, jfieldID);
     495             :   jfloat   (JNICALL *GetStaticFloatField)     (JNIEnv *, jclass, jfieldID);
     496             :   jdouble  (JNICALL *GetStaticDoubleField)    (JNIEnv *, jclass, jfieldID);
     497             : 
     498             :   void  (JNICALL *SetStaticObjectField)    (JNIEnv *, jclass,
     499             :                                             jfieldID, jobject);
     500             :   void  (JNICALL *SetStaticBooleanField)   (JNIEnv *, jclass,
     501             :                                             jfieldID, jboolean);
     502             :   void  (JNICALL *SetStaticByteField)      (JNIEnv *, jclass,
     503             :                                             jfieldID, jbyte);
     504             :   void  (JNICALL *SetStaticCharField)      (JNIEnv *, jclass,
     505             :                                             jfieldID, jchar);
     506             :   void  (JNICALL *SetStaticShortField)     (JNIEnv *, jclass,
     507             :                                             jfieldID, jshort);
     508             :   void  (JNICALL *SetStaticIntField)       (JNIEnv *, jclass,
     509             :                                             jfieldID, jint);
     510             :   void  (JNICALL *SetStaticLongField)      (JNIEnv *, jclass,
     511             :                                             jfieldID, jlong);
     512             :   void  (JNICALL *SetStaticFloatField)     (JNIEnv *, jclass,
     513             :                                             jfieldID, jfloat);
     514             :   void  (JNICALL *SetStaticDoubleField)    (JNIEnv *, jclass,
     515             :                                             jfieldID, jdouble);
     516             : 
     517             :   jstring  (JNICALL *NewString)            (JNIEnv *, const jchar *, jsize);
     518             :   jsize    (JNICALL *GetStringLength)      (JNIEnv *, jstring);
     519             :   const jchar * (JNICALL *GetStringChars)  (JNIEnv *, jstring, jboolean *);
     520             :   void     (JNICALL *ReleaseStringChars)   (JNIEnv *, jstring, const jchar *);
     521             :   jstring  (JNICALL *NewStringUTF)         (JNIEnv *, const char *);
     522             :   jsize    (JNICALL *GetStringUTFLength)   (JNIEnv *, jstring);
     523             :   const char * (JNICALL *GetStringUTFChars) (JNIEnv *, jstring, jboolean *);
     524             :   void     (JNICALL *ReleaseStringUTFChars) (JNIEnv *, jstring, const char *);
     525             :   jsize    (JNICALL *GetArrayLength)       (JNIEnv *, jarray);
     526             :   jobjectArray (JNICALL *NewObjectArray)    (JNIEnv *, jsize, jclass, jobject);
     527             :   jobject  (JNICALL *GetObjectArrayElement) (JNIEnv *, jobjectArray, jsize);
     528             :   void     (JNICALL *SetObjectArrayElement) (JNIEnv *, jobjectArray, jsize,
     529             :                                              jobject);
     530             : 
     531             :   jbooleanArray (JNICALL *NewBooleanArray)         (JNIEnv *, jsize);
     532             :   jbyteArray    (JNICALL *NewByteArray)            (JNIEnv *, jsize);
     533             :   jcharArray    (JNICALL *NewCharArray)            (JNIEnv *, jsize);
     534             :   jshortArray   (JNICALL *NewShortArray)           (JNIEnv *, jsize);
     535             :   jintArray     (JNICALL *NewIntArray)             (JNIEnv *, jsize);
     536             :   jlongArray    (JNICALL *NewLongArray)            (JNIEnv *, jsize);
     537             :   jfloatArray   (JNICALL *NewFloatArray)           (JNIEnv *, jsize);
     538             :   jdoubleArray  (JNICALL *NewDoubleArray)          (JNIEnv *, jsize);
     539             : 
     540             :   jboolean *    (JNICALL *GetBooleanArrayElements) (JNIEnv *, jbooleanArray,
     541             :                                                     jboolean *);
     542             :   jbyte *       (JNICALL *GetByteArrayElements)    (JNIEnv *, jbyteArray,
     543             :                                                     jboolean *);
     544             :   jchar *       (JNICALL *GetCharArrayElements)    (JNIEnv *, jcharArray,
     545             :                                                     jboolean *);
     546             :   jshort *      (JNICALL *GetShortArrayElements)   (JNIEnv *, jshortArray,
     547             :                                                     jboolean *);
     548             :   jint *        (JNICALL *GetIntArrayElements)     (JNIEnv *, jintArray,
     549             :                                                     jboolean *);
     550             :   jlong *       (JNICALL *GetLongArrayElements)    (JNIEnv *, jlongArray,
     551             :                                                     jboolean *);
     552             :   jfloat *      (JNICALL *GetFloatArrayElements)   (JNIEnv *, jfloatArray,
     553             :                                                     jboolean *);
     554             :   jdouble *     (JNICALL *GetDoubleArrayElements)  (JNIEnv *, jdoubleArray,
     555             :                                                     jboolean *);
     556             : 
     557             :   void          (JNICALL *ReleaseBooleanArrayElements) (JNIEnv *, jbooleanArray,
     558             :                                                         jboolean *, jint);
     559             :   void          (JNICALL *ReleaseByteArrayElements)    (JNIEnv *, jbyteArray,
     560             :                                                         jbyte *, jint);
     561             :   void          (JNICALL *ReleaseCharArrayElements)    (JNIEnv *, jcharArray,
     562             :                                                         jchar *, jint);
     563             :   void          (JNICALL *ReleaseShortArrayElements)   (JNIEnv *, jshortArray,
     564             :                                                         jshort *, jint);
     565             :   void          (JNICALL *ReleaseIntArrayElements)     (JNIEnv *, jintArray,
     566             :                                                         jint *, jint);
     567             :   void          (JNICALL *ReleaseLongArrayElements)    (JNIEnv *, jlongArray,
     568             :                                                         jlong *, jint);
     569             :   void          (JNICALL *ReleaseFloatArrayElements)   (JNIEnv *, jfloatArray,
     570             :                                                         jfloat *, jint);
     571             :   void          (JNICALL *ReleaseDoubleArrayElements)  (JNIEnv *, jdoubleArray,
     572             :                                                         jdouble *, jint);
     573             : 
     574             :   void          (JNICALL *GetBooleanArrayRegion)   (JNIEnv *, jbooleanArray,
     575             :                                                     jsize, jsize, jboolean *);
     576             :   void          (JNICALL *GetByteArrayRegion)      (JNIEnv *, jbyteArray,
     577             :                                                     jsize, jsize, jbyte *);
     578             :   void          (JNICALL *GetCharArrayRegion)      (JNIEnv *, jcharArray,
     579             :                                                     jsize, jsize, jchar *);
     580             :   void          (JNICALL *GetShortArrayRegion)     (JNIEnv *, jshortArray,
     581             :                                                     jsize, jsize, jshort *);
     582             :   void          (JNICALL *GetIntArrayRegion)       (JNIEnv *, jintArray,
     583             :                                                     jsize, jsize, jint *);
     584             :   void          (JNICALL *GetLongArrayRegion)      (JNIEnv *, jlongArray,
     585             :                                                     jsize, jsize, jlong *);
     586             :   void          (JNICALL *GetFloatArrayRegion)     (JNIEnv *, jfloatArray,
     587             :                                                     jsize, jsize, jfloat *);
     588             :   void          (JNICALL *GetDoubleArrayRegion)    (JNIEnv *, jdoubleArray,
     589             :                                                     jsize, jsize, jdouble *);
     590             : 
     591             :   void          (JNICALL *SetBooleanArrayRegion)   (JNIEnv *, jbooleanArray,
     592             :                                                     jsize, jsize,
     593             :                                                     const jboolean *);
     594             :   void          (JNICALL *SetByteArrayRegion)      (JNIEnv *, jbyteArray,
     595             :                                                     jsize, jsize,
     596             :                                                     const jbyte *);
     597             :   void          (JNICALL *SetCharArrayRegion)      (JNIEnv *, jcharArray,
     598             :                                                     jsize, jsize,
     599             :                                                     const jchar *);
     600             :   void          (JNICALL *SetShortArrayRegion)     (JNIEnv *, jshortArray,
     601             :                                                     jsize, jsize,
     602             :                                                     const jshort *);
     603             :   void          (JNICALL *SetIntArrayRegion)       (JNIEnv *, jintArray,
     604             :                                                     jsize, jsize,
     605             :                                                     const jint *);
     606             :   void          (JNICALL *SetLongArrayRegion)      (JNIEnv *, jlongArray,
     607             :                                                     jsize, jsize,
     608             :                                                     const jlong *);
     609             :   void          (JNICALL *SetFloatArrayRegion)     (JNIEnv *, jfloatArray,
     610             :                                                     jsize, jsize,
     611             :                                                     const jfloat *);
     612             :   void          (JNICALL *SetDoubleArrayRegion)    (JNIEnv *, jdoubleArray,
     613             :                                                     jsize, jsize,
     614             :                                                     const jdouble *);
     615             : 
     616             :   jint     (JNICALL *RegisterNatives)              (JNIEnv *, jclass,
     617             :                                                     const JNINativeMethod *, 
     618             :                                                     jint);
     619             :   jint     (JNICALL *UnregisterNatives)            (JNIEnv *, jclass);
     620             :   jint     (JNICALL *MonitorEnter)                 (JNIEnv *, jobject);
     621             :   jint     (JNICALL *MonitorExit)                  (JNIEnv *, jobject);
     622             :   jint     (JNICALL *GetJavaVM)                    (JNIEnv *, JavaVM **);
     623             : 
     624             :   /* ---- JNI 1.2 functions ---- */
     625             : 
     626             :   void     (JNICALL *GetStringRegion)              (JNIEnv *, jstring, jsize,
     627             :                                                     jsize, jchar *);
     628             :   void     (JNICALL *GetStringUTFRegion)           (JNIEnv *, jstring, jsize,
     629             :                                                     jsize, char *);
     630             : 
     631             :   void * (JNICALL *GetPrimitiveArrayCritical)      (JNIEnv *, jarray, 
     632             :                                                     jboolean *);
     633             :   void   (JNICALL *ReleasePrimitiveArrayCritical)  (JNIEnv *, jarray, void *, 
     634             :                                                     jint);
     635             : 
     636             :   const jchar * (JNICALL *GetStringCritical)       (JNIEnv *, jstring, 
     637             :                                                     jboolean *);
     638             :   void          (JNICALL *ReleaseStringCritical)   (JNIEnv *, jstring, 
     639             :                                                     const jchar *);
     640             : 
     641             :   jweak  (JNICALL *NewWeakGlobalRef)               (JNIEnv *, jobject);
     642             :   void   (JNICALL *DeleteWeakGlobalRef)            (JNIEnv *, jweak);
     643             : 
     644             :   jboolean      (JNICALL *ExceptionCheck)          (JNIEnv *);
     645             : 
     646             :   /* ---- JNI 1.4 functions ---- */
     647             : 
     648             :   jobject (JNICALL *NewDirectByteBuffer)           (JNIEnv *, void *, jlong);
     649             :   void *  (JNICALL *GetDirectBufferAddress)        (JNIEnv *, jobject);
     650             :   jlong   (JNICALL *GetDirectBufferCapacity)       (JNIEnv *, jobject);
     651             : 
     652             :   /* ---- JNI 1.6 functions ---- */
     653             : 
     654             :   jobjectRefType (JNICALL *GetObjectRefType)       (JNIEnv *, jobject);
     655             : };
     656             : 
     657             : #ifdef __cplusplus
     658             : 
     659             : class _Jv_JNIEnv
     660             : {
     661             : public:
     662             :   /* The method table.  */
     663             :   struct JNINativeInterface_ *functions;
     664             : 
     665             : #ifdef _CLASSPATH_JNIENV_CONTENTS
     666             :   _CLASSPATH_JNIENV_CONTENTS
     667             : #endif
     668             : 
     669             :   jint GetVersion ()
     670             :   { return functions->GetVersion (this); }
     671             : 
     672             :   jclass DefineClass (const char *name, jobject obj0, const jbyte * val1,
     673             :                       jsize val2)
     674             :   { return functions->DefineClass (this, name, obj0, val1, val2); }
     675             : 
     676             :   jclass FindClass (const char * val0)
     677             :   { return functions->FindClass (this, val0); }
     678             : 
     679             :   jmethodID FromReflectedMethod (jobject obj0)
     680             :   { return functions->FromReflectedMethod (this, obj0); }
     681             : 
     682             :   jfieldID FromReflectedField (jobject obj0)
     683             :   { return functions->FromReflectedField (this, obj0); }
     684             : 
     685             :   jobject ToReflectedMethod (jclass cl0, jmethodID meth1, jboolean val2)
     686             :   { return functions->ToReflectedMethod (this, cl0, meth1, val2); }
     687             : 
     688             :   jclass GetSuperclass (jclass cl0)
     689             :   { return functions->GetSuperclass (this, cl0); }
     690             : 
     691             :   jboolean IsAssignableFrom (jclass cl0, jclass cl1)
     692             :   { return functions->IsAssignableFrom (this, cl0, cl1); }
     693             : 
     694             :   jobject ToReflectedField (jclass cl0, jfieldID fld1, jboolean val2)
     695             :   { return functions->ToReflectedField (this, cl0, fld1, val2); }
     696             : 
     697             :   jint Throw (jthrowable val0)
     698             :   { return functions->Throw (this, val0); }
     699             : 
     700             :   jint ThrowNew (jclass cl0, const char * val1)
     701             :   { return functions->ThrowNew (this, cl0, val1); }
     702             : 
     703             :   jthrowable ExceptionOccurred ()
     704             :   { return functions->ExceptionOccurred (this); }
     705             : 
     706             :   void ExceptionDescribe ()
     707             :   { functions->ExceptionDescribe (this); }
     708             : 
     709             :   void ExceptionClear ()
     710             :   { functions->ExceptionClear (this); }
     711             : 
     712             :   void FatalError (const char * val0)
     713             :   { functions->FatalError (this, val0); }
     714             : 
     715             :   jint PushLocalFrame (jint val0)
     716             :   { return functions->PushLocalFrame (this, val0); }
     717             : 
     718             :   jobject PopLocalFrame (jobject obj0)
     719             :   { return functions->PopLocalFrame (this, obj0); }
     720             : 
     721             :   jobject NewGlobalRef (jobject obj0)
     722             :   { return functions->NewGlobalRef (this, obj0); }
     723             : 
     724             :   void DeleteGlobalRef (jobject obj0)
     725             :   { functions->DeleteGlobalRef (this, obj0); }
     726             : 
     727             :   void DeleteLocalRef (jobject obj0)
     728             :   { functions->DeleteLocalRef (this, obj0); }
     729             : 
     730             :   jboolean IsSameObject (jobject obj0, jobject obj1)
     731             :   { return functions->IsSameObject (this, obj0, obj1); }
     732             : 
     733             :   jobject NewLocalRef (jobject obj0)
     734             :   { return functions->NewLocalRef (this, obj0); }
     735             : 
     736             :   jint EnsureLocalCapacity (jint val0)
     737             :   { return functions->EnsureLocalCapacity (this, val0); }
     738             : 
     739             :   jobject AllocObject (jclass cl0)
     740             :   { return functions->AllocObject (this, cl0); }
     741             : 
     742             :   jobject NewObject (jclass cl0, jmethodID meth1, ...)
     743             :   {
     744             :     va_list args;
     745             :     va_start (args, meth1);
     746             :     jobject result = functions->NewObjectV (this, cl0, meth1, args);
     747             :     va_end (args);
     748             :     return result;
     749             :   }
     750             : 
     751             :   jobject NewObjectV (jclass cl0, jmethodID meth1, va_list val2)
     752             :   { return functions->NewObjectV (this, cl0, meth1, val2); }
     753             : 
     754             :   jobject NewObjectA (jclass cl0, jmethodID meth1, jvalue * val2)
     755             :   { return functions->NewObjectA (this, cl0, meth1, val2); }
     756             : 
     757             :   jclass GetObjectClass (jobject obj0)
     758             :   { return functions->GetObjectClass (this, obj0); }
     759             : 
     760             :   jboolean IsInstanceOf (jobject obj0, jclass cl1)
     761             :   { return functions->IsInstanceOf (this, obj0, cl1); }
     762             : 
     763             :   jmethodID GetMethodID (jclass cl0, const char * val1, const char * val2)
     764             :   { return functions->GetMethodID (this, cl0, val1, val2); }
     765             : 
     766             :   jobject CallObjectMethod (jobject obj0, jmethodID meth1, ...)
     767             :   {
     768             :     va_list args;
     769             :     va_start (args, meth1);
     770             :     jobject result = functions->CallObjectMethodV (this, obj0, meth1, args);
     771             :     va_end (args);
     772             :     return result;
     773             :   }
     774             : 
     775             :   jobject CallObjectMethodV (jobject obj0, jmethodID meth1, va_list val2)
     776             :   { return functions->CallObjectMethodV (this, obj0, meth1, val2); }
     777             : 
     778             :   jobject CallObjectMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
     779             :   { return functions->CallObjectMethodA (this, obj0, meth1, val2); }
     780             : 
     781             :   jboolean CallBooleanMethod (jobject obj0, jmethodID meth1, ...)
     782             :   {
     783             :     va_list args;
     784             :     va_start (args, meth1);
     785             :     jboolean result = functions->CallBooleanMethodV (this, obj0, meth1, args);
     786             :     va_end (args);
     787             :     return result;
     788             :   }
     789             : 
     790             :   jboolean CallBooleanMethodV (jobject obj0, jmethodID meth1, va_list val2)
     791             :   { return functions->CallBooleanMethodV (this, obj0, meth1, val2); }
     792             : 
     793             :   jboolean CallBooleanMethodA (jobject obj0, jmethodID meth1,
     794             :                                const jvalue * val2)
     795             :   { return functions->CallBooleanMethodA (this, obj0, meth1, val2); }
     796             : 
     797             :   jbyte CallByteMethod (jobject obj0, jmethodID meth1, ...)
     798             :   {
     799             :     va_list args;
     800             :     va_start (args, meth1);
     801             :     jbyte result = functions->CallByteMethodV (this, obj0, meth1, args);
     802             :     va_end (args);
     803             :     return result;
     804             :   }
     805             : 
     806             :   jbyte CallByteMethodV (jobject obj0, jmethodID meth1, va_list val2)
     807             :   { return functions->CallByteMethodV (this, obj0, meth1, val2); }
     808             : 
     809             :   jbyte CallByteMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
     810             :   { return functions->CallByteMethodA (this, obj0, meth1, val2); }
     811             : 
     812             :   jchar CallCharMethod (jobject obj0, jmethodID meth1, ...)
     813             :   {
     814             :     va_list args;
     815             :     va_start (args, meth1);
     816             :     jchar result = functions->CallCharMethodV (this, obj0, meth1, args);
     817             :     va_end (args);
     818             :     return result;
     819             :   }
     820             : 
     821             :   jchar CallCharMethodV (jobject obj0, jmethodID meth1, va_list val2)
     822             :   { return functions->CallCharMethodV (this, obj0, meth1, val2); }
     823             : 
     824             :   jchar CallCharMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
     825             :   { return functions->CallCharMethodA (this, obj0, meth1, val2); }
     826             : 
     827             :   jshort CallShortMethod (jobject obj0, jmethodID meth1, ...)
     828             :   {
     829             :     va_list args;
     830             :     va_start (args, meth1);
     831             :     jshort result = functions->CallShortMethodV (this, obj0, meth1, args);
     832             :     va_end (args);
     833             :     return result;
     834             :   }
     835             : 
     836             :   jshort CallShortMethodV (jobject obj0, jmethodID meth1, va_list val2)
     837             :   { return functions->CallShortMethodV (this, obj0, meth1, val2); }
     838             : 
     839             :   jshort CallShortMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
     840             :   { return functions->CallShortMethodA (this, obj0, meth1, val2); }
     841             : 
     842             :   jint CallIntMethod (jobject obj0, jmethodID meth1, ...)
     843             :   {
     844             :     va_list args;
     845             :     va_start (args, meth1);
     846             :     jint result = functions->CallIntMethodV (this, obj0, meth1, args);
     847             :     va_end (args);
     848             :     return result;
     849             :   }
     850             : 
     851             :   jint CallIntMethodV (jobject obj0, jmethodID meth1, va_list val2)
     852             :   { return functions->CallIntMethodV (this, obj0, meth1, val2); }
     853             : 
     854             :   jint CallIntMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
     855             :   { return functions->CallIntMethodA (this, obj0, meth1, val2); }
     856             : 
     857             :   jlong CallLongMethod (jobject obj0, jmethodID meth1, ...)
     858             :   {
     859             :     va_list args;
     860             :     va_start (args, meth1);
     861             :     jlong result = functions->CallLongMethodV (this, obj0, meth1, args);
     862             :     va_end (args);
     863             :     return result;
     864             :   }
     865             : 
     866             :   jlong CallLongMethodV (jobject obj0, jmethodID meth1, va_list val2)
     867             :   { return functions->CallLongMethodV (this, obj0, meth1, val2); }
     868             : 
     869             :   jlong CallLongMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
     870             :   { return functions->CallLongMethodA (this, obj0, meth1, val2); }
     871             : 
     872             :   jfloat CallFloatMethod (jobject obj0, jmethodID meth1, ...)
     873             :   {
     874             :     va_list args;
     875             :     va_start (args, meth1);
     876             :     jfloat result = functions->CallFloatMethodV (this, obj0, meth1, args);
     877             :     va_end (args);
     878             :     return result;
     879             :   }
     880             : 
     881             :   jfloat CallFloatMethodV (jobject obj0, jmethodID meth1, va_list val2)
     882             :   { return functions->CallFloatMethodV (this, obj0, meth1, val2); }
     883             : 
     884             :   jfloat CallFloatMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
     885             :   { return functions->CallFloatMethodA (this, obj0, meth1, val2); }
     886             : 
     887             :   jdouble CallDoubleMethod (jobject obj0, jmethodID meth1, ...)
     888             :   {
     889             :     va_list args;
     890             :     va_start (args, meth1);
     891             :     jdouble result = functions->CallDoubleMethodV (this, obj0, meth1, args);
     892             :     va_end (args);
     893             :     return result;
     894             :   }
     895             : 
     896             :   jdouble CallDoubleMethodV (jobject obj0, jmethodID meth1, va_list val2)
     897             :   { return functions->CallDoubleMethodV (this, obj0, meth1, val2); }
     898             : 
     899             :   jdouble CallDoubleMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
     900             :   { return functions->CallDoubleMethodA (this, obj0, meth1, val2); }
     901             : 
     902             :   void CallVoidMethod (jobject obj0, jmethodID meth1, ...)
     903             :   {
     904             :     va_list args;
     905             :     va_start (args, meth1);
     906             :     functions->CallVoidMethodV (this, obj0, meth1, args);
     907             :     va_end (args);
     908             :   }
     909             : 
     910             :   void CallVoidMethodV (jobject obj0, jmethodID meth1, va_list val2)
     911             :   { functions->CallVoidMethodV (this, obj0, meth1, val2); }
     912             : 
     913             :   void CallVoidMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
     914             :   { functions->CallVoidMethodA (this, obj0, meth1, val2); }
     915             : 
     916             :   jobject CallNonvirtualObjectMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
     917             :   {
     918             :     va_list args;
     919             :     va_start (args, meth2);
     920             :     jobject result = functions->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, args);
     921             :     va_end (args);
     922             :     return result;
     923             :   }
     924             : 
     925             :   jobject CallNonvirtualObjectMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
     926             :   { return functions->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, val3); }
     927             : 
     928             :   jobject CallNonvirtualObjectMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
     929             :   { return functions->CallNonvirtualObjectMethodA (this, obj0, cl1, meth2, val3); }
     930             : 
     931             :   jboolean CallNonvirtualBooleanMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
     932             :   {
     933             :     va_list args;
     934             :     va_start (args, meth2);
     935             :     jboolean result = functions->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, args);
     936             :     va_end (args);
     937             :     return result;
     938             :   }
     939             : 
     940             :   jboolean CallNonvirtualBooleanMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
     941             :   { return functions->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, val3); }
     942             : 
     943             :   jboolean CallNonvirtualBooleanMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
     944             :   { return functions->CallNonvirtualBooleanMethodA (this, obj0, cl1, meth2, val3); }
     945             : 
     946             :   jbyte CallNonvirtualByteMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
     947             :   {
     948             :     va_list args;
     949             :     va_start (args, meth2);
     950             :     jbyte result = functions->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, args);
     951             :     va_end (args);
     952             :     return result;
     953             :   }
     954             : 
     955             :   jbyte CallNonvirtualByteMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
     956             :   { return functions->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, val3); }
     957             : 
     958             :   jbyte CallNonvirtualByteMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
     959             :   { return functions->CallNonvirtualByteMethodA (this, obj0, cl1, meth2, val3); }
     960             : 
     961             :   jchar CallNonvirtualCharMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
     962             :   {
     963             :     va_list args;
     964             :     va_start (args, meth2);
     965             :     jchar result = functions->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, args);
     966             :     va_end (args);
     967             :     return result;
     968             :   }
     969             : 
     970             :   jchar CallNonvirtualCharMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
     971             :   { return functions->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, val3); }
     972             : 
     973             :   jchar CallNonvirtualCharMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
     974             :   { return functions->CallNonvirtualCharMethodA (this, obj0, cl1, meth2, val3); }
     975             : 
     976             :   jshort CallNonvirtualShortMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
     977             :   {
     978             :     va_list args;
     979             :     va_start (args, meth2);
     980             :     jshort result = functions->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, args);
     981             :     va_end (args);
     982             :     return result;
     983             :   }
     984             : 
     985             :   jshort CallNonvirtualShortMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
     986             :   { return functions->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, val3); }
     987             : 
     988             :   jshort CallNonvirtualShortMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
     989             :   { return functions->CallNonvirtualShortMethodA (this, obj0, cl1, meth2, val3); }
     990             : 
     991             :   jint CallNonvirtualIntMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
     992             :   {
     993             :     va_list args;
     994             :     va_start (args, meth2);
     995             :     jint result = functions->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, args);
     996             :     va_end (args);
     997             :     return result;
     998             :   }
     999             : 
    1000             :   jint CallNonvirtualIntMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
    1001             :   { return functions->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, val3); }
    1002             : 
    1003             :   jint CallNonvirtualIntMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
    1004             :   { return functions->CallNonvirtualIntMethodA (this, obj0, cl1, meth2, val3); }
    1005             : 
    1006             :   jlong CallNonvirtualLongMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
    1007             :   {
    1008             :     va_list args;
    1009             :     va_start (args, meth2);
    1010             :     jlong result = functions->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, args);
    1011             :     va_end (args);
    1012             :     return result;
    1013             :   }
    1014             : 
    1015             :   jlong CallNonvirtualLongMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
    1016             :   { return functions->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, val3); }
    1017             : 
    1018             :   jlong CallNonvirtualLongMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
    1019             :   { return functions->CallNonvirtualLongMethodA (this, obj0, cl1, meth2, val3); }
    1020             : 
    1021             :   jfloat CallNonvirtualFloatMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
    1022             :   {
    1023             :     va_list args;
    1024             :     va_start (args, meth2);
    1025             :     jfloat result = functions->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, args);
    1026             :     va_end (args);
    1027             :     return result;
    1028             :   }
    1029             : 
    1030             :   jfloat CallNonvirtualFloatMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
    1031             :   { return functions->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, val3); }
    1032             : 
    1033             :   jfloat CallNonvirtualFloatMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
    1034             :   { return functions->CallNonvirtualFloatMethodA (this, obj0, cl1, meth2, val3); }
    1035             : 
    1036             :   jdouble CallNonvirtualDoubleMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
    1037             :   {
    1038             :     va_list args;
    1039             :     va_start (args, meth2);
    1040             :     jdouble result = functions->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, args);
    1041             :     va_end (args);
    1042             :     return result;
    1043             :   }
    1044             : 
    1045             :   jdouble CallNonvirtualDoubleMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
    1046             :   { return functions->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, val3); }
    1047             : 
    1048             :   jdouble CallNonvirtualDoubleMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
    1049             :   { return functions->CallNonvirtualDoubleMethodA (this, obj0, cl1, meth2, val3); }
    1050             : 
    1051             :   void CallNonvirtualVoidMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
    1052             :   {
    1053             :     va_list args;
    1054             :     va_start (args, meth2);
    1055             :     functions->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, args);
    1056             :     va_end (args);
    1057             :   }
    1058             : 
    1059             :   void CallNonvirtualVoidMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
    1060             :   { functions->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, val3); }
    1061             : 
    1062             :   void CallNonvirtualVoidMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
    1063             :   { functions->CallNonvirtualVoidMethodA (this, obj0, cl1, meth2, val3); }
    1064             : 
    1065             :   jfieldID GetFieldID (jclass cl0, const char * val1, const char * val2)
    1066             :   { return functions->GetFieldID (this, cl0, val1, val2); }
    1067             : 
    1068             :   jobject GetObjectField (jobject obj0, jfieldID fld1)
    1069             :   { return functions->GetObjectField (this, obj0, fld1); }
    1070             : 
    1071             :   jboolean GetBooleanField (jobject obj0, jfieldID fld1)
    1072             :   { return functions->GetBooleanField (this, obj0, fld1); }
    1073             : 
    1074             :   jbyte GetByteField (jobject obj0, jfieldID fld1)
    1075             :   { return functions->GetByteField (this, obj0, fld1); }
    1076             : 
    1077             :   jchar GetCharField (jobject obj0, jfieldID fld1)
    1078             :   { return functions->GetCharField (this, obj0, fld1); }
    1079             : 
    1080             :   jshort GetShortField (jobject obj0, jfieldID fld1)
    1081             :   { return functions->GetShortField (this, obj0, fld1); }
    1082             : 
    1083             :   jint GetIntField (jobject obj0, jfieldID fld1)
    1084             :   { return functions->GetIntField (this, obj0, fld1); }
    1085             : 
    1086             :   jlong GetLongField (jobject obj0, jfieldID fld1)
    1087             :   { return functions->GetLongField (this, obj0, fld1); }
    1088             : 
    1089             :   jfloat GetFloatField (jobject obj0, jfieldID fld1)
    1090             :   { return functions->GetFloatField (this, obj0, fld1); }
    1091             : 
    1092             :   jdouble GetDoubleField (jobject obj0, jfieldID fld1)
    1093             :   { return functions->GetDoubleField (this, obj0, fld1); }
    1094             : 
    1095             :   void SetObjectField (jobject obj0, jfieldID fld1, jobject obj2)
    1096             :   { functions->SetObjectField (this, obj0, fld1, obj2); }
    1097             : 
    1098             :   void SetBooleanField (jobject obj0, jfieldID fld1, jboolean val2)
    1099             :   { functions->SetBooleanField (this, obj0, fld1, val2); }
    1100             : 
    1101             :   void SetByteField (jobject obj0, jfieldID fld1, jbyte val2)
    1102             :   { functions->SetByteField (this, obj0, fld1, val2); }
    1103             : 
    1104             :   void SetCharField (jobject obj0, jfieldID fld1, jchar val2)
    1105             :   { functions->SetCharField (this, obj0, fld1, val2); }
    1106             : 
    1107             :   void SetShortField (jobject obj0, jfieldID fld1, jshort val2)
    1108             :   { functions->SetShortField (this, obj0, fld1, val2); }
    1109             : 
    1110             :   void SetIntField (jobject obj0, jfieldID fld1, jint val2)
    1111             :   { functions->SetIntField (this, obj0, fld1, val2); }
    1112             : 
    1113             :   void SetLongField (jobject obj0, jfieldID fld1, jlong val2)
    1114             :   { functions->SetLongField (this, obj0, fld1, val2); }
    1115             : 
    1116             :   void SetFloatField (jobject obj0, jfieldID fld1, jfloat val2)
    1117             :   { functions->SetFloatField (this, obj0, fld1, val2); }
    1118             : 
    1119             :   void SetDoubleField (jobject obj0, jfieldID fld1, jdouble val2)
    1120             :   { functions->SetDoubleField (this, obj0, fld1, val2); }
    1121             : 
    1122             :   jmethodID GetStaticMethodID (jclass cl0, const char * val1, const char * val2)
    1123             :   { return functions->GetStaticMethodID (this, cl0, val1, val2); }
    1124             : 
    1125             :   jobject CallStaticObjectMethod (jclass cl0, jmethodID meth1, ...)
    1126             :   {
    1127             :     va_list args;
    1128             :     va_start (args, meth1);
    1129             :     jobject result = functions->CallStaticObjectMethodV (this, cl0, meth1, args);
    1130             :     va_end (args);
    1131             :     return result;
    1132             :   }
    1133             : 
    1134             :   jobject CallStaticObjectMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1135             :   { return functions->CallStaticObjectMethodV (this, cl0, meth1, val2); }
    1136             : 
    1137             :   jobject CallStaticObjectMethodA (jclass cl0, jmethodID meth1,
    1138             :                                    const jvalue * val2)
    1139             :   { return functions->CallStaticObjectMethodA (this, cl0, meth1, val2); }
    1140             : 
    1141             :   jboolean CallStaticBooleanMethod (jclass cl0, jmethodID meth1, ...)
    1142             :   {
    1143             :     va_list args;
    1144             :     va_start (args, meth1);
    1145             :     jboolean result = functions->CallStaticBooleanMethodV (this, cl0, meth1, args);
    1146             :     va_end (args);
    1147             :     return result;
    1148             :   }
    1149             : 
    1150             :   jboolean CallStaticBooleanMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1151             :   { return functions->CallStaticBooleanMethodV (this, cl0, meth1, val2); }
    1152             : 
    1153             :   jboolean CallStaticBooleanMethodA (jclass cl0, jmethodID meth1,
    1154             :                                      const jvalue * val2)
    1155             :   { return functions->CallStaticBooleanMethodA (this, cl0, meth1, val2); }
    1156             : 
    1157             :   jbyte CallStaticByteMethod (jclass cl0, jmethodID meth1, ...)
    1158             :   {
    1159             :     va_list args;
    1160             :     va_start (args, meth1);
    1161             :     jbyte result = functions->CallStaticByteMethodV (this, cl0, meth1, args);
    1162             :     va_end (args);
    1163             :     return result;
    1164             :   }
    1165             : 
    1166             :   jbyte CallStaticByteMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1167             :   { return functions->CallStaticByteMethodV (this, cl0, meth1, val2); }
    1168             : 
    1169             :   jbyte CallStaticByteMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
    1170             :   { return functions->CallStaticByteMethodA (this, cl0, meth1, val2); }
    1171             : 
    1172             :   jchar CallStaticCharMethod (jclass cl0, jmethodID meth1, ...)
    1173             :   {
    1174             :     va_list args;
    1175             :     va_start (args, meth1);
    1176             :     jchar result = functions->CallStaticCharMethodV (this, cl0, meth1, args);
    1177             :     va_end (args);
    1178             :     return result;
    1179             :   }
    1180             : 
    1181             :   jchar CallStaticCharMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1182             :   { return functions->CallStaticCharMethodV (this, cl0, meth1, val2); }
    1183             : 
    1184             :   jchar CallStaticCharMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
    1185             :   { return functions->CallStaticCharMethodA (this, cl0, meth1, val2); }
    1186             : 
    1187             :   jshort CallStaticShortMethod (jclass cl0, jmethodID meth1, ...)
    1188             :   {
    1189             :     va_list args;
    1190             :     va_start (args, meth1);
    1191             :     jshort result = functions->CallStaticShortMethodV (this, cl0, meth1, args);
    1192             :     va_end (args);
    1193             :     return result;
    1194             :   }
    1195             : 
    1196             :   jshort CallStaticShortMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1197             :   { return functions->CallStaticShortMethodV (this, cl0, meth1, val2); }
    1198             : 
    1199             :   jshort CallStaticShortMethodA (jclass cl0, jmethodID meth1,
    1200             :                                  const jvalue * val2)
    1201             :   { return functions->CallStaticShortMethodA (this, cl0, meth1, val2); }
    1202             : 
    1203             :   jint CallStaticIntMethod (jclass cl0, jmethodID meth1, ...)
    1204             :   {
    1205             :     va_list args;
    1206             :     va_start (args, meth1);
    1207             :     jint result = functions->CallStaticIntMethodV (this, cl0, meth1, args);
    1208             :     va_end (args);
    1209             :     return result;
    1210             :   }
    1211             : 
    1212             :   jint CallStaticIntMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1213             :   { return functions->CallStaticIntMethodV (this, cl0, meth1, val2); }
    1214             : 
    1215             :   jint CallStaticIntMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
    1216             :   { return functions->CallStaticIntMethodA (this, cl0, meth1, val2); }
    1217             : 
    1218             :   jlong CallStaticLongMethod (jclass cl0, jmethodID meth1, ...)
    1219             :   {
    1220             :     va_list args;
    1221             :     va_start (args, meth1);
    1222             :     jlong result = functions->CallStaticLongMethodV (this, cl0, meth1, args);
    1223             :     va_end (args);
    1224             :     return result;
    1225             :   }
    1226             : 
    1227             :   jlong CallStaticLongMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1228             :   { return functions->CallStaticLongMethodV (this, cl0, meth1, val2); }
    1229             : 
    1230             :   jlong CallStaticLongMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
    1231             :   { return functions->CallStaticLongMethodA (this, cl0, meth1, val2); }
    1232             : 
    1233             :   jfloat CallStaticFloatMethod (jclass cl0, jmethodID meth1, ...)
    1234             :   {
    1235             :     va_list args;
    1236             :     va_start (args, meth1);
    1237             :     jfloat result = functions->CallStaticFloatMethodV (this, cl0, meth1, args);
    1238             :     va_end (args);
    1239             :     return result;
    1240             :   }
    1241             : 
    1242             :   jfloat CallStaticFloatMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1243             :   { return functions->CallStaticFloatMethodV (this, cl0, meth1, val2); }
    1244             : 
    1245             :   jfloat CallStaticFloatMethodA (jclass cl0, jmethodID meth1,
    1246             :                                  const jvalue * val2)
    1247             :   { return functions->CallStaticFloatMethodA (this, cl0, meth1, val2); }
    1248             : 
    1249             :   jdouble CallStaticDoubleMethod (jclass cl0, jmethodID meth1, ...)
    1250             :   {
    1251             :     va_list args;
    1252             :     va_start (args, meth1);
    1253             :     jdouble result = functions->CallStaticDoubleMethodV (this, cl0, meth1, args);
    1254             :     va_end (args);
    1255             :     return result;
    1256             :   }
    1257             : 
    1258             :   jdouble CallStaticDoubleMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1259             :   { return functions->CallStaticDoubleMethodV (this, cl0, meth1, val2); }
    1260             : 
    1261             :   jdouble CallStaticDoubleMethodA (jclass cl0, jmethodID meth1,
    1262             :                                    const jvalue * val2)
    1263             :   { return functions->CallStaticDoubleMethodA (this, cl0, meth1, val2); }
    1264             : 
    1265             :   void CallStaticVoidMethod (jclass cl0, jmethodID meth1, ...)
    1266             :   {
    1267             :     va_list args;
    1268             :     va_start (args, meth1);
    1269             :     functions->CallStaticVoidMethodV (this, cl0, meth1, args);
    1270             :     va_end (args);
    1271             :   }
    1272             : 
    1273             :   void CallStaticVoidMethodV (jclass cl0, jmethodID meth1, va_list val2)
    1274             :   { functions->CallStaticVoidMethodV (this, cl0, meth1, val2); }
    1275             : 
    1276             :   void CallStaticVoidMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
    1277             :   { functions->CallStaticVoidMethodA (this, cl0, meth1, val2); }
    1278             : 
    1279             :   jfieldID GetStaticFieldID (jclass cl0, const char * val1, const char * val2)
    1280             :   { return functions->GetStaticFieldID (this, cl0, val1, val2); }
    1281             : 
    1282             :   jobject GetStaticObjectField (jclass cl0, jfieldID fld1)
    1283             :   { return functions->GetStaticObjectField (this, cl0, fld1); }
    1284             : 
    1285             :   jboolean GetStaticBooleanField (jclass cl0, jfieldID fld1)
    1286             :   { return functions->GetStaticBooleanField (this, cl0, fld1); }
    1287             : 
    1288             :   jbyte GetStaticByteField (jclass cl0, jfieldID fld1)
    1289             :   { return functions->GetStaticByteField (this, cl0, fld1); }
    1290             : 
    1291             :   jchar GetStaticCharField (jclass cl0, jfieldID fld1)
    1292             :   { return functions->GetStaticCharField (this, cl0, fld1); }
    1293             : 
    1294             :   jshort GetStaticShortField (jclass cl0, jfieldID fld1)
    1295             :   { return functions->GetStaticShortField (this, cl0, fld1); }
    1296             : 
    1297             :   jint GetStaticIntField (jclass cl0, jfieldID fld1)
    1298             :   { return functions->GetStaticIntField (this, cl0, fld1); }
    1299             : 
    1300             :   jlong GetStaticLongField (jclass cl0, jfieldID fld1)
    1301             :   { return functions->GetStaticLongField (this, cl0, fld1); }
    1302             : 
    1303             :   jfloat GetStaticFloatField (jclass cl0, jfieldID fld1)
    1304             :   { return functions->GetStaticFloatField (this, cl0, fld1); }
    1305             : 
    1306             :   jdouble GetStaticDoubleField (jclass cl0, jfieldID fld1)
    1307             :   { return functions->GetStaticDoubleField (this, cl0, fld1); }
    1308             : 
    1309             :   void SetStaticObjectField (jclass cl0, jfieldID fld1, jobject obj2)
    1310             :   { functions->SetStaticObjectField (this, cl0, fld1, obj2); }
    1311             : 
    1312             :   void SetStaticBooleanField (jclass cl0, jfieldID fld1, jboolean val2)
    1313             :   { functions->SetStaticBooleanField (this, cl0, fld1, val2); }
    1314             : 
    1315             :   void SetStaticByteField (jclass cl0, jfieldID fld1, jbyte val2)
    1316             :   { functions->SetStaticByteField (this, cl0, fld1, val2); }
    1317             : 
    1318             :   void SetStaticCharField (jclass cl0, jfieldID fld1, jchar val2)
    1319             :   { functions->SetStaticCharField (this, cl0, fld1, val2); }
    1320             : 
    1321             :   void SetStaticShortField (jclass cl0, jfieldID fld1, jshort val2)
    1322             :   { functions->SetStaticShortField (this, cl0, fld1, val2); }
    1323             : 
    1324             :   void SetStaticIntField (jclass cl0, jfieldID fld1, jint val2)
    1325             :   { functions->SetStaticIntField (this, cl0, fld1, val2); }
    1326             : 
    1327             :   void SetStaticLongField (jclass cl0, jfieldID fld1, jlong val2)
    1328             :   { functions->SetStaticLongField (this, cl0, fld1, val2); }
    1329             : 
    1330             :   void SetStaticFloatField (jclass cl0, jfieldID fld1, jfloat val2)
    1331             :   { functions->SetStaticFloatField (this, cl0, fld1, val2); }
    1332             : 
    1333             :   void SetStaticDoubleField (jclass cl0, jfieldID fld1, jdouble val2)
    1334             :   { functions->SetStaticDoubleField (this, cl0, fld1, val2); }
    1335             : 
    1336             :   jstring NewString (const jchar * val0, jsize val1)
    1337             :   { return functions->NewString (this, val0, val1); }
    1338             : 
    1339             :   jint GetStringLength (jstring val0)
    1340             :   { return functions->GetStringLength (this, val0); }
    1341             : 
    1342             :   const jchar * GetStringChars (jstring val0, jboolean * val1)
    1343             :   { return functions->GetStringChars (this, val0, val1); }
    1344             : 
    1345             :   void ReleaseStringChars (jstring val0, const jchar * val1)
    1346             :   { functions->ReleaseStringChars (this, val0, val1); }
    1347             : 
    1348             :   jstring NewStringUTF (const char * val0)
    1349             :   { return functions->NewStringUTF (this, val0); }
    1350             : 
    1351             :   jsize GetStringUTFLength (jstring val0)
    1352             :   { return functions->GetStringUTFLength (this, val0); }
    1353             : 
    1354             :   const char * GetStringUTFChars (jstring val0, jboolean * val1)
    1355             :   { return functions->GetStringUTFChars (this, val0, val1); }
    1356             : 
    1357             :   void ReleaseStringUTFChars (jstring val0, const char * val1)
    1358             :   { functions->ReleaseStringUTFChars (this, val0, val1); }
    1359             : 
    1360             :   jsize GetArrayLength (jarray val0)
    1361             :   { return functions->GetArrayLength (this, val0); }
    1362             : 
    1363             :   jobjectArray NewObjectArray (jsize val0, jclass cl1, jobject obj2)
    1364             :   { return functions->NewObjectArray (this, val0, cl1, obj2); }
    1365             : 
    1366             :   jobject GetObjectArrayElement (jobjectArray val0, jsize val1)
    1367             :   { return functions->GetObjectArrayElement (this, val0, val1); }
    1368             : 
    1369             :   void SetObjectArrayElement (jobjectArray val0, jsize val1, jobject obj2)
    1370             :   { functions->SetObjectArrayElement (this, val0, val1, obj2); }
    1371             : 
    1372             :   jbooleanArray NewBooleanArray (jsize val0)
    1373             :   { return functions->NewBooleanArray (this, val0); }
    1374             : 
    1375             :   jbyteArray NewByteArray (jsize val0)
    1376             :   { return functions->NewByteArray (this, val0); }
    1377             : 
    1378             :   jcharArray NewCharArray (jsize val0)
    1379             :   { return functions->NewCharArray (this, val0); }
    1380             : 
    1381             :   jshortArray NewShortArray (jsize val0)
    1382             :   { return functions->NewShortArray (this, val0); }
    1383             : 
    1384             :   jintArray NewIntArray (jsize val0)
    1385             :   { return functions->NewIntArray (this, val0); }
    1386             : 
    1387             :   jlongArray NewLongArray (jsize val0)
    1388             :   { return functions->NewLongArray (this, val0); }
    1389             : 
    1390             :   jfloatArray NewFloatArray (jsize val0)
    1391             :   { return functions->NewFloatArray (this, val0); }
    1392             : 
    1393             :   jdoubleArray NewDoubleArray (jsize val0)
    1394             :   { return functions->NewDoubleArray (this, val0); }
    1395             : 
    1396             :   jboolean * GetBooleanArrayElements (jbooleanArray val0, jboolean * val1)
    1397             :   { return functions->GetBooleanArrayElements (this, val0, val1); }
    1398             : 
    1399             :   jbyte * GetByteArrayElements (jbyteArray val0, jboolean * val1)
    1400             :   { return functions->GetByteArrayElements (this, val0, val1); }
    1401             : 
    1402             :   jchar * GetCharArrayElements (jcharArray val0, jboolean * val1)
    1403             :   { return functions->GetCharArrayElements (this, val0, val1); }
    1404             : 
    1405             :   jshort * GetShortArrayElements (jshortArray val0, jboolean * val1)
    1406             :   { return functions->GetShortArrayElements (this, val0, val1); }
    1407             : 
    1408             :   jint * GetIntArrayElements (jintArray val0, jboolean * val1)
    1409             :   { return functions->GetIntArrayElements (this, val0, val1); }
    1410             : 
    1411             :   jlong * GetLongArrayElements (jlongArray val0, jboolean * val1)
    1412             :   { return functions->GetLongArrayElements (this, val0, val1); }
    1413             : 
    1414             :   jfloat * GetFloatArrayElements (jfloatArray val0, jboolean * val1)
    1415             :   { return functions->GetFloatArrayElements (this, val0, val1); }
    1416             : 
    1417             :   jdouble * GetDoubleArrayElements (jdoubleArray val0, jboolean * val1)
    1418             :   { return functions->GetDoubleArrayElements (this, val0, val1); }
    1419             : 
    1420             :   void ReleaseBooleanArrayElements (jbooleanArray val0, jboolean * val1, jint val2)
    1421             :   { functions->ReleaseBooleanArrayElements (this, val0, val1, val2); }
    1422             : 
    1423             :   void ReleaseByteArrayElements (jbyteArray val0, jbyte * val1, jint val2)
    1424             :   { functions->ReleaseByteArrayElements (this, val0, val1, val2); }
    1425             : 
    1426             :   void ReleaseCharArrayElements (jcharArray val0, jchar * val1, jint val2)
    1427             :   { functions->ReleaseCharArrayElements (this, val0, val1, val2); }
    1428             : 
    1429             :   void ReleaseShortArrayElements (jshortArray val0, jshort * val1, jint val2)
    1430             :   { functions->ReleaseShortArrayElements (this, val0, val1, val2); }
    1431             : 
    1432             :   void ReleaseIntArrayElements (jintArray val0, jint * val1, jint val2)
    1433             :   { functions->ReleaseIntArrayElements (this, val0, val1, val2); }
    1434             : 
    1435             :   void ReleaseLongArrayElements (jlongArray val0, jlong * val1, jint val2)
    1436             :   { functions->ReleaseLongArrayElements (this, val0, val1, val2); }
    1437             : 
    1438             :   void ReleaseFloatArrayElements (jfloatArray val0, jfloat * val1, jint val2)
    1439             :   { functions->ReleaseFloatArrayElements (this, val0, val1, val2); }
    1440             : 
    1441             :   void ReleaseDoubleArrayElements (jdoubleArray val0, jdouble * val1, jint val2)
    1442             :   { functions->ReleaseDoubleArrayElements (this, val0, val1, val2); }
    1443             : 
    1444             :   void GetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
    1445             :   { functions->GetBooleanArrayRegion (this, val0, val1, val2, val3); }
    1446             : 
    1447             :   void GetByteArrayRegion (jbyteArray val0, jsize val1, jsize val2, jbyte * val3)
    1448             :   { functions->GetByteArrayRegion (this, val0, val1, val2, val3); }
    1449             : 
    1450             :   void GetCharArrayRegion (jcharArray val0, jsize val1, jsize val2, jchar * val3)
    1451             :   { functions->GetCharArrayRegion (this, val0, val1, val2, val3); }
    1452             : 
    1453             :   void GetShortArrayRegion (jshortArray val0, jsize val1, jsize val2, jshort * val3)
    1454             :   { functions->GetShortArrayRegion (this, val0, val1, val2, val3); }
    1455             : 
    1456             :   void GetIntArrayRegion (jintArray val0, jsize val1, jsize val2, jint * val3)
    1457             :   { functions->GetIntArrayRegion (this, val0, val1, val2, val3); }
    1458             : 
    1459             :   void GetLongArrayRegion (jlongArray val0, jsize val1, jsize val2, jlong * val3)
    1460             :   { functions->GetLongArrayRegion (this, val0, val1, val2, val3); }
    1461             : 
    1462             :   void GetFloatArrayRegion (jfloatArray val0, jsize val1, jsize val2, jfloat * val3)
    1463             :   { functions->GetFloatArrayRegion (this, val0, val1, val2, val3); }
    1464             : 
    1465             :   void GetDoubleArrayRegion (jdoubleArray val0, jsize val1, jsize val2, jdouble * val3)
    1466             :   { functions->GetDoubleArrayRegion (this, val0, val1, val2, val3); }
    1467             : 
    1468             :   void SetBooleanArrayRegion (jbooleanArray val0, jsize val1, jsize val2, jboolean * val3)
    1469             :   { functions->SetBooleanArrayRegion (this, val0, val1, val2, val3); }
    1470             : 
    1471             :   void SetByteArrayRegion (jbyteArray val0, jsize val1, jsize val2, jbyte * val3)
    1472             :   { functions->SetByteArrayRegion (this, val0, val1, val2, val3); }
    1473             : 
    1474             :   void SetCharArrayRegion (jcharArray val0, jsize val1, jsize val2, jchar * val3)
    1475             :   { functions->SetCharArrayRegion (this, val0, val1, val2, val3); }
    1476             : 
    1477             :   void SetShortArrayRegion (jshortArray val0, jsize val1, jsize val2, jshort * val3)
    1478             :   { functions->SetShortArrayRegion (this, val0, val1, val2, val3); }
    1479             : 
    1480             :   void SetIntArrayRegion (jintArray val0, jsize val1, jsize val2, jint * val3)
    1481             :   { functions->SetIntArrayRegion (this, val0, val1, val2, val3); }
    1482             : 
    1483             :   void SetLongArrayRegion (jlongArray val0, jsize val1, jsize val2, jlong * val3)
    1484             :   { functions->SetLongArrayRegion (this, val0, val1, val2, val3); }
    1485             : 
    1486             :   void SetFloatArrayRegion (jfloatArray val0, jsize val1, jsize val2, jfloat * val3)
    1487             :   { functions->SetFloatArrayRegion (this, val0, val1, val2, val3); }
    1488             : 
    1489             :   void SetDoubleArrayRegion (jdoubleArray val0, jsize val1, jsize val2, jdouble * val3)
    1490             :   { functions->SetDoubleArrayRegion (this, val0, val1, val2, val3); }
    1491             : 
    1492             :   jint RegisterNatives (jclass cl0, const JNINativeMethod * val1, jint val2)
    1493             :   { return functions->RegisterNatives (this, cl0, val1, val2); }
    1494             : 
    1495             :   jint UnregisterNatives (jclass cl0)
    1496             :   { return functions->UnregisterNatives (this, cl0); }
    1497             : 
    1498             :   jint MonitorEnter (jobject obj0)
    1499             :   { return functions->MonitorEnter (this, obj0); }
    1500             : 
    1501             :   jint MonitorExit (jobject obj0)
    1502             :   { return functions->MonitorExit (this, obj0); }
    1503             : 
    1504         423 :   jint GetJavaVM (JavaVM ** val0)
    1505         423 :   { return functions->GetJavaVM (this, val0); }
    1506             : 
    1507             :   /* ---- JNI 1.2 functions ---- */
    1508             : 
    1509             :   void GetStringRegion (jstring val0, jsize val1, jsize val2, jchar * val3)
    1510             :   { functions->GetStringRegion (this, val0, val1, val2, val3); }
    1511             : 
    1512             :   void GetStringUTFRegion (jstring val0, jsize val1, jsize val2, char * val3)
    1513             :   { functions->GetStringUTFRegion (this, val0, val1, val2, val3); }
    1514             : 
    1515             :   void * GetPrimitiveArrayCritical (jarray val0, jboolean * val1)
    1516             :   { return functions->GetPrimitiveArrayCritical (this, val0, val1); }
    1517             : 
    1518             :   void ReleasePrimitiveArrayCritical (jarray val0, void * val1, jint val2)
    1519             :   { functions->ReleasePrimitiveArrayCritical (this, val0, val1, val2); }
    1520             : 
    1521             :   const jchar * GetStringCritical (jstring val0, jboolean * val1)
    1522             :   { return functions->GetStringCritical (this, val0, val1); }
    1523             : 
    1524             :   void ReleaseStringCritical (jstring val0, const jchar * val1)
    1525             :   { functions->ReleaseStringCritical (this, val0, val1); }
    1526             : 
    1527             :   jweak NewWeakGlobalRef (jobject obj0)
    1528             :   { return functions->NewWeakGlobalRef (this, obj0); }
    1529             : 
    1530             :   void DeleteWeakGlobalRef (jweak val0)
    1531             :   { functions->DeleteWeakGlobalRef (this, val0); }
    1532             : 
    1533             :   jboolean ExceptionCheck ()
    1534             :   { return functions->ExceptionCheck (this); }
    1535             : 
    1536             :   /* ---- JNI 1.4 functions ---- */
    1537             : 
    1538             :   jobject NewDirectByteBuffer (void *addr, jlong capacity)
    1539             :   { return functions->NewDirectByteBuffer (this, addr, capacity); }
    1540             : 
    1541             :   void *GetDirectBufferAddress (jobject buf)
    1542             :   { return functions->GetDirectBufferAddress (this, buf); }
    1543             : 
    1544             :   jlong GetDirectBufferCapacity (jobject buf)
    1545             :   { return functions->GetDirectBufferCapacity (this, buf); }
    1546             : 
    1547             :   /* ---- JNI 1.6 functions ---- */
    1548             : 
    1549             :   jobjectRefType GetObjectRefType (jobject obj)
    1550             :   { return functions->GetObjectRefType (this, obj); }
    1551             : };
    1552             : 
    1553             : #endif /* __cplusplus */
    1554             : 
    1555             : /*
    1556             :  * Invocation API.
    1557             :  */
    1558             : 
    1559             : struct JNIInvokeInterface_
    1560             : {
    1561             :   void *reserved0;
    1562             :   void *reserved1;
    1563             :   void *reserved2;
    1564             : 
    1565             :   jint (JNICALL *DestroyJavaVM)         (JavaVM *);
    1566             :   jint (JNICALL *AttachCurrentThread)   (JavaVM *, void **, void *);
    1567             :   jint (JNICALL *DetachCurrentThread)   (JavaVM *);
    1568             :   jint (JNICALL *GetEnv)                (JavaVM *, void **, jint);
    1569             :   jint (JNICALL *AttachCurrentThreadAsDaemon) (JavaVM *, void **, void *);
    1570             : };
    1571             : 
    1572             : #ifdef __cplusplus
    1573             : 
    1574             : class _Jv_JavaVM
    1575             : {
    1576             : public:
    1577             :   const struct JNIInvokeInterface_ *functions;
    1578             : 
    1579             :   jint DestroyJavaVM ()
    1580             :   { return functions->DestroyJavaVM (this); }
    1581             : 
    1582             :   jint AttachCurrentThread (void **penv, void *args)
    1583             :   { return functions->AttachCurrentThread (this, penv, args); }
    1584             : 
    1585             :   jint DetachCurrentThread ()
    1586             :   { return functions->DetachCurrentThread (this); }
    1587             : 
    1588             :   jint GetEnv (void **penv, jint version)
    1589             :   { return functions->GetEnv (this, penv, version); }
    1590             : 
    1591             :   jint AttachCurrentThreadAsDaemon (void **penv, void *args)
    1592             :   { return functions->AttachCurrentThreadAsDaemon (this, penv, args); }
    1593             : };
    1594             : 
    1595             : #endif /* __cplusplus */
    1596             : 
    1597             : typedef struct JavaVMAttachArgs
    1598             : {
    1599             :   jint version;                 /* Must be JNI_VERSION_1_2.  */
    1600             :   char *name;                   /* The name of the thread (or NULL).  */
    1601             :   jobject group;                /* Global ref of a ThreadGroup object
    1602             :                                    (or NULL).  */
    1603             : } JavaVMAttachArgs;
    1604             : 
    1605             : typedef struct JavaVMOption
    1606             : {
    1607             :   char *optionString;
    1608             :   void *extraInfo;
    1609             : } JavaVMOption;
    1610             : 
    1611             : typedef struct JavaVMInitArgs
    1612             : {
    1613             :   /* Must be JNI_VERSION_1_2.  */
    1614             :   jint version;
    1615             : 
    1616             :   /* Number of options.  */
    1617             :   jint nOptions;
    1618             : 
    1619             :   /* Options to the VM.  */
    1620             :   JavaVMOption *options;
    1621             : 
    1622             :   /* Whether we should ignore unrecognized options.  */
    1623             :   jboolean ignoreUnrecognized;
    1624             : } JavaVMInitArgs;
    1625             : 
    1626             : typedef struct JDK1_1InitArgs
    1627             : {
    1628             :   /* VM version.  Should be JNI_VERSION_1_1.  Note that before JDK
    1629             :      1.1.2, this field was named 'reserved0'.  (I don't know what the
    1630             :      current 'reserved0' field was named then.)  */
    1631             :   jint version;
    1632             : 
    1633             :   /* A null-terminated array of environment strings, each of the form
    1634             :      "KEY=VALUE".  This is used to set system properties.  Note that
    1635             :      before JDK 1.1.2, this field was named 'reserved1'.  */
    1636             :   char **properties;
    1637             : 
    1638             :   jint checkSource;
    1639             :   jint nativeStackSize;
    1640             :   jint javaStackSize;
    1641             :   jint minHeapSize;
    1642             :   jint maxHeapSize;
    1643             :   jint verifyMode;
    1644             :   const char *classpath;
    1645             : 
    1646             :   jint (JNICALL *vfprintf) (FILE *file, const char *fmt, va_list args);
    1647             :   void (JNICALL *exit) (jint value);
    1648             :   void (JNICALL *abort) (void);
    1649             : 
    1650             :   jint enableClassGC;
    1651             :   jint enableVerboseGC;
    1652             :   jint disableAsyncGC;
    1653             : 
    1654             :   jint reserved0;
    1655             :   jint reserved1;
    1656             :   jint reserved2;
    1657             : } JDK1_1InitArgs;
    1658             : 
    1659             : typedef struct JDK1_1AttachArgs
    1660             : {
    1661             :   /* Dummy field since C cannot have empty structs.  The name and type
    1662             :      are chosen to comply with the spec.  */
    1663             :   void *__padding;
    1664             : } JDK1_1AttachArgs;
    1665             : 
    1666             : 
    1667             : /* Keep c-font-lock-extra-types in alphabetical order. */
    1668             : /*
    1669             : Local Variables:
    1670             : c-font-lock-extra-types: ("\\sw+_t" \
    1671             :    "JNIEnv" "JNINativeMethod" "JavaVM" "JavaVMOption" "jarray" \
    1672             :    "jboolean" "jbooleanArray" "jbyte" "jbyteArray" "jchar"  "jcharArray" \
    1673             :    "jclass" "jdouble" "jdoubleArray" "jfieldID" "jfloat" "jfloatArray" \
    1674             :    "jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" \
    1675             :    "jstring" "jthrowable" "jvalue" "jweak")
    1676             : End:
    1677             : */
    1678             : 
    1679             : #endif /* _CLASSPATH_JNI_H */

Generated by: LCOV version 1.11