Main Page | Modules | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

xmog.h

00001 /*
00002  * Copyright 1999-2006 by Codemesh, Inc.  ALL RIGHTS RESERVED.
00003  */
00004 
00005 #ifndef xmog_inc
00006 #define xmog_inc
00007 
00008 
00082 
00083 #include "xmog-config.h"
00084 
00085 
00087 
00088 #if (XMOG_USE_EXTERNAL_JNI_DEFINITIONS==1)
00089 
00090 #   include <jni.h>
00091 
00092 #else
00093 
00094 #   include <stdio.h>
00095 #   include <stdarg.h>
00096 #   if (XMOG_HAS_SYS_INTTYPES==1)
00097 #       include <sys/inttypes.h>
00098 #   endif
00099 
00100 #   if (XMOG_WINDOWS==1)
00101 
00102 #       define JNIEXPORT __declspec(dllexport)
00103 #       define JNIIMPORT __declspec(dllimport)
00104 #       define JNICALL __stdcall
00105 
00106         typedef long            jint;
00107         typedef __int64         jlong;
00108         typedef signed char     jbyte;
00109 
00110 #   else
00111 
00112 #       define JNIEXPORT 
00113 #       define JNIIMPORT
00114 #       define JNICALL
00115 
00116 #   if (XMOG_AIX==1)
00117         typedef int32_t         jint;
00118         typedef int64_t         jlong;
00119 #   else
00120         typedef int             jint;
00121 #       if defined(_LP64) || defined(__64BIT__) 
00122             typedef long        jlong;
00123 #       else
00124             typedef long long   jlong;
00125 #       endif
00126 #   endif
00127 
00128         typedef signed char     jbyte;
00129 
00130 #   endif
00131 
00132 #   ifdef __cplusplus
00133 extern "C" {
00134 #   endif
00135 
00136 
00137 typedef unsigned char           jboolean;
00138 typedef unsigned short          jchar;
00139 typedef short                   jshort;
00140 typedef float                   jfloat;
00141 typedef double                  jdouble;
00142 
00143 #if (XMOG_AIX==1) && defined(__64BIT__)
00144     typedef jlong                   jsize;
00145 #else
00146     typedef jint                    jsize;
00147 #endif
00148 
00149 #ifdef __cplusplus
00150 
00151 class _jobject {};
00152 class _jclass : public _jobject {};
00153 class _jthrowable : public _jobject {};
00154 class _jstring : public _jobject {};
00155 class _jarray : public _jobject {};
00156 class _jbooleanArray : public _jarray {};
00157 class _jbyteArray : public _jarray {};
00158 class _jcharArray : public _jarray {};
00159 class _jshortArray : public _jarray {};
00160 class _jintArray : public _jarray {};
00161 class _jlongArray : public _jarray {};
00162 class _jfloatArray : public _jarray {};
00163 class _jdoubleArray : public _jarray {};
00164 class _jobjectArray : public _jarray {};
00165 
00166 typedef _jobject *jobject;
00167 typedef _jclass *jclass;
00168 typedef _jthrowable *jthrowable;
00169 typedef _jstring *jstring;
00170 typedef _jarray *jarray;
00171 typedef _jbooleanArray *jbooleanArray;
00172 typedef _jbyteArray *jbyteArray;
00173 typedef _jcharArray *jcharArray;
00174 typedef _jshortArray *jshortArray;
00175 typedef _jintArray *jintArray;
00176 typedef _jlongArray *jlongArray;
00177 typedef _jfloatArray *jfloatArray;
00178 typedef _jdoubleArray *jdoubleArray;
00179 typedef _jobjectArray *jobjectArray;
00180 
00181 #else
00182 
00183 struct _jobject;
00184 
00185 typedef struct _jobject *jobject;
00186 typedef jobject jclass;
00187 typedef jobject jthrowable;
00188 typedef jobject jstring;
00189 typedef jobject jarray;
00190 typedef jarray jbooleanArray;
00191 typedef jarray jbyteArray;
00192 typedef jarray jcharArray;
00193 typedef jarray jshortArray;
00194 typedef jarray jintArray;
00195 typedef jarray jlongArray;
00196 typedef jarray jfloatArray;
00197 typedef jarray jdoubleArray;
00198 typedef jarray jobjectArray;
00199 
00200 #endif
00201 
00202 typedef jobject jweak;
00203 
00211 typedef union jvalue {
00212     jboolean z;
00213     jbyte    b;
00214     jchar    c;
00215     jshort   s;
00216     jint     i;
00217     jlong    j;
00218     jfloat   f;
00219     jdouble  d;
00220     jobject  l;
00221 } jvalue;
00222 
00223 struct _jfieldID;
00224 typedef struct _jfieldID *jfieldID;
00225 
00226 struct _jmethodID;
00227 typedef struct _jmethodID *jmethodID;
00228 
00229 /*
00230  * jboolean constants
00231  */
00232 
00233 #define JNI_FALSE 0
00234 #define JNI_TRUE 1
00235 
00236 /*
00237  * possible return values for JNI functions.
00238  */
00239 
00240 #define JNI_OK           0                 /* success */
00241 #define JNI_ERR          (-1)              /* unknown error */
00242 #define JNI_EDETACHED    (-2)              /* thread detached from the VM */
00243 #define JNI_EVERSION     (-3)              /* JNI version error */
00244 #define JNI_ENOMEM       (-4)              /* not enough memory */
00245 #define JNI_EEXIST       (-5)              /* VM already created */
00246 #define JNI_EINVAL       (-6)              /* invalid arguments */
00247 
00248 /*
00249  * used in ReleaseScalarArrayElements
00250  */
00251 
00252 #define JNI_COMMIT 1
00253 #define JNI_ABORT 2
00254 
00255 /*
00256  * used in RegisterNatives to describe native method name, signature,
00257  * and function pointer.
00258  */
00259 
00260 typedef struct {
00261     char *name;
00262     char *signature;
00263     void *fnPtr;
00264 } JNINativeMethod;
00265 
00266 /*
00267  * JNI Native Method Interface.
00268  */
00269 
00270 struct JNINativeInterface_;
00271 
00272 struct JNIEnv_;
00273 
00274 #ifdef __cplusplus
00275 typedef JNIEnv_ JNIEnv;
00276 #else
00277 typedef const struct JNINativeInterface_ *JNIEnv;
00278 #endif
00279 
00280 /*
00281  * JNI Invocation Interface.
00282  */
00283 
00284 struct JNIInvokeInterface_;
00285 
00286 struct JavaVM_;
00287 
00288 #ifdef __cplusplus
00289 typedef JavaVM_ JavaVM;
00290 #else
00291 typedef const struct JNIInvokeInterface_ *JavaVM;
00292 #endif
00293 
00294 struct JNINativeInterface_ {
00295     void *reserved0;
00296     void *reserved1;
00297     void *reserved2;
00298 
00299     void *reserved3;
00300     jint (JNICALL *GetVersion)(JNIEnv *env);
00301 
00302     jclass (JNICALL *DefineClass)
00303       (JNIEnv *env, const char *name, jobject loader, const jbyte *buf,
00304        jsize len);
00305     jclass (JNICALL *FindClass)
00306       (JNIEnv *env, const char *name);
00307 
00308     jmethodID (JNICALL *FromReflectedMethod)
00309       (JNIEnv *env, jobject method);
00310     jfieldID (JNICALL *FromReflectedField)
00311       (JNIEnv *env, jobject field);
00312 
00313     jobject (JNICALL *ToReflectedMethod)
00314       (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);
00315 
00316     jclass (JNICALL *GetSuperclass)
00317       (JNIEnv *env, jclass sub);
00318     jboolean (JNICALL *IsAssignableFrom)
00319       (JNIEnv *env, jclass sub, jclass sup);
00320 
00321     jobject (JNICALL *ToReflectedField)
00322       (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);
00323 
00324     jint (JNICALL *Throw)
00325       (JNIEnv *env, jthrowable obj);
00326     jint (JNICALL *ThrowNew)
00327       (JNIEnv *env, jclass clazz, const char *msg);
00328     jthrowable (JNICALL *ExceptionOccurred)
00329       (JNIEnv *env);
00330     void (JNICALL *ExceptionDescribe)
00331       (JNIEnv *env);
00332     void (JNICALL *ExceptionClear)
00333       (JNIEnv *env);
00334     void (JNICALL *FatalError)
00335       (JNIEnv *env, const char *msg);
00336 
00337     jint (JNICALL *PushLocalFrame)
00338       (JNIEnv *env, jint capacity);
00339     jobject (JNICALL *PopLocalFrame)
00340       (JNIEnv *env, jobject result);
00341 
00342     jobject (JNICALL *NewGlobalRef)
00343       (JNIEnv *env, jobject lobj);
00344     void (JNICALL *DeleteGlobalRef)
00345       (JNIEnv *env, jobject gref);
00346     void (JNICALL *DeleteLocalRef)
00347       (JNIEnv *env, jobject obj);
00348     jboolean (JNICALL *IsSameObject)
00349       (JNIEnv *env, jobject obj1, jobject obj2);
00350     jobject (JNICALL *NewLocalRef)
00351       (JNIEnv *env, jobject ref);
00352     jint (JNICALL *EnsureLocalCapacity)
00353       (JNIEnv *env, jint capacity);
00354 
00355     jobject (JNICALL *AllocObject)
00356       (JNIEnv *env, jclass clazz);
00357     jobject (JNICALL *NewObject)
00358       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00359     jobject (JNICALL *NewObjectV)
00360       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00361     jobject (JNICALL *NewObjectA)
00362       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00363 
00364     jclass (JNICALL *GetObjectClass)
00365       (JNIEnv *env, jobject obj);
00366     jboolean (JNICALL *IsInstanceOf)
00367       (JNIEnv *env, jobject obj, jclass clazz);
00368 
00369     jmethodID (JNICALL *GetMethodID)
00370       (JNIEnv *env, jclass clazz, const char *name, const char *sig);
00371 
00372     jobject (JNICALL *CallObjectMethod)
00373       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00374     jobject (JNICALL *CallObjectMethodV)
00375       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00376     jobject (JNICALL *CallObjectMethodA)
00377       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args);
00378 
00379     jboolean (JNICALL *CallBooleanMethod)
00380       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00381     jboolean (JNICALL *CallBooleanMethodV)
00382       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00383     jboolean (JNICALL *CallBooleanMethodA)
00384       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args);
00385 
00386     jbyte (JNICALL *CallByteMethod)
00387       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00388     jbyte (JNICALL *CallByteMethodV)
00389       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00390     jbyte (JNICALL *CallByteMethodA)
00391       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
00392 
00393     jchar (JNICALL *CallCharMethod)
00394       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00395     jchar (JNICALL *CallCharMethodV)
00396       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00397     jchar (JNICALL *CallCharMethodA)
00398       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
00399 
00400     jshort (JNICALL *CallShortMethod)
00401       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00402     jshort (JNICALL *CallShortMethodV)
00403       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00404     jshort (JNICALL *CallShortMethodA)
00405       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
00406 
00407     jint (JNICALL *CallIntMethod)
00408       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00409     jint (JNICALL *CallIntMethodV)
00410       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00411     jint (JNICALL *CallIntMethodA)
00412       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
00413 
00414     jlong (JNICALL *CallLongMethod)
00415       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00416     jlong (JNICALL *CallLongMethodV)
00417       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00418     jlong (JNICALL *CallLongMethodA)
00419       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
00420 
00421     jfloat (JNICALL *CallFloatMethod)
00422       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00423     jfloat (JNICALL *CallFloatMethodV)
00424       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00425     jfloat (JNICALL *CallFloatMethodA)
00426       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
00427 
00428     jdouble (JNICALL *CallDoubleMethod)
00429       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00430     jdouble (JNICALL *CallDoubleMethodV)
00431       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00432     jdouble (JNICALL *CallDoubleMethodA)
00433       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args);
00434 
00435     void (JNICALL *CallVoidMethod)
00436       (JNIEnv *env, jobject obj, jmethodID methodID, ...);
00437     void (JNICALL *CallVoidMethodV)
00438       (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
00439     void (JNICALL *CallVoidMethodA)
00440       (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args);
00441 
00442     jobject (JNICALL *CallNonvirtualObjectMethod)
00443       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00444     jobject (JNICALL *CallNonvirtualObjectMethodV)
00445       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00446        va_list args);
00447     jobject (JNICALL *CallNonvirtualObjectMethodA)
00448       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00449        jvalue * args);
00450 
00451     jboolean (JNICALL *CallNonvirtualBooleanMethod)
00452       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00453     jboolean (JNICALL *CallNonvirtualBooleanMethodV)
00454       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00455        va_list args);
00456     jboolean (JNICALL *CallNonvirtualBooleanMethodA)
00457       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00458        jvalue * args);
00459 
00460     jbyte (JNICALL *CallNonvirtualByteMethod)
00461       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00462     jbyte (JNICALL *CallNonvirtualByteMethodV)
00463       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00464        va_list args);
00465     jbyte (JNICALL *CallNonvirtualByteMethodA)
00466       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00467        jvalue *args);
00468 
00469     jchar (JNICALL *CallNonvirtualCharMethod)
00470       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00471     jchar (JNICALL *CallNonvirtualCharMethodV)
00472       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00473        va_list args);
00474     jchar (JNICALL *CallNonvirtualCharMethodA)
00475       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00476        jvalue *args);
00477 
00478     jshort (JNICALL *CallNonvirtualShortMethod)
00479       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00480     jshort (JNICALL *CallNonvirtualShortMethodV)
00481       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00482        va_list args);
00483     jshort (JNICALL *CallNonvirtualShortMethodA)
00484       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00485        jvalue *args);
00486 
00487     jint (JNICALL *CallNonvirtualIntMethod)
00488       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00489     jint (JNICALL *CallNonvirtualIntMethodV)
00490       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00491        va_list args);
00492     jint (JNICALL *CallNonvirtualIntMethodA)
00493       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00494        jvalue *args);
00495 
00496     jlong (JNICALL *CallNonvirtualLongMethod)
00497       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00498     jlong (JNICALL *CallNonvirtualLongMethodV)
00499       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00500        va_list args);
00501     jlong (JNICALL *CallNonvirtualLongMethodA)
00502       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00503        jvalue *args);
00504 
00505     jfloat (JNICALL *CallNonvirtualFloatMethod)
00506       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00507     jfloat (JNICALL *CallNonvirtualFloatMethodV)
00508       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00509        va_list args);
00510     jfloat (JNICALL *CallNonvirtualFloatMethodA)
00511       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00512        jvalue *args);
00513 
00514     jdouble (JNICALL *CallNonvirtualDoubleMethod)
00515       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00516     jdouble (JNICALL *CallNonvirtualDoubleMethodV)
00517       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00518        va_list args);
00519     jdouble (JNICALL *CallNonvirtualDoubleMethodA)
00520       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00521        jvalue *args);
00522 
00523     void (JNICALL *CallNonvirtualVoidMethod)
00524       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
00525     void (JNICALL *CallNonvirtualVoidMethodV)
00526       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00527        va_list args);
00528     void (JNICALL *CallNonvirtualVoidMethodA)
00529       (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
00530        jvalue * args);
00531 
00532     jfieldID (JNICALL *GetFieldID)
00533       (JNIEnv *env, jclass clazz, const char *name, const char *sig);
00534 
00535     jobject (JNICALL *GetObjectField)
00536       (JNIEnv *env, jobject obj, jfieldID fieldID);
00537     jboolean (JNICALL *GetBooleanField)
00538       (JNIEnv *env, jobject obj, jfieldID fieldID);
00539     jbyte (JNICALL *GetByteField)
00540       (JNIEnv *env, jobject obj, jfieldID fieldID);
00541     jchar (JNICALL *GetCharField)
00542       (JNIEnv *env, jobject obj, jfieldID fieldID);
00543     jshort (JNICALL *GetShortField)
00544       (JNIEnv *env, jobject obj, jfieldID fieldID);
00545     jint (JNICALL *GetIntField)
00546       (JNIEnv *env, jobject obj, jfieldID fieldID);
00547     jlong (JNICALL *GetLongField)
00548       (JNIEnv *env, jobject obj, jfieldID fieldID);
00549     jfloat (JNICALL *GetFloatField)
00550       (JNIEnv *env, jobject obj, jfieldID fieldID);
00551     jdouble (JNICALL *GetDoubleField)
00552       (JNIEnv *env, jobject obj, jfieldID fieldID);
00553 
00554     void (JNICALL *SetObjectField)
00555       (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val);
00556     void (JNICALL *SetBooleanField)
00557       (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val);
00558     void (JNICALL *SetByteField)
00559       (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val);
00560     void (JNICALL *SetCharField)
00561       (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val);
00562     void (JNICALL *SetShortField)
00563       (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val);
00564     void (JNICALL *SetIntField)
00565       (JNIEnv *env, jobject obj, jfieldID fieldID, jint val);
00566     void (JNICALL *SetLongField)
00567       (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val);
00568     void (JNICALL *SetFloatField)
00569       (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val);
00570     void (JNICALL *SetDoubleField)
00571       (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val);
00572 
00573     jmethodID (JNICALL *GetStaticMethodID)
00574       (JNIEnv *env, jclass clazz, const char *name, const char *sig);
00575 
00576     jobject (JNICALL *CallStaticObjectMethod)
00577       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00578     jobject (JNICALL *CallStaticObjectMethodV)
00579       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00580     jobject (JNICALL *CallStaticObjectMethodA)
00581       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00582 
00583     jboolean (JNICALL *CallStaticBooleanMethod)
00584       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00585     jboolean (JNICALL *CallStaticBooleanMethodV)
00586       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00587     jboolean (JNICALL *CallStaticBooleanMethodA)
00588       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00589 
00590     jbyte (JNICALL *CallStaticByteMethod)
00591       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00592     jbyte (JNICALL *CallStaticByteMethodV)
00593       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00594     jbyte (JNICALL *CallStaticByteMethodA)
00595       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00596 
00597     jchar (JNICALL *CallStaticCharMethod)
00598       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00599     jchar (JNICALL *CallStaticCharMethodV)
00600       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00601     jchar (JNICALL *CallStaticCharMethodA)
00602       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00603 
00604     jshort (JNICALL *CallStaticShortMethod)
00605       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00606     jshort (JNICALL *CallStaticShortMethodV)
00607       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00608     jshort (JNICALL *CallStaticShortMethodA)
00609       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00610 
00611     jint (JNICALL *CallStaticIntMethod)
00612       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00613     jint (JNICALL *CallStaticIntMethodV)
00614       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00615     jint (JNICALL *CallStaticIntMethodA)
00616       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00617 
00618     jlong (JNICALL *CallStaticLongMethod)
00619       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00620     jlong (JNICALL *CallStaticLongMethodV)
00621       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00622     jlong (JNICALL *CallStaticLongMethodA)
00623       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00624 
00625     jfloat (JNICALL *CallStaticFloatMethod)
00626       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00627     jfloat (JNICALL *CallStaticFloatMethodV)
00628       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00629     jfloat (JNICALL *CallStaticFloatMethodA)
00630       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00631 
00632     jdouble (JNICALL *CallStaticDoubleMethod)
00633       (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
00634     jdouble (JNICALL *CallStaticDoubleMethodV)
00635       (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
00636     jdouble (JNICALL *CallStaticDoubleMethodA)
00637       (JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args);
00638 
00639     void (JNICALL *CallStaticVoidMethod)
00640       (JNIEnv *env, jclass cls, jmethodID methodID, ...);
00641     void (JNICALL *CallStaticVoidMethodV)
00642       (JNIEnv *env, jclass cls, jmethodID methodID, va_list args);
00643     void (JNICALL *CallStaticVoidMethodA)
00644       (JNIEnv *env, jclass cls, jmethodID methodID, jvalue * args);
00645 
00646     jfieldID (JNICALL *GetStaticFieldID)
00647       (JNIEnv *env, jclass clazz, const char *name, const char *sig);
00648     jobject (JNICALL *GetStaticObjectField)
00649       (JNIEnv *env, jclass clazz, jfieldID fieldID);
00650     jboolean (JNICALL *GetStaticBooleanField)
00651       (JNIEnv *env, jclass clazz, jfieldID fieldID);
00652     jbyte (JNICALL *GetStaticByteField)
00653       (JNIEnv *env, jclass clazz, jfieldID fieldID);
00654     jchar (JNICALL *GetStaticCharField)
00655       (JNIEnv *env, jclass clazz, jfieldID fieldID);
00656     jshort (JNICALL *GetStaticShortField)
00657       (JNIEnv *env, jclass clazz, jfieldID fieldID);
00658     jint (JNICALL *GetStaticIntField)
00659       (JNIEnv *env, jclass clazz, jfieldID fieldID);
00660     jlong (JNICALL *GetStaticLongField)
00661       (JNIEnv *env, jclass clazz, jfieldID fieldID);
00662     jfloat (JNICALL *GetStaticFloatField)
00663       (JNIEnv *env, jclass clazz, jfieldID fieldID);
00664     jdouble (JNICALL *GetStaticDoubleField)
00665       (JNIEnv *env, jclass clazz, jfieldID fieldID);
00666 
00667     void (JNICALL *SetStaticObjectField)
00668       (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value);
00669     void (JNICALL *SetStaticBooleanField)
00670       (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value);
00671     void (JNICALL *SetStaticByteField)
00672       (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value);
00673     void (JNICALL *SetStaticCharField)
00674       (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value);
00675     void (JNICALL *SetStaticShortField)
00676       (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value);
00677     void (JNICALL *SetStaticIntField)
00678       (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value);
00679     void (JNICALL *SetStaticLongField)
00680       (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value);
00681     void (JNICALL *SetStaticFloatField)
00682       (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value);
00683     void (JNICALL *SetStaticDoubleField)
00684       (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value);
00685 
00686     jstring (JNICALL *NewString)
00687       (JNIEnv *env, const jchar *unicode, jsize len);
00688     jsize (JNICALL *GetStringLength)
00689       (JNIEnv *env, jstring str);
00690     const jchar *(JNICALL *GetStringChars)
00691       (JNIEnv *env, jstring str, jboolean *isCopy);
00692     void (JNICALL *ReleaseStringChars)
00693       (JNIEnv *env, jstring str, const jchar *chars);
00694 
00695     jstring (JNICALL *NewStringUTF)
00696       (JNIEnv *env, const char *utf);
00697     jsize (JNICALL *GetStringUTFLength)
00698       (JNIEnv *env, jstring str);
00699     const char* (JNICALL *GetStringUTFChars)
00700       (JNIEnv *env, jstring str, jboolean *isCopy);
00701     void (JNICALL *ReleaseStringUTFChars)
00702       (JNIEnv *env, jstring str, const char* chars);
00703 
00704 
00705     jsize (JNICALL *GetArrayLength)
00706       (JNIEnv *env, jarray array);
00707 
00708     jobjectArray (JNICALL *NewObjectArray)
00709       (JNIEnv *env, jsize len, jclass clazz, jobject init);
00710     jobject (JNICALL *GetObjectArrayElement)
00711       (JNIEnv *env, jobjectArray array, jsize index);
00712     void (JNICALL *SetObjectArrayElement)
00713       (JNIEnv *env, jobjectArray array, jsize index, jobject val);
00714 
00715     jbooleanArray (JNICALL *NewBooleanArray)
00716       (JNIEnv *env, jsize len);
00717     jbyteArray (JNICALL *NewByteArray)
00718       (JNIEnv *env, jsize len);
00719     jcharArray (JNICALL *NewCharArray)
00720       (JNIEnv *env, jsize len);
00721     jshortArray (JNICALL *NewShortArray)
00722       (JNIEnv *env, jsize len);
00723     jintArray (JNICALL *NewIntArray)
00724       (JNIEnv *env, jsize len);
00725     jlongArray (JNICALL *NewLongArray)
00726       (JNIEnv *env, jsize len);
00727     jfloatArray (JNICALL *NewFloatArray)
00728       (JNIEnv *env, jsize len);
00729     jdoubleArray (JNICALL *NewDoubleArray)
00730       (JNIEnv *env, jsize len);
00731 
00732     jboolean * (JNICALL *GetBooleanArrayElements)
00733       (JNIEnv *env, jbooleanArray array, jboolean *isCopy);
00734     jbyte * (JNICALL *GetByteArrayElements)
00735       (JNIEnv *env, jbyteArray array, jboolean *isCopy);
00736     jchar * (JNICALL *GetCharArrayElements)
00737       (JNIEnv *env, jcharArray array, jboolean *isCopy);
00738     jshort * (JNICALL *GetShortArrayElements)
00739       (JNIEnv *env, jshortArray array, jboolean *isCopy);
00740     jint * (JNICALL *GetIntArrayElements)
00741       (JNIEnv *env, jintArray array, jboolean *isCopy);
00742     jlong * (JNICALL *GetLongArrayElements)
00743       (JNIEnv *env, jlongArray array, jboolean *isCopy);
00744     jfloat * (JNICALL *GetFloatArrayElements)
00745       (JNIEnv *env, jfloatArray array, jboolean *isCopy);
00746     jdouble * (JNICALL *GetDoubleArrayElements)
00747       (JNIEnv *env, jdoubleArray array, jboolean *isCopy);
00748 
00749     void (JNICALL *ReleaseBooleanArrayElements)
00750       (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode);
00751     void (JNICALL *ReleaseByteArrayElements)
00752       (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode);
00753     void (JNICALL *ReleaseCharArrayElements)
00754       (JNIEnv *env, jcharArray array, jchar *elems, jint mode);
00755     void (JNICALL *ReleaseShortArrayElements)
00756       (JNIEnv *env, jshortArray array, jshort *elems, jint mode);
00757     void (JNICALL *ReleaseIntArrayElements)
00758       (JNIEnv *env, jintArray array, jint *elems, jint mode);
00759     void (JNICALL *ReleaseLongArrayElements)
00760       (JNIEnv *env, jlongArray array, jlong *elems, jint mode);
00761     void (JNICALL *ReleaseFloatArrayElements)
00762       (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode);
00763     void (JNICALL *ReleaseDoubleArrayElements)
00764       (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode);
00765 
00766     void (JNICALL *GetBooleanArrayRegion)
00767       (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf);
00768     void (JNICALL *GetByteArrayRegion)
00769       (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf);
00770     void (JNICALL *GetCharArrayRegion)
00771       (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf);
00772     void (JNICALL *GetShortArrayRegion)
00773       (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf);
00774     void (JNICALL *GetIntArrayRegion)
00775       (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf);
00776     void (JNICALL *GetLongArrayRegion)
00777       (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf);
00778     void (JNICALL *GetFloatArrayRegion)
00779       (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf);
00780     void (JNICALL *GetDoubleArrayRegion)
00781       (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf);
00782 
00783     void (JNICALL *SetBooleanArrayRegion)
00784       (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf);
00785     void (JNICALL *SetByteArrayRegion)
00786       (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf);
00787     void (JNICALL *SetCharArrayRegion)
00788       (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf);
00789     void (JNICALL *SetShortArrayRegion)
00790       (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf);
00791     void (JNICALL *SetIntArrayRegion)
00792       (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf);
00793     void (JNICALL *SetLongArrayRegion)
00794       (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf);
00795     void (JNICALL *SetFloatArrayRegion)
00796       (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf);
00797     void (JNICALL *SetDoubleArrayRegion)
00798       (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf);
00799 
00800     jint (JNICALL *RegisterNatives)
00801       (JNIEnv *env, jclass clazz, const JNINativeMethod *methods,
00802        jint nMethods);
00803     jint (JNICALL *UnregisterNatives)
00804       (JNIEnv *env, jclass clazz);
00805 
00806     jint (JNICALL *MonitorEnter)
00807       (JNIEnv *env, jobject obj);
00808     jint (JNICALL *MonitorExit)
00809       (JNIEnv *env, jobject obj);
00810 
00811     jint (JNICALL *GetJavaVM)
00812       (JNIEnv *env, JavaVM **vm);
00813 
00814     void (JNICALL *GetStringRegion)
00815       (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf);
00816     void (JNICALL *GetStringUTFRegion)
00817       (JNIEnv *env, jstring str, jsize start, jsize len, char *buf);
00818 
00819     void * (JNICALL *GetPrimitiveArrayCritical)
00820       (JNIEnv *env, jarray array, jboolean *isCopy);
00821     void (JNICALL *ReleasePrimitiveArrayCritical)
00822       (JNIEnv *env, jarray array, void *carray, jint mode);
00823 
00824     const jchar * (JNICALL *GetStringCritical)
00825       (JNIEnv *env, jstring string, jboolean *isCopy);
00826     void (JNICALL *ReleaseStringCritical)
00827       (JNIEnv *env, jstring string, const jchar *cstring);
00828 
00829     jweak (JNICALL *NewWeakGlobalRef)
00830        (JNIEnv *env, jobject obj);
00831     void (JNICALL *DeleteWeakGlobalRef)
00832        (JNIEnv *env, jweak ref);
00833 
00834     jboolean (JNICALL *ExceptionCheck)
00835        (JNIEnv *env);
00836 
00837     jobject (JNICALL *NewDirectByteBuffer)
00838        (JNIEnv* env, void* address, jlong capacity);
00839     void* (JNICALL *GetDirectBufferAddress)
00840        (JNIEnv* env, jobject buf);
00841     jlong (JNICALL *GetDirectBufferCapacity)
00842        (JNIEnv* env, jobject buf);
00843 };
00844 
00845 struct JNIEnv_ {
00846     const struct JNINativeInterface_ *functions;
00847 #ifdef __cplusplus
00848 
00849     jint GetVersion() {
00850         return functions->GetVersion(this);
00851     }
00852     jclass DefineClass(const char *name, jobject loader, const jbyte *buf,
00853                jsize len) {
00854         return functions->DefineClass(this, name, loader, buf, len);
00855     }
00856     jclass FindClass(const char *name) {
00857         return functions->FindClass(this, name);
00858     }
00859     jmethodID FromReflectedMethod(jobject method) {
00860         return functions->FromReflectedMethod(this,method);
00861     }
00862     jfieldID FromReflectedField(jobject field) {
00863         return functions->FromReflectedField(this,field);
00864     }
00865 
00866     jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) {
00867         return functions->ToReflectedMethod(this, cls, methodID, isStatic);
00868     }
00869 
00870     jclass GetSuperclass(jclass sub) {
00871         return functions->GetSuperclass(this, sub);
00872     }
00873     jboolean IsAssignableFrom(jclass sub, jclass sup) {
00874         return functions->IsAssignableFrom(this, sub, sup);
00875     }
00876 
00877     jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) {
00878         return functions->ToReflectedField(this,cls,fieldID,isStatic);
00879     }
00880 
00881     jint Throw(jthrowable obj) {
00882         return functions->Throw(this, obj);
00883     }
00884     jint ThrowNew(jclass clazz, const char *msg) {
00885         return functions->ThrowNew(this, clazz, msg);
00886     }
00887     jthrowable ExceptionOccurred() {
00888         return functions->ExceptionOccurred(this);
00889     }
00890     void ExceptionDescribe() {
00891         functions->ExceptionDescribe(this);
00892     }
00893     void ExceptionClear() {
00894         functions->ExceptionClear(this);
00895     }
00896     void FatalError(const char *msg) {
00897         functions->FatalError(this, msg);
00898     }
00899 
00900     jint PushLocalFrame(jint capacity) {
00901         return functions->PushLocalFrame(this,capacity);
00902     }
00903     jobject PopLocalFrame(jobject result) {
00904         return functions->PopLocalFrame(this,result);
00905     }
00906 
00907     jobject NewGlobalRef(jobject lobj) {
00908         return functions->NewGlobalRef(this,lobj);
00909     }
00910     void DeleteGlobalRef(jobject gref) {
00911         functions->DeleteGlobalRef(this,gref);
00912     }
00913     void DeleteLocalRef(jobject obj) {
00914         functions->DeleteLocalRef(this, obj);
00915     }
00916 
00917     jboolean IsSameObject(jobject obj1, jobject obj2) {
00918         return functions->IsSameObject(this,obj1,obj2);
00919     }
00920 
00921     jobject NewLocalRef(jobject ref) {
00922         return functions->NewLocalRef(this,ref);
00923     }
00924     jint EnsureLocalCapacity(jint capacity) {
00925         return functions->EnsureLocalCapacity(this,capacity);
00926     }
00927 
00928     jobject AllocObject(jclass clazz) {
00929         return functions->AllocObject(this,clazz);
00930     }
00931     jobject NewObject(jclass clazz, jmethodID methodID, ...) {
00932         va_list args;
00933     jobject result;
00934     va_start(args, methodID);
00935         result = functions->NewObjectV(this,clazz,methodID,args);
00936     va_end(args);
00937     return result;
00938     }
00939     jobject NewObjectV(jclass clazz, jmethodID methodID,
00940                va_list args) {
00941         return functions->NewObjectV(this,clazz,methodID,args);
00942     }
00943     jobject NewObjectA(jclass clazz, jmethodID methodID,
00944                jvalue *args) {
00945         return functions->NewObjectA(this,clazz,methodID,args);
00946     }
00947 
00948     jclass GetObjectClass(jobject obj) {
00949         return functions->GetObjectClass(this,obj);
00950     }
00951     jboolean IsInstanceOf(jobject obj, jclass clazz) {
00952         return functions->IsInstanceOf(this,obj,clazz);
00953     }
00954 
00955     jmethodID GetMethodID(jclass clazz, const char *name,
00956               const char *sig) {
00957         return functions->GetMethodID(this,clazz,name,sig);
00958     }
00959 
00960     jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) {
00961         va_list args;
00962     jobject result;
00963     va_start(args,methodID);
00964     result = functions->CallObjectMethodV(this,obj,methodID,args);
00965     va_end(args);
00966     return result;
00967     }
00968     jobject CallObjectMethodV(jobject obj, jmethodID methodID,
00969             va_list args) {
00970         return functions->CallObjectMethodV(this,obj,methodID,args);
00971     }
00972     jobject CallObjectMethodA(jobject obj, jmethodID methodID,
00973             jvalue * args) {
00974         return functions->CallObjectMethodA(this,obj,methodID,args);
00975     }
00976 
00977     jboolean CallBooleanMethod(jobject obj,
00978                    jmethodID methodID, ...) {
00979         va_list args;
00980     jboolean result;
00981     va_start(args,methodID);
00982     result = functions->CallBooleanMethodV(this,obj,methodID,args);
00983     va_end(args);
00984     return result;
00985     }
00986     jboolean CallBooleanMethodV(jobject obj, jmethodID methodID,
00987                 va_list args) {
00988         return functions->CallBooleanMethodV(this,obj,methodID,args);
00989     }
00990     jboolean CallBooleanMethodA(jobject obj, jmethodID methodID,
00991                 jvalue * args) {
00992         return functions->CallBooleanMethodA(this,obj,methodID, args);
00993     }
00994 
00995     jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) {
00996         va_list args;
00997     jbyte result;
00998     va_start(args,methodID);
00999     result = functions->CallByteMethodV(this,obj,methodID,args);
01000     va_end(args);
01001     return result;
01002     }
01003     jbyte CallByteMethodV(jobject obj, jmethodID methodID,
01004               va_list args) {
01005         return functions->CallByteMethodV(this,obj,methodID,args);
01006     }
01007     jbyte CallByteMethodA(jobject obj, jmethodID methodID,
01008               jvalue * args) {
01009         return functions->CallByteMethodA(this,obj,methodID,args);
01010     }
01011 
01012     jchar CallCharMethod(jobject obj, jmethodID methodID, ...) {
01013         va_list args;
01014     jchar result;
01015     va_start(args,methodID);
01016     result = functions->CallCharMethodV(this,obj,methodID,args);
01017     va_end(args);
01018     return result;
01019     }
01020     jchar CallCharMethodV(jobject obj, jmethodID methodID,
01021               va_list args) {
01022         return functions->CallCharMethodV(this,obj,methodID,args);
01023     }
01024     jchar CallCharMethodA(jobject obj, jmethodID methodID,
01025               jvalue * args) {
01026         return functions->CallCharMethodA(this,obj,methodID,args);
01027     }
01028 
01029     jshort CallShortMethod(jobject obj, jmethodID methodID, ...) {
01030         va_list args;
01031     jshort result;
01032     va_start(args,methodID);
01033     result = functions->CallShortMethodV(this,obj,methodID,args);
01034     va_end(args);
01035     return result;
01036     }
01037     jshort CallShortMethodV(jobject obj, jmethodID methodID,
01038                 va_list args) {
01039         return functions->CallShortMethodV(this,obj,methodID,args);
01040     }
01041     jshort CallShortMethodA(jobject obj, jmethodID methodID,
01042                 jvalue * args) {
01043         return functions->CallShortMethodA(this,obj,methodID,args);
01044     }
01045 
01046     jint CallIntMethod(jobject obj, jmethodID methodID, ...) {
01047         va_list args;
01048     jint result;
01049     va_start(args,methodID);
01050     result = functions->CallIntMethodV(this,obj,methodID,args);
01051     va_end(args);
01052     return result;
01053     }
01054     jint CallIntMethodV(jobject obj, jmethodID methodID,
01055             va_list args) {
01056         return functions->CallIntMethodV(this,obj,methodID,args);
01057     }
01058     jint CallIntMethodA(jobject obj, jmethodID methodID,
01059             jvalue * args) {
01060         return functions->CallIntMethodA(this,obj,methodID,args);
01061     }
01062 
01063     jlong CallLongMethod(jobject obj, jmethodID methodID, ...) {
01064         va_list args;
01065     jlong result;
01066     va_start(args,methodID);
01067     result = functions->CallLongMethodV(this,obj,methodID,args);
01068     va_end(args);
01069     return result;
01070     }
01071     jlong CallLongMethodV(jobject obj, jmethodID methodID,
01072               va_list args) {
01073         return functions->CallLongMethodV(this,obj,methodID,args);
01074     }
01075     jlong CallLongMethodA(jobject obj, jmethodID methodID,
01076               jvalue * args) {
01077         return functions->CallLongMethodA(this,obj,methodID,args);
01078     }
01079 
01080     jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) {
01081         va_list args;
01082     jfloat result;
01083     va_start(args,methodID);
01084     result = functions->CallFloatMethodV(this,obj,methodID,args);
01085     va_end(args);
01086     return result;
01087     }
01088     jfloat CallFloatMethodV(jobject obj, jmethodID methodID,
01089                 va_list args) {
01090         return functions->CallFloatMethodV(this,obj,methodID,args);
01091     }
01092     jfloat CallFloatMethodA(jobject obj, jmethodID methodID,
01093                 jvalue * args) {
01094         return functions->CallFloatMethodA(this,obj,methodID,args);
01095     }
01096 
01097     jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) {
01098         va_list args;
01099     jdouble result;
01100     va_start(args,methodID);
01101     result = functions->CallDoubleMethodV(this,obj,methodID,args);
01102     va_end(args);
01103     return result;
01104     }
01105     jdouble CallDoubleMethodV(jobject obj, jmethodID methodID,
01106             va_list args) {
01107         return functions->CallDoubleMethodV(this,obj,methodID,args);
01108     }
01109     jdouble CallDoubleMethodA(jobject obj, jmethodID methodID,
01110             jvalue * args) {
01111         return functions->CallDoubleMethodA(this,obj,methodID,args);
01112     }
01113 
01114     void CallVoidMethod(jobject obj, jmethodID methodID, ...) {
01115         va_list args;
01116     va_start(args,methodID);
01117     functions->CallVoidMethodV(this,obj,methodID,args);
01118     va_end(args);
01119     }
01120     void CallVoidMethodV(jobject obj, jmethodID methodID,
01121              va_list args) {
01122         functions->CallVoidMethodV(this,obj,methodID,args);
01123     }
01124     void CallVoidMethodA(jobject obj, jmethodID methodID,
01125              jvalue * args) {
01126         functions->CallVoidMethodA(this,obj,methodID,args);
01127     }
01128 
01129     jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz,
01130                        jmethodID methodID, ...) {
01131         va_list args;
01132     jobject result;
01133     va_start(args,methodID);
01134     result = functions->CallNonvirtualObjectMethodV(this,obj,clazz,
01135                             methodID,args);
01136     va_end(args);
01137     return result;
01138     }
01139     jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz,
01140                     jmethodID methodID, va_list args) {
01141         return functions->CallNonvirtualObjectMethodV(this,obj,clazz,
01142                               methodID,args);
01143     }
01144     jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz,
01145                     jmethodID methodID, jvalue * args) {
01146         return functions->CallNonvirtualObjectMethodA(this,obj,clazz,
01147                               methodID,args);
01148     }
01149 
01150     jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz,
01151                      jmethodID methodID, ...) {
01152         va_list args;
01153     jboolean result;
01154     va_start(args,methodID);
01155     result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
01156                              methodID,args);
01157     va_end(args);
01158     return result;
01159     }
01160     jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz,
01161                       jmethodID methodID, va_list args) {
01162         return functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
01163                                methodID,args);
01164     }
01165     jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz,
01166                       jmethodID methodID, jvalue * args) {
01167         return functions->CallNonvirtualBooleanMethodA(this,obj,clazz,
01168                                methodID, args);
01169     }
01170 
01171     jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz,
01172                    jmethodID methodID, ...) {
01173         va_list args;
01174     jbyte result;
01175     va_start(args,methodID);
01176     result = functions->CallNonvirtualByteMethodV(this,obj,clazz,
01177                               methodID,args);
01178     va_end(args);
01179     return result;
01180     }
01181     jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz,
01182                     jmethodID methodID, va_list args) {
01183         return functions->CallNonvirtualByteMethodV(this,obj,clazz,
01184                             methodID,args);
01185     }
01186     jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz,
01187                     jmethodID methodID, jvalue * args) {
01188         return functions->CallNonvirtualByteMethodA(this,obj,clazz,
01189                             methodID,args);
01190     }
01191 
01192     jchar CallNonvirtualCharMethod(jobject obj, jclass clazz,
01193                    jmethodID methodID, ...) {
01194         va_list args;
01195     jchar result;
01196     va_start(args,methodID);
01197     result = functions->CallNonvirtualCharMethodV(this,obj,clazz,
01198                               methodID,args);
01199     va_end(args);
01200     return result;
01201     }
01202     jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz,
01203                     jmethodID methodID, va_list args) {
01204         return functions->CallNonvirtualCharMethodV(this,obj,clazz,
01205                             methodID,args);
01206     }
01207     jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz,
01208                     jmethodID methodID, jvalue * args) {
01209         return functions->CallNonvirtualCharMethodA(this,obj,clazz,
01210                             methodID,args);
01211     }
01212 
01213     jshort CallNonvirtualShortMethod(jobject obj, jclass clazz,
01214                      jmethodID methodID, ...) {
01215         va_list args;
01216     jshort result;
01217     va_start(args,methodID);
01218     result = functions->CallNonvirtualShortMethodV(this,obj,clazz,
01219                                methodID,args);
01220     va_end(args);
01221     return result;
01222     }
01223     jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz,
01224                       jmethodID methodID, va_list args) {
01225         return functions->CallNonvirtualShortMethodV(this,obj,clazz,
01226                              methodID,args);
01227     }
01228     jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz,
01229                       jmethodID methodID, jvalue * args) {
01230         return functions->CallNonvirtualShortMethodA(this,obj,clazz,
01231                              methodID,args);
01232     }
01233 
01234     jint CallNonvirtualIntMethod(jobject obj, jclass clazz,
01235                  jmethodID methodID, ...) {
01236         va_list args;
01237     jint result;
01238     va_start(args,methodID);
01239     result = functions->CallNonvirtualIntMethodV(this,obj,clazz,
01240                              methodID,args);
01241     va_end(args);
01242     return result;
01243     }
01244     jint CallNonvirtualIntMethodV(jobject obj, jclass clazz,
01245                   jmethodID methodID, va_list args) {
01246         return functions->CallNonvirtualIntMethodV(this,obj,clazz,
01247                            methodID,args);
01248     }
01249     jint CallNonvirtualIntMethodA(jobject obj, jclass clazz,
01250                   jmethodID methodID, jvalue * args) {
01251         return functions->CallNonvirtualIntMethodA(this,obj,clazz,
01252                            methodID,args);
01253     }
01254 
01255     jlong CallNonvirtualLongMethod(jobject obj, jclass clazz,
01256                    jmethodID methodID, ...) {
01257         va_list args;
01258     jlong result;
01259     va_start(args,methodID);
01260     result = functions->CallNonvirtualLongMethodV(this,obj,clazz,
01261                               methodID,args);
01262     va_end(args);
01263     return result;
01264     }
01265     jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz,
01266                     jmethodID methodID, va_list args) {
01267         return functions->CallNonvirtualLongMethodV(this,obj,clazz,
01268                             methodID,args);
01269     }
01270     jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz,
01271                     jmethodID methodID, jvalue * args) {
01272         return functions->CallNonvirtualLongMethodA(this,obj,clazz,
01273                             methodID,args);
01274     }
01275 
01276     jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz,
01277                      jmethodID methodID, ...) {
01278         va_list args;
01279     jfloat result;
01280     va_start(args,methodID);
01281     result = functions->CallNonvirtualFloatMethodV(this,obj,clazz,
01282                                methodID,args);
01283     va_end(args);
01284     return result;
01285     }
01286     jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz,
01287                       jmethodID methodID,
01288                       va_list args) {
01289         return functions->CallNonvirtualFloatMethodV(this,obj,clazz,
01290                              methodID,args);
01291     }
01292     jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz,
01293                       jmethodID methodID,
01294                       jvalue * args) {
01295         return functions->CallNonvirtualFloatMethodA(this,obj,clazz,
01296                              methodID,args);
01297     }
01298 
01299     jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz,
01300                        jmethodID methodID, ...) {
01301         va_list args;
01302     jdouble result;
01303     va_start(args,methodID);
01304     result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
01305                             methodID,args);
01306     va_end(args);
01307     return result;
01308     }
01309     jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz,
01310                     jmethodID methodID,
01311                     va_list args) {
01312         return functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
01313                               methodID,args);
01314     }
01315     jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz,
01316                     jmethodID methodID,
01317                     jvalue * args) {
01318         return functions->CallNonvirtualDoubleMethodA(this,obj,clazz,
01319                               methodID,args);
01320     }
01321 
01322     void CallNonvirtualVoidMethod(jobject obj, jclass clazz,
01323                   jmethodID methodID, ...) {
01324         va_list args;
01325     va_start(args,methodID);
01326     functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
01327     va_end(args);
01328     }
01329     void CallNonvirtualVoidMethodV(jobject obj, jclass clazz,
01330                    jmethodID methodID,
01331                    va_list args) {
01332         functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
01333     }
01334     void CallNonvirtualVoidMethodA(jobject obj, jclass clazz,
01335                    jmethodID methodID,
01336                    jvalue * args) {
01337         functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args);
01338     }
01339 
01340     jfieldID GetFieldID(jclass clazz, const char *name,
01341             const char *sig) {
01342         return functions->GetFieldID(this,clazz,name,sig);
01343     }
01344 
01345     jobject GetObjectField(jobject obj, jfieldID fieldID) {
01346         return functions->GetObjectField(this,obj,fieldID);
01347     }
01348     jboolean GetBooleanField(jobject obj, jfieldID fieldID) {
01349         return functions->GetBooleanField(this,obj,fieldID);
01350     }
01351     jbyte GetByteField(jobject obj, jfieldID fieldID) {
01352         return functions->GetByteField(this,obj,fieldID);
01353     }
01354     jchar GetCharField(jobject obj, jfieldID fieldID) {
01355         return functions->GetCharField(this,obj,fieldID);
01356     }
01357     jshort GetShortField(jobject obj, jfieldID fieldID) {
01358         return functions->GetShortField(this,obj,fieldID);
01359     }
01360     jint GetIntField(jobject obj, jfieldID fieldID) {
01361         return functions->GetIntField(this,obj,fieldID);
01362     }
01363     jlong GetLongField(jobject obj, jfieldID fieldID) {
01364         return functions->GetLongField(this,obj,fieldID);
01365     }
01366     jfloat GetFloatField(jobject obj, jfieldID fieldID) {
01367         return functions->GetFloatField(this,obj,fieldID);
01368     }
01369     jdouble GetDoubleField(jobject obj, jfieldID fieldID) {
01370         return functions->GetDoubleField(this,obj,fieldID);
01371     }
01372 
01373     void SetObjectField(jobject obj, jfieldID fieldID, jobject val) {
01374         functions->SetObjectField(this,obj,fieldID,val);
01375     }
01376     void SetBooleanField(jobject obj, jfieldID fieldID,
01377              jboolean val) {
01378         functions->SetBooleanField(this,obj,fieldID,val);
01379     }
01380     void SetByteField(jobject obj, jfieldID fieldID,
01381               jbyte val) {
01382         functions->SetByteField(this,obj,fieldID,val);
01383     }
01384     void SetCharField(jobject obj, jfieldID fieldID,
01385               jchar val) {
01386         functions->SetCharField(this,obj,fieldID,val);
01387     }
01388     void SetShortField(jobject obj, jfieldID fieldID,
01389                jshort val) {
01390         functions->SetShortField(this,obj,fieldID,val);
01391     }
01392     void SetIntField(jobject obj, jfieldID fieldID,
01393              jint val) {
01394         functions->SetIntField(this,obj,fieldID,val);
01395     }
01396     void SetLongField(jobject obj, jfieldID fieldID,
01397               jlong val) {
01398         functions->SetLongField(this,obj,fieldID,val);
01399     }
01400     void SetFloatField(jobject obj, jfieldID fieldID,
01401                jfloat val) {
01402         functions->SetFloatField(this,obj,fieldID,val);
01403     }
01404     void SetDoubleField(jobject obj, jfieldID fieldID,
01405             jdouble val) {
01406         functions->SetDoubleField(this,obj,fieldID,val);
01407     }
01408 
01409     jmethodID GetStaticMethodID(jclass clazz, const char *name,
01410                 const char *sig) {
01411         return functions->GetStaticMethodID(this,clazz,name,sig);
01412     }
01413 
01414     jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID,
01415                  ...) {
01416         va_list args;
01417     jobject result;
01418     va_start(args,methodID);
01419     result = functions->CallStaticObjectMethodV(this,clazz,methodID,args);
01420     va_end(args);
01421     return result;
01422     }
01423     jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID,
01424                   va_list args) {
01425         return functions->CallStaticObjectMethodV(this,clazz,methodID,args);
01426     }
01427     jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID,
01428                   jvalue *args) {
01429         return functions->CallStaticObjectMethodA(this,clazz,methodID,args);
01430     }
01431 
01432     jboolean CallStaticBooleanMethod(jclass clazz,
01433                      jmethodID methodID, ...) {
01434         va_list args;
01435     jboolean result;
01436     va_start(args,methodID);
01437     result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
01438     va_end(args);
01439     return result;
01440     }
01441     jboolean CallStaticBooleanMethodV(jclass clazz,
01442                       jmethodID methodID, va_list args) {
01443         return functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
01444     }
01445     jboolean CallStaticBooleanMethodA(jclass clazz,
01446                       jmethodID methodID, jvalue *args) {
01447         return functions->CallStaticBooleanMethodA(this,clazz,methodID,args);
01448     }
01449 
01450     jbyte CallStaticByteMethod(jclass clazz,
01451                    jmethodID methodID, ...) {
01452         va_list args;
01453     jbyte result;
01454     va_start(args,methodID);
01455     result = functions->CallStaticByteMethodV(this,clazz,methodID,args);
01456     va_end(args);
01457     return result;
01458     }
01459     jbyte CallStaticByteMethodV(jclass clazz,
01460                 jmethodID methodID, va_list args) {
01461         return functions->CallStaticByteMethodV(this,clazz,methodID,args);
01462     }
01463     jbyte CallStaticByteMethodA(jclass clazz,
01464                 jmethodID methodID, jvalue *args) {
01465         return functions->CallStaticByteMethodA(this,clazz,methodID,args);
01466     }
01467 
01468     jchar CallStaticCharMethod(jclass clazz,
01469                    jmethodID methodID, ...) {
01470         va_list args;
01471     jchar result;
01472     va_start(args,methodID);
01473     result = functions->CallStaticCharMethodV(this,clazz,methodID,args);
01474     va_end(args);
01475     return result;
01476     }
01477     jchar CallStaticCharMethodV(jclass clazz,
01478                 jmethodID methodID, va_list args) {
01479         return functions->CallStaticCharMethodV(this,clazz,methodID,args);
01480     }
01481     jchar CallStaticCharMethodA(jclass clazz,
01482                 jmethodID methodID, jvalue *args) {
01483         return functions->CallStaticCharMethodA(this,clazz,methodID,args);
01484     }
01485 
01486     jshort CallStaticShortMethod(jclass clazz,
01487                  jmethodID methodID, ...) {
01488         va_list args;
01489     jshort result;
01490     va_start(args,methodID);
01491     result = functions->CallStaticShortMethodV(this,clazz,methodID,args);
01492     va_end(args);
01493     return result;
01494     }
01495     jshort CallStaticShortMethodV(jclass clazz,
01496                   jmethodID methodID, va_list args) {
01497         return functions->CallStaticShortMethodV(this,clazz,methodID,args);
01498     }
01499     jshort CallStaticShortMethodA(jclass clazz,
01500                   jmethodID methodID, jvalue *args) {
01501         return functions->CallStaticShortMethodA(this,clazz,methodID,args);
01502     }
01503 
01504     jint CallStaticIntMethod(jclass clazz,
01505                  jmethodID methodID, ...) {
01506         va_list args;
01507     jint result;
01508     va_start(args,methodID);
01509     result = functions->CallStaticIntMethodV(this,clazz,methodID,args);
01510     va_end(args);
01511     return result;
01512     }
01513     jint CallStaticIntMethodV(jclass clazz,
01514                   jmethodID methodID, va_list args) {
01515         return functions->CallStaticIntMethodV(this,clazz,methodID,args);
01516     }
01517     jint CallStaticIntMethodA(jclass clazz,
01518                   jmethodID methodID, jvalue *args) {
01519         return functions->CallStaticIntMethodA(this,clazz,methodID,args);
01520     }
01521 
01522     jlong CallStaticLongMethod(jclass clazz,
01523                    jmethodID methodID, ...) {
01524         va_list args;
01525     jlong result;
01526     va_start(args,methodID);
01527     result = functions->CallStaticLongMethodV(this,clazz,methodID,args);
01528     va_end(args);
01529     return result;
01530     }
01531     jlong CallStaticLongMethodV(jclass clazz,
01532                 jmethodID methodID, va_list args) {
01533         return functions->CallStaticLongMethodV(this,clazz,methodID,args);
01534     }
01535     jlong CallStaticLongMethodA(jclass clazz,
01536                 jmethodID methodID, jvalue *args) {
01537         return functions->CallStaticLongMethodA(this,clazz,methodID,args);
01538     }
01539 
01540     jfloat CallStaticFloatMethod(jclass clazz,
01541                  jmethodID methodID, ...) {
01542         va_list args;
01543     jfloat result;
01544     va_start(args,methodID);
01545     result = functions->CallStaticFloatMethodV(this,clazz,methodID,args);
01546     va_end(args);
01547     return result;
01548     }
01549     jfloat CallStaticFloatMethodV(jclass clazz,
01550                   jmethodID methodID, va_list args) {
01551         return functions->CallStaticFloatMethodV(this,clazz,methodID,args);
01552     }
01553     jfloat CallStaticFloatMethodA(jclass clazz,
01554                   jmethodID methodID, jvalue *args) {
01555         return functions->CallStaticFloatMethodA(this,clazz,methodID,args);
01556     }
01557 
01558     jdouble CallStaticDoubleMethod(jclass clazz,
01559                    jmethodID methodID, ...) {
01560         va_list args;
01561     jdouble result;
01562     va_start(args,methodID);
01563     result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
01564     va_end(args);
01565     return result;
01566     }
01567     jdouble CallStaticDoubleMethodV(jclass clazz,
01568                     jmethodID methodID, va_list args) {
01569         return functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
01570     }
01571     jdouble CallStaticDoubleMethodA(jclass clazz,
01572                     jmethodID methodID, jvalue *args) {
01573         return functions->CallStaticDoubleMethodA(this,clazz,methodID,args);
01574     }
01575 
01576     void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) {
01577         va_list args;
01578     va_start(args,methodID);
01579     functions->CallStaticVoidMethodV(this,cls,methodID,args);
01580     va_end(args);
01581     }
01582     void CallStaticVoidMethodV(jclass cls, jmethodID methodID,
01583                    va_list args) {
01584         functions->CallStaticVoidMethodV(this,cls,methodID,args);
01585     }
01586     void CallStaticVoidMethodA(jclass cls, jmethodID methodID,
01587                    jvalue * args) {
01588         functions->CallStaticVoidMethodA(this,cls,methodID,args);
01589     }
01590 
01591     jfieldID GetStaticFieldID(jclass clazz, const char *name,
01592                   const char *sig) {
01593         return functions->GetStaticFieldID(this,clazz,name,sig);
01594     }
01595     jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) {
01596         return functions->GetStaticObjectField(this,clazz,fieldID);
01597     }
01598     jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) {
01599         return functions->GetStaticBooleanField(this,clazz,fieldID);
01600     }
01601     jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) {
01602         return functions->GetStaticByteField(this,clazz,fieldID);
01603     }
01604     jchar GetStaticCharField(jclass clazz, jfieldID fieldID) {
01605         return functions->GetStaticCharField(this,clazz,fieldID);
01606     }
01607     jshort GetStaticShortField(jclass clazz, jfieldID fieldID) {
01608         return functions->GetStaticShortField(this,clazz,fieldID);
01609     }
01610     jint GetStaticIntField(jclass clazz, jfieldID fieldID) {
01611         return functions->GetStaticIntField(this,clazz,fieldID);
01612     }
01613     jlong GetStaticLongField(jclass clazz, jfieldID fieldID) {
01614         return functions->GetStaticLongField(this,clazz,fieldID);
01615     }
01616     jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) {
01617         return functions->GetStaticFloatField(this,clazz,fieldID);
01618     }
01619     jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) {
01620         return functions->GetStaticDoubleField(this,clazz,fieldID);
01621     }
01622 
01623     void SetStaticObjectField(jclass clazz, jfieldID fieldID,
01624             jobject value) {
01625       functions->SetStaticObjectField(this,clazz,fieldID,value);
01626     }
01627     void SetStaticBooleanField(jclass clazz, jfieldID fieldID,
01628             jboolean value) {
01629       functions->SetStaticBooleanField(this,clazz,fieldID,value);
01630     }
01631     void SetStaticByteField(jclass clazz, jfieldID fieldID,
01632             jbyte value) {
01633       functions->SetStaticByteField(this,clazz,fieldID,value);
01634     }
01635     void SetStaticCharField(jclass clazz, jfieldID fieldID,
01636             jchar value) {
01637       functions->SetStaticCharField(this,clazz,fieldID,value);
01638     }
01639     void SetStaticShortField(jclass clazz, jfieldID fieldID,
01640             jshort value) {
01641       functions->SetStaticShortField(this,clazz,fieldID,value);
01642     }
01643     void SetStaticIntField(jclass clazz, jfieldID fieldID,
01644             jint value) {
01645       functions->SetStaticIntField(this,clazz,fieldID,value);
01646     }
01647     void SetStaticLongField(jclass clazz, jfieldID fieldID,
01648             jlong value) {
01649       functions->SetStaticLongField(this,clazz,fieldID,value);
01650     }
01651     void SetStaticFloatField(jclass clazz, jfieldID fieldID,
01652             jfloat value) {
01653       functions->SetStaticFloatField(this,clazz,fieldID,value);
01654     }
01655     void SetStaticDoubleField(jclass clazz, jfieldID fieldID,
01656             jdouble value) {
01657       functions->SetStaticDoubleField(this,clazz,fieldID,value);
01658     }
01659 
01660     jstring NewString(const jchar *unicode, jsize len) {
01661         return functions->NewString(this,unicode,len);
01662     }
01663     jsize GetStringLength(jstring str) {
01664         return functions->GetStringLength(this,str);
01665     }
01666     const jchar *GetStringChars(jstring str, jboolean *isCopy) {
01667         return functions->GetStringChars(this,str,isCopy);
01668     }
01669     void ReleaseStringChars(jstring str, const jchar *chars) {
01670         functions->ReleaseStringChars(this,str,chars);
01671     }
01672 
01673     jstring NewStringUTF(const char *utf) {
01674         return functions->NewStringUTF(this,utf);
01675     }
01676     jsize GetStringUTFLength(jstring str) {
01677         return functions->GetStringUTFLength(this,str);
01678     }
01679     const char* GetStringUTFChars(jstring str, jboolean *isCopy) {
01680         return functions->GetStringUTFChars(this,str,isCopy);
01681     }
01682     void ReleaseStringUTFChars(jstring str, const char* chars) {
01683         functions->ReleaseStringUTFChars(this,str,chars);
01684     }
01685 
01686     jsize GetArrayLength(jarray array) {
01687         return functions->GetArrayLength(this,array);
01688     }
01689 
01690     jobjectArray NewObjectArray(jsize len, jclass clazz,
01691                 jobject init) {
01692         return functions->NewObjectArray(this,len,clazz,init);
01693     }
01694     jobject GetObjectArrayElement(jobjectArray array, jsize index) {
01695         return functions->GetObjectArrayElement(this,array,index);
01696     }
01697     void SetObjectArrayElement(jobjectArray array, jsize index,
01698                    jobject val) {
01699         functions->SetObjectArrayElement(this,array,index,val);
01700     }
01701 
01702     jbooleanArray NewBooleanArray(jsize len) {
01703         return functions->NewBooleanArray(this,len);
01704     }
01705     jbyteArray NewByteArray(jsize len) {
01706         return functions->NewByteArray(this,len);
01707     }
01708     jcharArray NewCharArray(jsize len) {
01709         return functions->NewCharArray(this,len);
01710     }
01711     jshortArray NewShortArray(jsize len) {
01712         return functions->NewShortArray(this,len);
01713     }
01714     jintArray NewIntArray(jsize len) {
01715         return functions->NewIntArray(this,len);
01716     }
01717     jlongArray NewLongArray(jsize len) {
01718         return functions->NewLongArray(this,len);
01719     }
01720     jfloatArray NewFloatArray(jsize len) {
01721         return functions->NewFloatArray(this,len);
01722     }
01723     jdoubleArray NewDoubleArray(jsize len) {
01724         return functions->NewDoubleArray(this,len);
01725     }
01726 
01727     jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) {
01728         return functions->GetBooleanArrayElements(this,array,isCopy);
01729     }
01730     jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) {
01731         return functions->GetByteArrayElements(this,array,isCopy);
01732     }
01733     jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) {
01734         return functions->GetCharArrayElements(this,array,isCopy);
01735     }
01736     jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) {
01737         return functions->GetShortArrayElements(this,array,isCopy);
01738     }
01739     jint * GetIntArrayElements(jintArray array, jboolean *isCopy) {
01740         return functions->GetIntArrayElements(this,array,isCopy);
01741     }
01742     jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) {
01743         return functions->GetLongArrayElements(this,array,isCopy);
01744     }
01745     jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) {
01746         return functions->GetFloatArrayElements(this,array,isCopy);
01747     }
01748     jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) {
01749         return functions->GetDoubleArrayElements(this,array,isCopy);
01750     }
01751 
01752     void ReleaseBooleanArrayElements(jbooleanArray array,
01753                      jboolean *elems,
01754                      jint mode) {
01755         functions->ReleaseBooleanArrayElements(this,array,elems,mode);
01756     }
01757     void ReleaseByteArrayElements(jbyteArray array,
01758                   jbyte *elems,
01759                   jint mode) {
01760         functions->ReleaseByteArrayElements(this,array,elems,mode);
01761     }
01762     void ReleaseCharArrayElements(jcharArray array,
01763                   jchar *elems,
01764                   jint mode) {
01765         functions->ReleaseCharArrayElements(this,array,elems,mode);
01766     }
01767     void ReleaseShortArrayElements(jshortArray array,
01768                    jshort *elems,
01769                    jint mode) {
01770         functions->ReleaseShortArrayElements(this,array,elems,mode);
01771     }
01772     void ReleaseIntArrayElements(jintArray array,
01773                  jint *elems,
01774                  jint mode) {
01775         functions->ReleaseIntArrayElements(this,array,elems,mode);
01776     }
01777     void ReleaseLongArrayElements(jlongArray array,
01778                   jlong *elems,
01779                   jint mode) {
01780         functions->ReleaseLongArrayElements(this,array,elems,mode);
01781     }
01782     void ReleaseFloatArrayElements(jfloatArray array,
01783                    jfloat *elems,
01784                    jint mode) {
01785         functions->ReleaseFloatArrayElements(this,array,elems,mode);
01786     }
01787     void ReleaseDoubleArrayElements(jdoubleArray array,
01788                     jdouble *elems,
01789                     jint mode) {
01790         functions->ReleaseDoubleArrayElements(this,array,elems,mode);
01791     }
01792 
01793     void GetBooleanArrayRegion(jbooleanArray array,
01794                    jsize start, jsize len, jboolean *buf) {
01795         functions->GetBooleanArrayRegion(this,array,start,len,buf);
01796     }
01797     void GetByteArrayRegion(jbyteArray array,
01798                 jsize start, jsize len, jbyte *buf) {
01799         functions->GetByteArrayRegion(this,array,start,len,buf);
01800     }
01801     void GetCharArrayRegion(jcharArray array,
01802                 jsize start, jsize len, jchar *buf) {
01803         functions->GetCharArrayRegion(this,array,start,len,buf);
01804     }
01805     void GetShortArrayRegion(jshortArray array,
01806                  jsize start, jsize len, jshort *buf) {
01807         functions->GetShortArrayRegion(this,array,start,len,buf);
01808     }
01809     void GetIntArrayRegion(jintArray array,
01810                jsize start, jsize len, jint *buf) {
01811         functions->GetIntArrayRegion(this,array,start,len,buf);
01812     }
01813     void GetLongArrayRegion(jlongArray array,
01814                 jsize start, jsize len, jlong *buf) {
01815         functions->GetLongArrayRegion(this,array,start,len,buf);
01816     }
01817     void GetFloatArrayRegion(jfloatArray array,
01818                  jsize start, jsize len, jfloat *buf) {
01819         functions->GetFloatArrayRegion(this,array,start,len,buf);
01820     }
01821     void GetDoubleArrayRegion(jdoubleArray array,
01822                   jsize start, jsize len, jdouble *buf) {
01823         functions->GetDoubleArrayRegion(this,array,start,len,buf);
01824     }
01825 
01826     void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len,
01827                    jboolean *buf) {
01828         functions->SetBooleanArrayRegion(this,array,start,len,buf);
01829     }
01830     void SetByteArrayRegion(jbyteArray array, jsize start, jsize len,
01831                 jbyte *buf) {
01832         functions->SetByteArrayRegion(this,array,start,len,buf);
01833     }
01834     void SetCharArrayRegion(jcharArray array, jsize start, jsize len,
01835                 jchar *buf) {
01836         functions->SetCharArrayRegion(this,array,start,len,buf);
01837     }
01838     void SetShortArrayRegion(jshortArray array, jsize start, jsize len,
01839                  jshort *buf) {
01840         functions->SetShortArrayRegion(this,array,start,len,buf);
01841     }
01842     void SetIntArrayRegion(jintArray array, jsize start, jsize len,
01843                jint *buf) {
01844         functions->SetIntArrayRegion(this,array,start,len,buf);
01845     }
01846     void SetLongArrayRegion(jlongArray array, jsize start, jsize len,
01847                 jlong *buf) {
01848         functions->SetLongArrayRegion(this,array,start,len,buf);
01849     }
01850     void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len,
01851                  jfloat *buf) {
01852         functions->SetFloatArrayRegion(this,array,start,len,buf);
01853     }
01854     void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len,
01855                   jdouble *buf) {
01856         functions->SetDoubleArrayRegion(this,array,start,len,buf);
01857     }
01858 
01859     jint RegisterNatives(jclass clazz, const JNINativeMethod *methods,
01860              jint nMethods) {
01861         return functions->RegisterNatives(this,clazz,methods,nMethods);
01862     }
01863     jint UnregisterNatives(jclass clazz) {
01864         return functions->UnregisterNatives(this,clazz);
01865     }
01866 
01867     jint MonitorEnter(jobject obj) {
01868         return functions->MonitorEnter(this,obj);
01869     }
01870     jint MonitorExit(jobject obj) {
01871         return functions->MonitorExit(this,obj);
01872     }
01873 
01874     jint GetJavaVM(JavaVM **vm) {
01875         return functions->GetJavaVM(this,vm);
01876     }
01877 
01878     void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) {
01879         functions->GetStringRegion(this,str,start,len,buf);
01880     }
01881     void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) {
01882         functions->GetStringUTFRegion(this,str,start,len,buf);
01883     }
01884 
01885     void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) {
01886         return functions->GetPrimitiveArrayCritical(this,array,isCopy);
01887     }
01888     void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) {
01889         functions->ReleasePrimitiveArrayCritical(this,array,carray,mode);
01890     }
01891 
01892     const jchar * GetStringCritical(jstring string, jboolean *isCopy) {
01893         return functions->GetStringCritical(this,string,isCopy);
01894     }
01895     void ReleaseStringCritical(jstring string, const jchar *cstring) {
01896         functions->ReleaseStringCritical(this,string,cstring);
01897     }
01898 
01899     jweak NewWeakGlobalRef(jobject obj) {
01900         return functions->NewWeakGlobalRef(this,obj);
01901     }
01902     void DeleteWeakGlobalRef(jweak ref) {
01903         functions->DeleteWeakGlobalRef(this,ref);
01904     }
01905 
01906     jboolean ExceptionCheck() {
01907     return functions->ExceptionCheck(this);
01908     }
01909 
01910     jobject NewDirectByteBuffer(void* address, jlong capacity) {
01911         return functions->NewDirectByteBuffer(this, address, capacity);
01912     }
01913     void* GetDirectBufferAddress(jobject buf) {
01914         return functions->GetDirectBufferAddress(this, buf);
01915     }
01916     jlong GetDirectBufferCapacity(jobject buf) {
01917         return functions->GetDirectBufferCapacity(this, buf);
01918     }
01919 
01920 #endif /* __cplusplus */
01921 };
01922 
01923 typedef struct JavaVMOption {
01924     char *optionString;
01925     void *extraInfo;
01926 } JavaVMOption;
01927 
01928 typedef struct JavaVMInitArgs {
01929     jint version;
01930 
01931     jint nOptions;
01932     JavaVMOption *options;
01933     jboolean ignoreUnrecognized;
01934 } JavaVMInitArgs;
01935 
01936 typedef struct JavaVMAttachArgs {
01937     jint version;
01938 
01939     char *name;
01940     jobject group;
01941 } JavaVMAttachArgs;
01942 
01943 /* These structures will be VM-specific. */
01944 
01945 typedef struct JDK1_1InitArgs {
01946     jint version;
01947 
01948     char **properties;
01949     jint checkSource;
01950     jint nativeStackSize;
01951     jint javaStackSize;
01952     jint minHeapSize;
01953     jint maxHeapSize;
01954     jint verifyMode;
01955     char *classpath;
01956 
01957     jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args);
01958     void (JNICALL *exit)(jint code);
01959     void (JNICALL *abort)(void);
01960 
01961     jint enableClassGC;
01962     jint enableVerboseGC;
01963     jint disableAsyncGC;
01964     jint verbose;
01965     jboolean debugging;
01966     jint debugPort;
01967 } JDK1_1InitArgs;
01968 
01969 typedef struct JDK1_1AttachArgs {
01970     void * __padding; /* C compilers don't allow empty structures. */
01971 } JDK1_1AttachArgs;
01972 
01973 #define JDK1_2
01974 #define JDK1_4
01975 
01976 /* End VM-specific. */
01977 
01978 struct JNIInvokeInterface_ {
01979     void *reserved0;
01980     void *reserved1;
01981     void *reserved2;
01982 
01983     jint (JNICALL *DestroyJavaVM)(JavaVM *vm);
01984 
01985     jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args);
01986 
01987     jint (JNICALL *DetachCurrentThread)(JavaVM *vm);
01988 
01989     jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version);
01990 
01991     jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args);
01992 };
01993 
01994 struct JavaVM_ {
01995     const struct JNIInvokeInterface_ *functions;
01996 #ifdef __cplusplus
01997 
01998     jint DestroyJavaVM() {
01999         return functions->DestroyJavaVM(this);
02000     }
02001     jint AttachCurrentThread(void **penv, void *args) {
02002         return functions->AttachCurrentThread(this, penv, args);
02003     }
02004     jint DetachCurrentThread() {
02005         return functions->DetachCurrentThread(this);
02006     }
02007 
02008     jint GetEnv(void **penv, jint version) {
02009         return functions->GetEnv(this, penv, version);
02010     }
02011     jint AttachCurrentThreadAsDaemon(void **penv, void *args) {
02012         return functions->AttachCurrentThreadAsDaemon(this, penv, args);
02013     }
02014 #endif
02015 };
02016 
02017 #ifdef _JNI_IMPLEMENTATION_
02018 #define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT
02019 #else
02020 #define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT
02021 #endif
02022 _JNI_IMPORT_OR_EXPORT_ jint JNICALL
02023 JNI_GetDefaultJavaVMInitArgs(void *args);
02024 
02025 _JNI_IMPORT_OR_EXPORT_ jint JNICALL
02026 JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args);
02027 
02028 _JNI_IMPORT_OR_EXPORT_ jint JNICALL
02029 JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
02030 
02031 /* Defined by native libraries. */
02032 JNIEXPORT jint JNICALL
02033 JNI_OnLoad(JavaVM *vm, void *reserved);
02034 
02035 JNIEXPORT void JNICALL
02036 JNI_OnUnload(JavaVM *vm, void *reserved);
02037 
02038 #define JNI_VERSION_1_1 0x00010001
02039 #define JNI_VERSION_1_2 0x00010002
02040 #define JNI_VERSION_1_4 0x00010004
02041 #define JNI_VERSION_1_5 0x00010005
02042 
02043 #ifdef __cplusplus
02044 } /* extern "C" */
02045 #endif /* __cplusplus */
02046 
02047 #endif 
02048 
02049 
02050 
02051 
02052 // we always undefine the new and delete operators by default (MFC)
02053 // simply define XMOG_UNDEFINE_MEM_OPERATORS to 0 to disable this behavior
02054 // if you have a particular requirement
02055 #ifndef XMOG_UNDEFINE_MEM_OPERATORS
02056 #   define XMOG_UNDEFINE_MEM_OPERATORS  1
02057 #endif
02058 
02059 
02060 // some compilers (g++) don't handle this->SUPER_TYPE::METHOD() correctly
02061 // and end up with a recursive call on this type's method.  This can be
02062 // worked around by constructing a temporary super instance in the invocation.
02063 // the easier workaround of just omitting the 'this->' does not work in the
02064 // presence of overloading (sigh...)
02065 #if !defined(XMOG_BROKEN_SUPER_THIS)
02066 #   define XMOG_BROKEN_SUPER_THIS       0
02067 #endif
02068 #if (XMOG_BROKEN_SUPER_THIS==1)
02069 #   if (__GNUC__==3) && (__GNUC_MINOR__<4)
02070 //      old versions of g++ seem to be really broken and require this workaround
02071 #       define XMOG_SUPER_THIS(x)       x( *this ) .    
02072 #   else
02073 //      newer versions at least handle it simply without 'this->'
02074 #       define XMOG_SUPER_THIS(x)       x :: 
02075 #   endif
02076 #else
02077 #   define XMOG_SUPER_THIS(x)           this-> x ::
02078 #endif
02079 
02080 
02081 typedef char    XMOGVERSION[ 16 ];
02082 typedef char    XMOGCONFIG[ 128 ];
02083 typedef char    XMOGPROPERTY[ 256 ];
02084 
02085 #if (XMOG_BUILD_XMOG==1)
02086     
02087     extern const char * NULL_STRING;
02088     extern const char * TRUE_STRING;
02089     extern const char * FALSE_STRING;
02090 
02091 #   if !defined(XMOG_MAJOR)
02092 #       define XMOG_MAJOR       3
02093 #   endif
02094 
02095 #   if !defined(XMOG_MINOR)
02096 #       define XMOG_MINOR       0
02097 #   endif
02098 
02099 #   if !defined(XMOG_PATCH)
02100 #       define XMOG_PATCH       0
02101 #   endif
02102 
02103 #   if !defined(XMOG_BUILD)
02104 #       define XMOG_BUILD       0
02105 #   endif
02106 
02107 #else
02108 
02109     extern "C" XMOG_DECLSPEC int getXmogrtMajor();
02110     extern "C" XMOG_DECLSPEC int getXmogrtMinor();
02111     extern "C" XMOG_DECLSPEC int getXmogrtPatch();
02112     extern "C" XMOG_DECLSPEC int getXmogrtBuild();
02113 
02114 #endif
02115 
02116 
02117 typedef unsigned        xmog_flags;
02118 
02119 
02125 class xmog_dummy
02126 {
02127 };
02128 
02129 
02130 static xmog_dummy       _use_java_ctor;
02131 
02132 
02133 //
02134 // These values are used by configuration hooks (configuration callbacks)
02135 //
02136 #define XMOG_BEFORE_INITIALIZATION  0
02137 #define XMOG_AFTER_INITIALIZATION   1
02138 #define XMOG_BEFORE_LOADING         2
02139 #define XMOG_AFTER_LOADING          3
02140 #define XMOG_BEFORE                 XMOG_BEFORE_INITIALIZATION
02141 #define XMOG_AFTER                  XMOG_AFTER_INITIALIZATION
02142 
02143 
02144 //
02145 // Error codes used by the runtime frmaework
02146 //
02147 #define XMOG_NOT_YET_IMPLEMENTED    -1000
02148 #define XMOG_CLASSNAME_IS_NULL      -1001
02149 #define XMOG_REF_IS_NULL            -1002
02150 #define XMOG_CLASS_NOT_FOUND        -1003
02151 #define XMOG_FIELD_NOT_FOUND        -1004
02152 #define XMOG_SET_FIELD_FAILED       -1005
02153 #define XMOG_GET_FIELD_FAILED       -1006
02154 #define XMOG_UNKNOWN_OWNER          -1007
02155 #define XMOG_METHOD_NOT_FOUND       -1008
02156 #define XMOG_NEW_STRING             -1009
02157 #define XMOG_NEW_STRING_UTF         -1010
02158 #define XMOG_METHOD_CALL_FAILED     -1011
02159 #define XMOG_CREATE_JAVA_PEER       -1012
02160 #define XMOG_TO_JAVA_PEER           -1013
02161 #define XMOG_ARRAY_GET_ELEMENT      -1014
02162 #define XMOG_ARRAY_SET_ELEMENT      -1015
02163 #define XMOG_ARRAY_CREATE           -1016
02164 #define XMOG_BUFFER_OVERRUN         -1017
02165 #define XMOG_NULL_ENV               -1018
02166 #define XMOG_NO_PEER_TYPE           -1019
02167 #define XMOG_ARRAY_GET_ELEMENTS     -1020
02168 #define XMOG_ARRAY_SET_ELEMENTS     -1021
02169 #define XMOG_XML_PARSER             -1022
02170 #define XMOG_CONFIGFILE_NOT_FOUND   -1023
02171 #define XMOG_LEGACY_PARSER          -1024
02172 #define XMOG_CANT_LOAD_JVM          -1025
02173 #define XMOG_MONITOR_ENTER          -1026
02174 #define XMOG_MONITOR_EXIT           -1027
02175 #define XMOG_TLS_FAILURE            -1028
02176 
02177 #endif /* xmog_inc */

Generated on Wed May 31 14:01:19 2006 for Shared Codemesh Runtime Library API Reference by  doxygen 1.4.1