1704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 2704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * Copyright 2006 The Android Open Source Project 3704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * 4704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * JNI specification, as defined by Sun: 5704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html 6704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * 7704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * Everything here is expected to be VM-neutral. 8704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 9704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#ifndef _JNI_H 10704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define _JNI_H 11704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 12704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#include <stdarg.h> 13704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 14704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 15704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * Primitive types that match up with Java equivalents. 16704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 17704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#ifdef HAVE_INTTYPES_H 18704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner# include <inttypes.h> /* C99 */ 19704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef uint8_t jboolean; /* unsigned 8 bits */ 20704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef int8_t jbyte; /* signed 8 bits */ 21704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef uint16_t jchar; /* unsigned 16 bits */ 22704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef int16_t jshort; /* signed 16 bits */ 23704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef int32_t jint; /* signed 32 bits */ 24704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef int64_t jlong; /* signed 64 bits */ 25704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef float jfloat; /* 32-bit IEEE 754 */ 26704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef double jdouble; /* 64-bit IEEE 754 */ 27704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#else 28704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef unsigned char jboolean; /* unsigned 8 bits */ 29704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef signed char jbyte; /* signed 8 bits */ 30704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef unsigned short jchar; /* unsigned 16 bits */ 31704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef short jshort; /* signed 16 bits */ 32704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef int jint; /* signed 32 bits */ 33704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef long long jlong; /* signed 64 bits */ 34704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef float jfloat; /* 32-bit IEEE 754 */ 35704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef double jdouble; /* 64-bit IEEE 754 */ 36704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif 37704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 38704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* "cardinal indices and sizes" */ 39704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jint jsize; 40704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 41704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#ifdef __cplusplus 42704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 43704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * Reference types, in C++ 44704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 45704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jobject {}; 46704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jclass : public _jobject {}; 47704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jstring : public _jobject {}; 48704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jarray : public _jobject {}; 49704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jobjectArray : public _jarray {}; 50704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jbooleanArray : public _jarray {}; 51704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jbyteArray : public _jarray {}; 52704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jcharArray : public _jarray {}; 53704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jshortArray : public _jarray {}; 54704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jintArray : public _jarray {}; 55704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jlongArray : public _jarray {}; 56704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jfloatArray : public _jarray {}; 57704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jdoubleArray : public _jarray {}; 58704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerclass _jthrowable : public _jobject {}; 59704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 60704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jobject* jobject; 61704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jclass* jclass; 62704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jstring* jstring; 63704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jarray* jarray; 64704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jobjectArray* jobjectArray; 65704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jbooleanArray* jbooleanArray; 66704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jbyteArray* jbyteArray; 67704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jcharArray* jcharArray; 68704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jshortArray* jshortArray; 69704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jintArray* jintArray; 70704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jlongArray* jlongArray; 71704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jfloatArray* jfloatArray; 72704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jdoubleArray* jdoubleArray; 73704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jthrowable* jthrowable; 74704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _jobject* jweak; 75704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 76704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 77704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#else /* not __cplusplus */ 78704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 79704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 80704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * Reference types, in C. 81704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 82704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef void* jobject; 83704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jobject jclass; 84704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jobject jstring; 85704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jobject jarray; 86704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jarray jobjectArray; 87704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jarray jbooleanArray; 88704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jarray jbyteArray; 89704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jarray jcharArray; 90704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jarray jshortArray; 91704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jarray jintArray; 92704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jarray jlongArray; 93704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jarray jfloatArray; 94704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jarray jdoubleArray; 95704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jobject jthrowable; 96704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef jobject jweak; 97704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 98704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif /* not __cplusplus */ 99704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 100704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct _jfieldID; /* opaque structure */ 101704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef struct _jfieldID* jfieldID; /* field IDs */ 102704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 103704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct _jmethodID; /* opaque structure */ 104704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef struct _jmethodID* jmethodID; /* method IDs */ 105704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 106704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct JNIInvokeInterface; 107704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 108704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef union jvalue { 109704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean z; 110704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte b; 111704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar c; 112704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort s; 113704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint i; 114704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong j; 115704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat f; 116704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble d; 117704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject l; 118704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner} jvalue; 119704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 120704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef enum jobjectRefType { 121704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner JNIInvalidRefType = 0, 122704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner JNILocalRefType = 1, 123704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner JNIGlobalRefType = 2, 124704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner JNIWeakGlobalRefType = 3 125704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner} jobjectRefType; 126704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 127704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef struct { 128704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const char* name; 129704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const char* signature; 130704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* fnPtr; 131704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner} JNINativeMethod; 132704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 133704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct _JNIEnv; 134704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct _JavaVM; 135704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef const struct JNINativeInterface* C_JNIEnv; 136704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 137704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#if defined(__cplusplus) 138704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _JNIEnv JNIEnv; 139704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef _JavaVM JavaVM; 140704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#else 141704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef const struct JNINativeInterface* JNIEnv; 142704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef const struct JNIInvokeInterface* JavaVM; 143704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif 144704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 145704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 146704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * Table of interface function pointers. 147704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 148704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct JNINativeInterface { 149704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* reserved0; 150704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* reserved1; 151704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* reserved2; 152704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* reserved3; 153704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 154704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*GetVersion)(JNIEnv *); 155704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 156704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jclass (*DefineClass)(JNIEnv*, const char*, jobject, const jbyte*, 157704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize); 158704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jclass (*FindClass)(JNIEnv*, const char*); 159704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 160704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID (*FromReflectedMethod)(JNIEnv*, jobject); 161704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfieldID (*FromReflectedField)(JNIEnv*, jobject); 162704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner /* spec doesn't show jboolean parameter */ 163704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*ToReflectedMethod)(JNIEnv*, jclass, jmethodID, jboolean); 164704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 165704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jclass (*GetSuperclass)(JNIEnv*, jclass); 166704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*IsAssignableFrom)(JNIEnv*, jclass, jclass); 167704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 168704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner /* spec doesn't show jboolean parameter */ 169704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*ToReflectedField)(JNIEnv*, jclass, jfieldID, jboolean); 170704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 171704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*Throw)(JNIEnv*, jthrowable); 172704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*ThrowNew)(JNIEnv *, jclass, const char *); 173704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jthrowable (*ExceptionOccurred)(JNIEnv*); 174704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ExceptionDescribe)(JNIEnv*); 175704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ExceptionClear)(JNIEnv*); 176704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*FatalError)(JNIEnv*, const char*); 177704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 178704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*PushLocalFrame)(JNIEnv*, jint); 179704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*PopLocalFrame)(JNIEnv*, jobject); 180704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 181704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*NewGlobalRef)(JNIEnv*, jobject); 182704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*DeleteGlobalRef)(JNIEnv*, jobject); 183704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*DeleteLocalRef)(JNIEnv*, jobject); 184704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*IsSameObject)(JNIEnv*, jobject, jobject); 185704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 186704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*NewLocalRef)(JNIEnv*, jobject); 187704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*EnsureLocalCapacity)(JNIEnv*, jint); 188704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 189704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*AllocObject)(JNIEnv*, jclass); 190704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*NewObject)(JNIEnv*, jclass, jmethodID, ...); 191704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*NewObjectV)(JNIEnv*, jclass, jmethodID, va_list); 192704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*NewObjectA)(JNIEnv*, jclass, jmethodID, jvalue*); 193704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 194704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jclass (*GetObjectClass)(JNIEnv*, jobject); 195704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*IsInstanceOf)(JNIEnv*, jobject, jclass); 196704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*); 197704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 198704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*CallObjectMethod)(JNIEnv*, jobject, jmethodID, ...); 199704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list); 200704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*CallObjectMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 201704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*CallBooleanMethod)(JNIEnv*, jobject, jmethodID, ...); 202704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*CallBooleanMethodV)(JNIEnv*, jobject, jmethodID, va_list); 203704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*CallBooleanMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 204704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*CallByteMethod)(JNIEnv*, jobject, jmethodID, ...); 205704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*CallByteMethodV)(JNIEnv*, jobject, jmethodID, va_list); 206704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*CallByteMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 207704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*CallCharMethod)(JNIEnv*, jobject, jmethodID, ...); 208704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*CallCharMethodV)(JNIEnv*, jobject, jmethodID, va_list); 209704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*CallCharMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 210704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*CallShortMethod)(JNIEnv*, jobject, jmethodID, ...); 211704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*CallShortMethodV)(JNIEnv*, jobject, jmethodID, va_list); 212704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*CallShortMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 213704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*CallIntMethod)(JNIEnv*, jobject, jmethodID, ...); 214704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*CallIntMethodV)(JNIEnv*, jobject, jmethodID, va_list); 215704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*CallIntMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 216704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*CallLongMethod)(JNIEnv*, jobject, jmethodID, ...); 217704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*CallLongMethodV)(JNIEnv*, jobject, jmethodID, va_list); 218704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*CallLongMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 219704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*CallFloatMethod)(JNIEnv*, jobject, jmethodID, ...); 220704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*CallFloatMethodV)(JNIEnv*, jobject, jmethodID, va_list); 221704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*CallFloatMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 222704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*CallDoubleMethod)(JNIEnv*, jobject, jmethodID, ...); 223704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*CallDoubleMethodV)(JNIEnv*, jobject, jmethodID, va_list); 224704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*CallDoubleMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 225704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...); 226704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*CallVoidMethodV)(JNIEnv*, jobject, jmethodID, va_list); 227704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*CallVoidMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 228704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 229704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*CallNonvirtualObjectMethod)(JNIEnv*, jobject, jclass, 230704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 231704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*CallNonvirtualObjectMethodV)(JNIEnv*, jobject, jclass, 232704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 233704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*CallNonvirtualObjectMethodA)(JNIEnv*, jobject, jclass, 234704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 235704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*CallNonvirtualBooleanMethod)(JNIEnv*, jobject, jclass, 236704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 237704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*CallNonvirtualBooleanMethodV)(JNIEnv*, jobject, jclass, 238704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 239704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*CallNonvirtualBooleanMethodA)(JNIEnv*, jobject, jclass, 240704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 241704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*CallNonvirtualByteMethod)(JNIEnv*, jobject, jclass, 242704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 243704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*CallNonvirtualByteMethodV)(JNIEnv*, jobject, jclass, 244704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 245704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*CallNonvirtualByteMethodA)(JNIEnv*, jobject, jclass, 246704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 247704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*CallNonvirtualCharMethod)(JNIEnv*, jobject, jclass, 248704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 249704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*CallNonvirtualCharMethodV)(JNIEnv*, jobject, jclass, 250704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 251704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*CallNonvirtualCharMethodA)(JNIEnv*, jobject, jclass, 252704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 253704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*CallNonvirtualShortMethod)(JNIEnv*, jobject, jclass, 254704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 255704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*CallNonvirtualShortMethodV)(JNIEnv*, jobject, jclass, 256704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 257704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*CallNonvirtualShortMethodA)(JNIEnv*, jobject, jclass, 258704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 259704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*CallNonvirtualIntMethod)(JNIEnv*, jobject, jclass, 260704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 261704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*CallNonvirtualIntMethodV)(JNIEnv*, jobject, jclass, 262704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 263704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*CallNonvirtualIntMethodA)(JNIEnv*, jobject, jclass, 264704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 265704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*CallNonvirtualLongMethod)(JNIEnv*, jobject, jclass, 266704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 267704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*CallNonvirtualLongMethodV)(JNIEnv*, jobject, jclass, 268704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 269704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*CallNonvirtualLongMethodA)(JNIEnv*, jobject, jclass, 270704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 271704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*CallNonvirtualFloatMethod)(JNIEnv*, jobject, jclass, 272704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 273704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*CallNonvirtualFloatMethodV)(JNIEnv*, jobject, jclass, 274704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 275704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*CallNonvirtualFloatMethodA)(JNIEnv*, jobject, jclass, 276704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 277704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*CallNonvirtualDoubleMethod)(JNIEnv*, jobject, jclass, 278704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 279704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*CallNonvirtualDoubleMethodV)(JNIEnv*, jobject, jclass, 280704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 281704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*CallNonvirtualDoubleMethodA)(JNIEnv*, jobject, jclass, 282704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 283704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*CallNonvirtualVoidMethod)(JNIEnv*, jobject, jclass, 284704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, ...); 285704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*CallNonvirtualVoidMethodV)(JNIEnv*, jobject, jclass, 286704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, va_list); 287704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*CallNonvirtualVoidMethodA)(JNIEnv*, jobject, jclass, 288704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID, jvalue*); 289704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 290704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfieldID (*GetFieldID)(JNIEnv*, jclass, const char*, const char*); 291704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 292704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*GetObjectField)(JNIEnv*, jobject, jfieldID); 293704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*GetBooleanField)(JNIEnv*, jobject, jfieldID); 294704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*GetByteField)(JNIEnv*, jobject, jfieldID); 295704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*GetCharField)(JNIEnv*, jobject, jfieldID); 296704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*GetShortField)(JNIEnv*, jobject, jfieldID); 297704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*GetIntField)(JNIEnv*, jobject, jfieldID); 298704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*GetLongField)(JNIEnv*, jobject, jfieldID); 299704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*GetFloatField)(JNIEnv*, jobject, jfieldID); 300704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*GetDoubleField)(JNIEnv*, jobject, jfieldID); 301704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 302704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetObjectField)(JNIEnv*, jobject, jfieldID, jobject); 303704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetBooleanField)(JNIEnv*, jobject, jfieldID, jboolean); 304704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetByteField)(JNIEnv*, jobject, jfieldID, jbyte); 305704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetCharField)(JNIEnv*, jobject, jfieldID, jchar); 306704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetShortField)(JNIEnv*, jobject, jfieldID, jshort); 307704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetIntField)(JNIEnv*, jobject, jfieldID, jint); 308704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetLongField)(JNIEnv*, jobject, jfieldID, jlong); 309704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetFloatField)(JNIEnv*, jobject, jfieldID, jfloat); 310704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetDoubleField)(JNIEnv*, jobject, jfieldID, jdouble); 311704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 312704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID (*GetStaticMethodID)(JNIEnv*, jclass, const char*, const char*); 313704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 314704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*CallStaticObjectMethod)(JNIEnv*, jclass, jmethodID, ...); 315704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*CallStaticObjectMethodV)(JNIEnv*, jclass, jmethodID, va_list); 316704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*CallStaticObjectMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 317704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*CallStaticBooleanMethod)(JNIEnv*, jclass, jmethodID, ...); 318704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*CallStaticBooleanMethodV)(JNIEnv*, jclass, jmethodID, 319704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list); 320704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*CallStaticBooleanMethodA)(JNIEnv*, jclass, jmethodID, 321704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jvalue*); 322704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*CallStaticByteMethod)(JNIEnv*, jclass, jmethodID, ...); 323704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*CallStaticByteMethodV)(JNIEnv*, jclass, jmethodID, va_list); 324704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*CallStaticByteMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 325704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*CallStaticCharMethod)(JNIEnv*, jclass, jmethodID, ...); 326704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*CallStaticCharMethodV)(JNIEnv*, jclass, jmethodID, va_list); 327704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*CallStaticCharMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 328704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*CallStaticShortMethod)(JNIEnv*, jclass, jmethodID, ...); 329704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*CallStaticShortMethodV)(JNIEnv*, jclass, jmethodID, va_list); 330704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*CallStaticShortMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 331704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*CallStaticIntMethod)(JNIEnv*, jclass, jmethodID, ...); 332704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*CallStaticIntMethodV)(JNIEnv*, jclass, jmethodID, va_list); 333704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*CallStaticIntMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 334704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*CallStaticLongMethod)(JNIEnv*, jclass, jmethodID, ...); 335704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*CallStaticLongMethodV)(JNIEnv*, jclass, jmethodID, va_list); 336704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*CallStaticLongMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 337704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*CallStaticFloatMethod)(JNIEnv*, jclass, jmethodID, ...); 338704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*CallStaticFloatMethodV)(JNIEnv*, jclass, jmethodID, va_list); 339704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*CallStaticFloatMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 340704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*CallStaticDoubleMethod)(JNIEnv*, jclass, jmethodID, ...); 341704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*CallStaticDoubleMethodV)(JNIEnv*, jclass, jmethodID, va_list); 342704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*CallStaticDoubleMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 343704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...); 344704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*CallStaticVoidMethodV)(JNIEnv*, jclass, jmethodID, va_list); 345704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*CallStaticVoidMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 346704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 347704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfieldID (*GetStaticFieldID)(JNIEnv*, jclass, const char*, 348704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const char*); 349704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 350704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*GetStaticObjectField)(JNIEnv*, jclass, jfieldID); 351704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*GetStaticBooleanField)(JNIEnv*, jclass, jfieldID); 352704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte (*GetStaticByteField)(JNIEnv*, jclass, jfieldID); 353704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar (*GetStaticCharField)(JNIEnv*, jclass, jfieldID); 354704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort (*GetStaticShortField)(JNIEnv*, jclass, jfieldID); 355704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*GetStaticIntField)(JNIEnv*, jclass, jfieldID); 356704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*GetStaticLongField)(JNIEnv*, jclass, jfieldID); 357704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat (*GetStaticFloatField)(JNIEnv*, jclass, jfieldID); 358704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble (*GetStaticDoubleField)(JNIEnv*, jclass, jfieldID); 359704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 360704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetStaticObjectField)(JNIEnv*, jclass, jfieldID, jobject); 361704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetStaticBooleanField)(JNIEnv*, jclass, jfieldID, jboolean); 362704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetStaticByteField)(JNIEnv*, jclass, jfieldID, jbyte); 363704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetStaticCharField)(JNIEnv*, jclass, jfieldID, jchar); 364704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetStaticShortField)(JNIEnv*, jclass, jfieldID, jshort); 365704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetStaticIntField)(JNIEnv*, jclass, jfieldID, jint); 366704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetStaticLongField)(JNIEnv*, jclass, jfieldID, jlong); 367704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetStaticFloatField)(JNIEnv*, jclass, jfieldID, jfloat); 368704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetStaticDoubleField)(JNIEnv*, jclass, jfieldID, jdouble); 369704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 370704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jstring (*NewString)(JNIEnv*, const jchar*, jsize); 371704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize (*GetStringLength)(JNIEnv*, jstring); 372704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jchar* (*GetStringChars)(JNIEnv*, jstring, jboolean*); 373704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*); 374704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jstring (*NewStringUTF)(JNIEnv*, const char*); 375704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize (*GetStringUTFLength)(JNIEnv*, jstring); 376704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner /* JNI spec says this returns const jbyte*, but that's inconsistent */ 377704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const char* (*GetStringUTFChars)(JNIEnv*, jstring, jboolean*); 378704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseStringUTFChars)(JNIEnv*, jstring, const char*); 379704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize (*GetArrayLength)(JNIEnv*, jarray); 380704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobjectArray (*NewObjectArray)(JNIEnv*, jsize, jclass, jobject); 381704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*GetObjectArrayElement)(JNIEnv*, jobjectArray, jsize); 382704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetObjectArrayElement)(JNIEnv*, jobjectArray, jsize, jobject); 383704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 384704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbooleanArray (*NewBooleanArray)(JNIEnv*, jsize); 385704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyteArray (*NewByteArray)(JNIEnv*, jsize); 386704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jcharArray (*NewCharArray)(JNIEnv*, jsize); 387704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshortArray (*NewShortArray)(JNIEnv*, jsize); 388704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jintArray (*NewIntArray)(JNIEnv*, jsize); 389704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlongArray (*NewLongArray)(JNIEnv*, jsize); 390704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloatArray (*NewFloatArray)(JNIEnv*, jsize); 391704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdoubleArray (*NewDoubleArray)(JNIEnv*, jsize); 392704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 393704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean* (*GetBooleanArrayElements)(JNIEnv*, jbooleanArray, jboolean*); 394704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte* (*GetByteArrayElements)(JNIEnv*, jbyteArray, jboolean*); 395704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar* (*GetCharArrayElements)(JNIEnv*, jcharArray, jboolean*); 396704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort* (*GetShortArrayElements)(JNIEnv*, jshortArray, jboolean*); 397704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint* (*GetIntArrayElements)(JNIEnv*, jintArray, jboolean*); 398704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong* (*GetLongArrayElements)(JNIEnv*, jlongArray, jboolean*); 399704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat* (*GetFloatArrayElements)(JNIEnv*, jfloatArray, jboolean*); 400704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble* (*GetDoubleArrayElements)(JNIEnv*, jdoubleArray, jboolean*); 401704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 402704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseBooleanArrayElements)(JNIEnv*, jbooleanArray, 403704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean*, jint); 404704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseByteArrayElements)(JNIEnv*, jbyteArray, 405704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte*, jint); 406704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseCharArrayElements)(JNIEnv*, jcharArray, 407704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar*, jint); 408704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseShortArrayElements)(JNIEnv*, jshortArray, 409704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort*, jint); 410704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseIntArrayElements)(JNIEnv*, jintArray, 411704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint*, jint); 412704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseLongArrayElements)(JNIEnv*, jlongArray, 413704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong*, jint); 414704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseFloatArrayElements)(JNIEnv*, jfloatArray, 415704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat*, jint); 416704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseDoubleArrayElements)(JNIEnv*, jdoubleArray, 417704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble*, jint); 418704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 419704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetBooleanArrayRegion)(JNIEnv*, jbooleanArray, 420704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, jboolean*); 421704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetByteArrayRegion)(JNIEnv*, jbyteArray, 422704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, jbyte*); 423704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetCharArrayRegion)(JNIEnv*, jcharArray, 424704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, jchar*); 425704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetShortArrayRegion)(JNIEnv*, jshortArray, 426704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, jshort*); 427704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetIntArrayRegion)(JNIEnv*, jintArray, 428704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, jint*); 429704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetLongArrayRegion)(JNIEnv*, jlongArray, 430704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, jlong*); 431704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetFloatArrayRegion)(JNIEnv*, jfloatArray, 432704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, jfloat*); 433704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetDoubleArrayRegion)(JNIEnv*, jdoubleArray, 434704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, jdouble*); 435704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 436704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner /* spec shows these without const; some jni.h do, some don't */ 437704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetBooleanArrayRegion)(JNIEnv*, jbooleanArray, 438704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, const jboolean*); 439704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetByteArrayRegion)(JNIEnv*, jbyteArray, 440704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, const jbyte*); 441704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetCharArrayRegion)(JNIEnv*, jcharArray, 442704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, const jchar*); 443704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetShortArrayRegion)(JNIEnv*, jshortArray, 444704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, const jshort*); 445704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetIntArrayRegion)(JNIEnv*, jintArray, 446704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, const jint*); 447704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetLongArrayRegion)(JNIEnv*, jlongArray, 448704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, const jlong*); 449704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetFloatArrayRegion)(JNIEnv*, jfloatArray, 450704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, const jfloat*); 451704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*SetDoubleArrayRegion)(JNIEnv*, jdoubleArray, 452704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize, jsize, const jdouble*); 453704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 454704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*RegisterNatives)(JNIEnv*, jclass, const JNINativeMethod*, 455704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint); 456704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*UnregisterNatives)(JNIEnv*, jclass); 457704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*MonitorEnter)(JNIEnv*, jobject); 458704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*MonitorExit)(JNIEnv*, jobject); 459704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*GetJavaVM)(JNIEnv*, JavaVM**); 460704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 461704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetStringRegion)(JNIEnv*, jstring, jsize, jsize, jchar*); 462704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*GetStringUTFRegion)(JNIEnv*, jstring, jsize, jsize, char*); 463704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 464704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* (*GetPrimitiveArrayCritical)(JNIEnv*, jarray, jboolean*); 465704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleasePrimitiveArrayCritical)(JNIEnv*, jarray, void*, jint); 466704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 467704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jchar* (*GetStringCritical)(JNIEnv*, jstring, jboolean*); 468704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*ReleaseStringCritical)(JNIEnv*, jstring, const jchar*); 469704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 470704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jweak (*NewWeakGlobalRef)(JNIEnv*, jobject); 471704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void (*DeleteWeakGlobalRef)(JNIEnv*, jweak); 472704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 473704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean (*ExceptionCheck)(JNIEnv*); 474704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 475704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject (*NewDirectByteBuffer)(JNIEnv*, void*, jlong); 476704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* (*GetDirectBufferAddress)(JNIEnv*, jobject); 477704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong (*GetDirectBufferCapacity)(JNIEnv*, jobject); 478704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 479704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner /* added in JNI 1.6 */ 480704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobjectRefType (*GetObjectRefType)(JNIEnv*, jobject); 481704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 482704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 483704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 484704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * C++ object wrapper. 485704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * 486704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * This is usually overlaid on a C struct whose first element is a 487704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * JNINativeInterface*. We rely somewhat on compiler behavior. 488704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 489704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct _JNIEnv { 490704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner /* do not rename this; it does not seem to be entirely opaque */ 491704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const struct JNINativeInterface* functions; 492704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 493704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#if defined(__cplusplus) 494704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 495704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint GetVersion() 496704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetVersion(this); } 497704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 498704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jclass DefineClass(const char *name, jobject loader, const jbyte* buf, 499704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize bufLen) 500704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->DefineClass(this, name, loader, buf, bufLen); } 501704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 502704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jclass FindClass(const char* name) 503704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->FindClass(this, name); } 504704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 505704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID FromReflectedMethod(jobject method) 506704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->FromReflectedMethod(this, method); } 507704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 508704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfieldID FromReflectedField(jobject field) 509704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->FromReflectedField(this, field); } 510704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 511704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) 512704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->ToReflectedMethod(this, cls, methodID, isStatic); } 513704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 514704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jclass GetSuperclass(jclass clazz) 515704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetSuperclass(this, clazz); } 516704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 517704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean IsAssignableFrom(jclass clazz1, jclass clazz2) 518704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->IsAssignableFrom(this, clazz1, clazz2); } 519704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 520704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) 521704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->ToReflectedField(this, cls, fieldID, isStatic); } 522704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 523704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint Throw(jthrowable obj) 524704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->Throw(this, obj); } 525704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 526704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint ThrowNew(jclass clazz, const char* message) 527704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->ThrowNew(this, clazz, message); } 528704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 529704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jthrowable ExceptionOccurred() 530704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->ExceptionOccurred(this); } 531704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 532704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ExceptionDescribe() 533704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ExceptionDescribe(this); } 534704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 535704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ExceptionClear() 536704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ExceptionClear(this); } 537704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 538704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void FatalError(const char* msg) 539704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->FatalError(this, msg); } 540704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 541704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint PushLocalFrame(jint capacity) 542704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->PushLocalFrame(this, capacity); } 543704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 544704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject PopLocalFrame(jobject result) 545704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->PopLocalFrame(this, result); } 546704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 547704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject NewGlobalRef(jobject obj) 548704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewGlobalRef(this, obj); } 549704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 550704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void DeleteGlobalRef(jobject globalRef) 551704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->DeleteGlobalRef(this, globalRef); } 552704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 553704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void DeleteLocalRef(jobject localRef) 554704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->DeleteLocalRef(this, localRef); } 555704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 556704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean IsSameObject(jobject ref1, jobject ref2) 557704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->IsSameObject(this, ref1, ref2); } 558704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 559704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject NewLocalRef(jobject ref) 560704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewLocalRef(this, ref); } 561704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 562704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint EnsureLocalCapacity(jint capacity) 563704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->EnsureLocalCapacity(this, capacity); } 564704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 565704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject AllocObject(jclass clazz) 566704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->AllocObject(this, clazz); } 567704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 568704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject NewObject(jclass clazz, jmethodID methodID, ...) 569704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { 570704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list args; 571704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_start(args, methodID); 572704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject result = functions->NewObjectV(this, clazz, methodID, args); 573704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_end(args); 574704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner return result; 575704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner } 576704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 577704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject NewObjectV(jclass clazz, jmethodID methodID, va_list args) 578704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewObjectV(this, clazz, methodID, args); } 579704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 580704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue* args) 581704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewObjectA(this, clazz, methodID, args); } 582704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 583704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jclass GetObjectClass(jobject obj) 584704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetObjectClass(this, obj); } 585704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 586704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean IsInstanceOf(jobject obj, jclass clazz) 587704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->IsInstanceOf(this, obj, clazz); } 588704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 589704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID GetMethodID(jclass clazz, const char* name, const char* sig) 590704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetMethodID(this, clazz, name, sig); } 591704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 592704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_TYPE_METHOD(_jtype, _jname) \ 593704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype Call##_jname##Method(jobject obj, jmethodID methodID, ...) \ 594704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { \ 595704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype result; \ 596704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list args; \ 597704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_start(args, methodID); \ 598704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner result = functions->Call##_jname##MethodV(this, obj, methodID, \ 599704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner args); \ 600704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_end(args); \ 601704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner return result; \ 602704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner } 603704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_TYPE_METHODV(_jtype, _jname) \ 604704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype Call##_jname##MethodV(jobject obj, jmethodID methodID, \ 605704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list args) \ 606704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->Call##_jname##MethodV(this, obj, methodID, args); } 607704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_TYPE_METHODA(_jtype, _jname) \ 608704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype Call##_jname##MethodA(jobject obj, jmethodID methodID, \ 609704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jvalue* args) \ 610704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->Call##_jname##MethodA(this, obj, methodID, args); } 611704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 612704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_TYPE(_jtype, _jname) \ 613704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE_METHOD(_jtype, _jname) \ 614704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE_METHODV(_jtype, _jname) \ 615704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE_METHODA(_jtype, _jname) 616704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 617704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE(jobject, Object) 618704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE(jboolean, Boolean) 619704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE(jbyte, Byte) 620704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE(jchar, Char) 621704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE(jshort, Short) 622704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE(jint, Int) 623704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE(jlong, Long) 624704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE(jfloat, Float) 625704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_TYPE(jdouble, Double) 626704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 627704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void CallVoidMethod(jobject obj, jmethodID methodID, ...) 628704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { 629704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list args; 630704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_start(args, methodID); 631704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner functions->CallVoidMethodV(this, obj, methodID, args); 632704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_end(args); 633704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner } 634704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void CallVoidMethodV(jobject obj, jmethodID methodID, va_list args) 635704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->CallVoidMethodV(this, obj, methodID, args); } 636704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void CallVoidMethodA(jobject obj, jmethodID methodID, jvalue* args) 637704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->CallVoidMethodA(this, obj, methodID, args); } 638704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 639704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ 640704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype CallNonvirtual##_jname##Method(jobject obj, jclass clazz, \ 641704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID methodID, ...) \ 642704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { \ 643704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype result; \ 644704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list args; \ 645704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_start(args, methodID); \ 646704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner result = functions->CallNonvirtual##_jname##MethodV(this, obj, \ 647704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner clazz, methodID, args); \ 648704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_end(args); \ 649704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner return result; \ 650704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner } 651704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ 652704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype CallNonvirtual##_jname##MethodV(jobject obj, jclass clazz, \ 653704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID methodID, va_list args) \ 654704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->CallNonvirtual##_jname##MethodV(this, obj, clazz, \ 655704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner methodID, args); } 656704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) \ 657704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype CallNonvirtual##_jname##MethodA(jobject obj, jclass clazz, \ 658704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID methodID, jvalue* args) \ 659704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->CallNonvirtual##_jname##MethodA(this, obj, clazz, \ 660704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner methodID, args); } 661704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 662704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_NONVIRT_TYPE(_jtype, _jname) \ 663704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ 664704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ 665704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) 666704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 667704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE(jobject, Object) 668704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE(jboolean, Boolean) 669704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE(jbyte, Byte) 670704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE(jchar, Char) 671704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE(jshort, Short) 672704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE(jint, Int) 673704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE(jlong, Long) 674704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE(jfloat, Float) 675704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_NONVIRT_TYPE(jdouble, Double) 676704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 677704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void CallNonvirtualVoidMethod(jobject obj, jclass clazz, 678704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID methodID, ...) 679704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { 680704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list args; 681704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_start(args, methodID); 682704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); 683704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_end(args); 684704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner } 685704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, 686704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID methodID, va_list args) 687704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); } 688704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, 689704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID methodID, jvalue* args) 690704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->CallNonvirtualVoidMethodA(this, obj, clazz, methodID, args); } 691704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 692704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfieldID GetFieldID(jclass clazz, const char* name, const char* sig) 693704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetFieldID(this, clazz, name, sig); } 694704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 695704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject GetObjectField(jobject obj, jfieldID fieldID) 696704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetObjectField(this, obj, fieldID); } 697704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean GetBooleanField(jobject obj, jfieldID fieldID) 698704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetBooleanField(this, obj, fieldID); } 699704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte GetByteField(jobject obj, jfieldID fieldID) 700704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetByteField(this, obj, fieldID); } 701704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar GetCharField(jobject obj, jfieldID fieldID) 702704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetCharField(this, obj, fieldID); } 703704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort GetShortField(jobject obj, jfieldID fieldID) 704704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetShortField(this, obj, fieldID); } 705704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint GetIntField(jobject obj, jfieldID fieldID) 706704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetIntField(this, obj, fieldID); } 707704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong GetLongField(jobject obj, jfieldID fieldID) 708704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetLongField(this, obj, fieldID); } 709704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat GetFloatField(jobject obj, jfieldID fieldID) 710704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetFloatField(this, obj, fieldID); } 711704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble GetDoubleField(jobject obj, jfieldID fieldID) 712704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetDoubleField(this, obj, fieldID); } 713704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 714704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetObjectField(jobject obj, jfieldID fieldID, jobject value) 715704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetObjectField(this, obj, fieldID, value); } 716704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetBooleanField(jobject obj, jfieldID fieldID, jboolean value) 717704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetBooleanField(this, obj, fieldID, value); } 718704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetByteField(jobject obj, jfieldID fieldID, jbyte value) 719704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetByteField(this, obj, fieldID, value); } 720704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetCharField(jobject obj, jfieldID fieldID, jchar value) 721704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetCharField(this, obj, fieldID, value); } 722704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetShortField(jobject obj, jfieldID fieldID, jshort value) 723704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetShortField(this, obj, fieldID, value); } 724704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetIntField(jobject obj, jfieldID fieldID, jint value) 725704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetIntField(this, obj, fieldID, value); } 726704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetLongField(jobject obj, jfieldID fieldID, jlong value) 727704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetLongField(this, obj, fieldID, value); } 728704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetFloatField(jobject obj, jfieldID fieldID, jfloat value) 729704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetFloatField(this, obj, fieldID, value); } 730704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetDoubleField(jobject obj, jfieldID fieldID, jdouble value) 731704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetDoubleField(this, obj, fieldID, value); } 732704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 733704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jmethodID GetStaticMethodID(jclass clazz, const char* name, const char* sig) 734704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticMethodID(this, clazz, name, sig); } 735704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 736704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ 737704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype CallStatic##_jname##Method(jclass clazz, jmethodID methodID, \ 738704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner ...) \ 739704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { \ 740704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype result; \ 741704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list args; \ 742704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_start(args, methodID); \ 743704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner result = functions->CallStatic##_jname##MethodV(this, clazz, \ 744704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner methodID, args); \ 745704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_end(args); \ 746704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner return result; \ 747704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner } 748704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ 749704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype CallStatic##_jname##MethodV(jclass clazz, jmethodID methodID, \ 750704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list args) \ 751704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->CallStatic##_jname##MethodV(this, clazz, methodID, \ 752704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner args); } 753704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_STATIC_TYPE_METHODA(_jtype, _jname) \ 754704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner _jtype CallStatic##_jname##MethodA(jclass clazz, jmethodID methodID, \ 755704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jvalue* args) \ 756704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->CallStatic##_jname##MethodA(this, clazz, methodID, \ 757704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner args); } 758704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 759704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define CALL_STATIC_TYPE(_jtype, _jname) \ 760704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ 761704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ 762704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE_METHODA(_jtype, _jname) 763704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 764704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE(jobject, Object) 765704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE(jboolean, Boolean) 766704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE(jbyte, Byte) 767704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE(jchar, Char) 768704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE(jshort, Short) 769704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE(jint, Int) 770704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE(jlong, Long) 771704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE(jfloat, Float) 772704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner CALL_STATIC_TYPE(jdouble, Double) 773704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 774704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void CallStaticVoidMethod(jclass clazz, jmethodID methodID, ...) 775704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { 776704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_list args; 777704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_start(args, methodID); 778704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner functions->CallStaticVoidMethodV(this, clazz, methodID, args); 779704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner va_end(args); 780704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner } 781704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void CallStaticVoidMethodV(jclass clazz, jmethodID methodID, va_list args) 782704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->CallStaticVoidMethodV(this, clazz, methodID, args); } 783704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void CallStaticVoidMethodA(jclass clazz, jmethodID methodID, jvalue* args) 784704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->CallStaticVoidMethodA(this, clazz, methodID, args); } 785704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 786704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfieldID GetStaticFieldID(jclass clazz, const char* name, const char* sig) 787704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticFieldID(this, clazz, name, sig); } 788704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 789704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) 790704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticObjectField(this, clazz, fieldID); } 791704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) 792704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticBooleanField(this, clazz, fieldID); } 793704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) 794704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticByteField(this, clazz, fieldID); } 795704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar GetStaticCharField(jclass clazz, jfieldID fieldID) 796704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticCharField(this, clazz, fieldID); } 797704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort GetStaticShortField(jclass clazz, jfieldID fieldID) 798704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticShortField(this, clazz, fieldID); } 799704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint GetStaticIntField(jclass clazz, jfieldID fieldID) 800704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticIntField(this, clazz, fieldID); } 801704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong GetStaticLongField(jclass clazz, jfieldID fieldID) 802704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticLongField(this, clazz, fieldID); } 803704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) 804704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticFloatField(this, clazz, fieldID); } 805704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) 806704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStaticDoubleField(this, clazz, fieldID); } 807704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 808704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) 809704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetStaticObjectField(this, clazz, fieldID, value); } 810704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) 811704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetStaticBooleanField(this, clazz, fieldID, value); } 812704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) 813704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetStaticByteField(this, clazz, fieldID, value); } 814704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) 815704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetStaticCharField(this, clazz, fieldID, value); } 816704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) 817704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetStaticShortField(this, clazz, fieldID, value); } 818704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) 819704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetStaticIntField(this, clazz, fieldID, value); } 820704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) 821704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetStaticLongField(this, clazz, fieldID, value); } 822704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) 823704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetStaticFloatField(this, clazz, fieldID, value); } 824704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) 825704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetStaticDoubleField(this, clazz, fieldID, value); } 826704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 827704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jstring NewString(const jchar* unicodeChars, jsize len) 828704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewString(this, unicodeChars, len); } 829704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 830704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize GetStringLength(jstring string) 831704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStringLength(this, string); } 832704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 833704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jchar* GetStringChars(jstring string, jboolean* isCopy) 834704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStringChars(this, string, isCopy); } 835704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 836704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseStringChars(jstring string, const jchar* chars) 837704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseStringChars(this, string, chars); } 838704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 839704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jstring NewStringUTF(const char* bytes) 840704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewStringUTF(this, bytes); } 841704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 842704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize GetStringUTFLength(jstring string) 843704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStringUTFLength(this, string); } 844704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 845704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const char* GetStringUTFChars(jstring string, jboolean* isCopy) 846704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStringUTFChars(this, string, isCopy); } 847704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 848704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseStringUTFChars(jstring string, const char* utf) 849704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseStringUTFChars(this, string, utf); } 850704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 851704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jsize GetArrayLength(jarray array) 852704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetArrayLength(this, array); } 853704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 854704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobjectArray NewObjectArray(jsize length, jclass elementClass, 855704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject initialElement) 856704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewObjectArray(this, length, elementClass, 857704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner initialElement); } 858704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 859704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject GetObjectArrayElement(jobjectArray array, jsize index) 860704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetObjectArrayElement(this, array, index); } 861704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 862704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetObjectArrayElement(jobjectArray array, jsize index, jobject value) 863704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetObjectArrayElement(this, array, index, value); } 864704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 865704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbooleanArray NewBooleanArray(jsize length) 866704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewBooleanArray(this, length); } 867704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyteArray NewByteArray(jsize length) 868704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewByteArray(this, length); } 869704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jcharArray NewCharArray(jsize length) 870704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewCharArray(this, length); } 871704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshortArray NewShortArray(jsize length) 872704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewShortArray(this, length); } 873704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jintArray NewIntArray(jsize length) 874704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewIntArray(this, length); } 875704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlongArray NewLongArray(jsize length) 876704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewLongArray(this, length); } 877704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloatArray NewFloatArray(jsize length) 878704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewFloatArray(this, length); } 879704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdoubleArray NewDoubleArray(jsize length) 880704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewDoubleArray(this, length); } 881704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 882704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean* GetBooleanArrayElements(jbooleanArray array, jboolean* isCopy) 883704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetBooleanArrayElements(this, array, isCopy); } 884704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte* GetByteArrayElements(jbyteArray array, jboolean* isCopy) 885704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetByteArrayElements(this, array, isCopy); } 886704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar* GetCharArrayElements(jcharArray array, jboolean* isCopy) 887704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetCharArrayElements(this, array, isCopy); } 888704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort* GetShortArrayElements(jshortArray array, jboolean* isCopy) 889704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetShortArrayElements(this, array, isCopy); } 890704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint* GetIntArrayElements(jintArray array, jboolean* isCopy) 891704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetIntArrayElements(this, array, isCopy); } 892704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong* GetLongArrayElements(jlongArray array, jboolean* isCopy) 893704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetLongArrayElements(this, array, isCopy); } 894704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat* GetFloatArrayElements(jfloatArray array, jboolean* isCopy) 895704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetFloatArrayElements(this, array, isCopy); } 896704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble* GetDoubleArrayElements(jdoubleArray array, jboolean* isCopy) 897704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetDoubleArrayElements(this, array, isCopy); } 898704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 899704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseBooleanArrayElements(jbooleanArray array, jboolean* elems, 900704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint mode) 901704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseBooleanArrayElements(this, array, elems, mode); } 902704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseByteArrayElements(jbyteArray array, jbyte* elems, 903704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint mode) 904704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseByteArrayElements(this, array, elems, mode); } 905704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseCharArrayElements(jcharArray array, jchar* elems, 906704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint mode) 907704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseCharArrayElements(this, array, elems, mode); } 908704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseShortArrayElements(jshortArray array, jshort* elems, 909704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint mode) 910704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseShortArrayElements(this, array, elems, mode); } 911704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseIntArrayElements(jintArray array, jint* elems, 912704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint mode) 913704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseIntArrayElements(this, array, elems, mode); } 914704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseLongArrayElements(jlongArray array, jlong* elems, 915704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint mode) 916704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseLongArrayElements(this, array, elems, mode); } 917704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseFloatArrayElements(jfloatArray array, jfloat* elems, 918704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint mode) 919704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseFloatArrayElements(this, array, elems, mode); } 920704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseDoubleArrayElements(jdoubleArray array, jdouble* elems, 921704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint mode) 922704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseDoubleArrayElements(this, array, elems, mode); } 923704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 924704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 925704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean* buf) 926704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->GetBooleanArrayRegion(this, array, start, len, buf); } 927704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetByteArrayRegion(jbyteArray array, jsize start, jsize len, 928704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jbyte* buf) 929704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->GetByteArrayRegion(this, array, start, len, buf); } 930704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetCharArrayRegion(jcharArray array, jsize start, jsize len, 931704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jchar* buf) 932704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->GetCharArrayRegion(this, array, start, len, buf); } 933704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetShortArrayRegion(jshortArray array, jsize start, jsize len, 934704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jshort* buf) 935704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->GetShortArrayRegion(this, array, start, len, buf); } 936704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetIntArrayRegion(jintArray array, jsize start, jsize len, 937704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint* buf) 938704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->GetIntArrayRegion(this, array, start, len, buf); } 939704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetLongArrayRegion(jlongArray array, jsize start, jsize len, 940704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong* buf) 941704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->GetLongArrayRegion(this, array, start, len, buf); } 942704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 943704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jfloat* buf) 944704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->GetFloatArrayRegion(this, array, start, len, buf); } 945704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 946704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jdouble* buf) 947704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->GetDoubleArrayRegion(this, array, start, len, buf); } 948704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 949704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 950704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jboolean* buf) 951704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetBooleanArrayRegion(this, array, start, len, buf); } 952704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, 953704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jbyte* buf) 954704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetByteArrayRegion(this, array, start, len, buf); } 955704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetCharArrayRegion(jcharArray array, jsize start, jsize len, 956704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jchar* buf) 957704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetCharArrayRegion(this, array, start, len, buf); } 958704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetShortArrayRegion(jshortArray array, jsize start, jsize len, 959704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jshort* buf) 960704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetShortArrayRegion(this, array, start, len, buf); } 961704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetIntArrayRegion(jintArray array, jsize start, jsize len, 962704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jint* buf) 963704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetIntArrayRegion(this, array, start, len, buf); } 964704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetLongArrayRegion(jlongArray array, jsize start, jsize len, 965704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jlong* buf) 966704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetLongArrayRegion(this, array, start, len, buf); } 967704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 968704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jfloat* buf) 969704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetFloatArrayRegion(this, array, start, len, buf); } 970704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 971704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jdouble* buf) 972704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->SetDoubleArrayRegion(this, array, start, len, buf); } 973704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 974704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint RegisterNatives(jclass clazz, const JNINativeMethod* methods, 975704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint nMethods) 976704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->RegisterNatives(this, clazz, methods, nMethods); } 977704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 978704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint UnregisterNatives(jclass clazz) 979704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->UnregisterNatives(this, clazz); } 980704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 981704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint MonitorEnter(jobject obj) 982704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->MonitorEnter(this, obj); } 983704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 984704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint MonitorExit(jobject obj) 985704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->MonitorExit(this, obj); } 986704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 987704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint GetJavaVM(JavaVM** vm) 988704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetJavaVM(this, vm); } 989704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 990704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetStringRegion(jstring str, jsize start, jsize len, jchar* buf) 991704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->GetStringRegion(this, str, start, len, buf); } 992704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 993704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void GetStringUTFRegion(jstring str, jsize start, jsize len, char* buf) 994704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStringUTFRegion(this, str, start, len, buf); } 995704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 996704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* GetPrimitiveArrayCritical(jarray array, jboolean* isCopy) 997704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetPrimitiveArrayCritical(this, array, isCopy); } 998704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 999704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleasePrimitiveArrayCritical(jarray array, void* carray, jint mode) 1000704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleasePrimitiveArrayCritical(this, array, carray, mode); } 1001704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1002704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const jchar* GetStringCritical(jstring string, jboolean* isCopy) 1003704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetStringCritical(this, string, isCopy); } 1004704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1005704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void ReleaseStringCritical(jstring string, const jchar* carray) 1006704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->ReleaseStringCritical(this, string, carray); } 1007704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1008704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jweak NewWeakGlobalRef(jobject obj) 1009704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewWeakGlobalRef(this, obj); } 1010704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1011704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void DeleteWeakGlobalRef(jweak obj) 1012704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { functions->DeleteWeakGlobalRef(this, obj); } 1013704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1014704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean ExceptionCheck() 1015704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->ExceptionCheck(this); } 1016704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1017704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject NewDirectByteBuffer(void* address, jlong capacity) 1018704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->NewDirectByteBuffer(this, address, capacity); } 1019704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1020704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* GetDirectBufferAddress(jobject buf) 1021704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetDirectBufferAddress(this, buf); } 1022704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1023704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jlong GetDirectBufferCapacity(jobject buf) 1024704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetDirectBufferCapacity(this, buf); } 1025704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1026704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner /* added in JNI 1.6 */ 1027704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobjectRefType GetObjectRefType(jobject obj) 1028704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetObjectRefType(this, obj); } 1029704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif /*__cplusplus*/ 1030704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 1031704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1032704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1033704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 1034704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * JNI invocation interface. 1035704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 1036704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct JNIInvokeInterface { 1037704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* reserved0; 1038704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* reserved1; 1039704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* reserved2; 1040704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1041704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*DestroyJavaVM)(JavaVM*); 1042704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*AttachCurrentThread)(JavaVM*, JNIEnv**, void*); 1043704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*DetachCurrentThread)(JavaVM*); 1044704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*GetEnv)(JavaVM*, void**, jint); 1045704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint (*AttachCurrentThreadAsDaemon)(JavaVM*, JNIEnv**, void*); 1046704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 1047704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1048704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 1049704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * C++ version. 1050704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 1051704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct _JavaVM { 1052704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const struct JNIInvokeInterface* functions; 1053704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1054704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#if defined(__cplusplus) 1055704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint DestroyJavaVM() 1056704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->DestroyJavaVM(this); } 1057704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint AttachCurrentThread(JNIEnv** p_env, void* thr_args) 1058704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->AttachCurrentThread(this, p_env, thr_args); } 1059704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint DetachCurrentThread() 1060704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->DetachCurrentThread(this); } 1061704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint GetEnv(void** env, jint version) 1062704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->GetEnv(this, env, version); } 1063704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint AttachCurrentThreadAsDaemon(JNIEnv** p_env, void* thr_args) 1064704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner { return functions->AttachCurrentThreadAsDaemon(this, p_env, thr_args); } 1065704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif /*__cplusplus*/ 1066704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 1067704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1068704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerstruct JavaVMAttachArgs { 1069704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint version; /* must be >= JNI_VERSION_1_2 */ 1070704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const char* name; /* NULL or name of thread as modified UTF-8 str */ 1071704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jobject group; /* global ref of a ThreadGroup object, or NULL */ 1072704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner}; 1073704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef struct JavaVMAttachArgs JavaVMAttachArgs; 1074704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1075704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 1076704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * JNI 1.2+ initialization. (As of 1.6, the pre-1.2 structures are no 1077704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * longer supported.) 1078704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 1079704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef struct JavaVMOption { 1080704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner const char* optionString; 1081704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner void* extraInfo; 1082704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner} JavaVMOption; 1083704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1084704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnertypedef struct JavaVMInitArgs { 1085704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint version; /* use JNI_VERSION_1_2 or later */ 1086704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1087704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jint nOptions; 1088704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner JavaVMOption* options; 1089704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner jboolean ignoreUnrecognized; 1090704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner} JavaVMInitArgs; 1091704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1092704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#ifdef __cplusplus 1093704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerextern "C" { 1094704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif 1095704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 1096704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * VM initialization functions. 1097704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * 1098704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * Note these are the only symbols exported for JNI by the VM. 1099704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 1100704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerjint JNI_GetDefaultJavaVMInitArgs(void*); 1101704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerjint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*); 1102704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerjint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*); 1103704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1104704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 1105704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * Prototypes for functions exported by loadable shared libs. These are 1106704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * called by JNI, not provided by JNI. 1107704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 1108704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnerjint JNI_OnLoad(JavaVM* vm, void* reserved); 1109704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turnervoid JNI_OnUnload(JavaVM* vm, void* reserved); 1110704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1111704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#ifdef __cplusplus 1112704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner} 1113704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif 1114704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1115704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1116704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* 1117704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner * Manifest constants. 1118704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner */ 1119704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_FALSE 0 1120704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_TRUE 1 1121704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1122704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_VERSION_1_1 0x00010001 1123704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_VERSION_1_2 0x00010002 1124704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_VERSION_1_4 0x00010004 1125704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_VERSION_1_6 0x00010006 1126704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1127704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_OK (0) /* no error */ 1128704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_ERR (-1) /* generic error */ 1129704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_EDETACHED (-2) /* thread detached from the VM */ 1130704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_EVERSION (-3) /* JNI version error */ 1131704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1132704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_COMMIT 1 /* copy content, do not free buffer */ 1133704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNI_ABORT 2 /* free buffer w/o copying back */ 1134704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1135704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner/* need these for Windows-aware headers */ 1136704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNIIMPORT 1137704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNIEXPORT 1138704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#define JNICALL 1139704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner 1140704614245e9bed17f68574bc9686c02c43923292David 'Digit' Turner#endif /*_JNI_H*/ 1141