1b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 2b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * Copyright 2006 The Android Open Source Project 3b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * 4b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * JNI specification, as defined by Sun: 5b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html 6b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * 7b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * Everything here is expected to be VM-neutral. 8b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 9b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#ifndef _JNI_H 10b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define _JNI_H 11b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 12b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#include <stdarg.h> 13b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 14b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 15b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * Primitive types that match up with Java equivalents. 16b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 17b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#ifdef HAVE_INTTYPES_H 18b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare# include <inttypes.h> /* C99 */ 19b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef uint8_t jboolean; /* unsigned 8 bits */ 20b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef int8_t jbyte; /* signed 8 bits */ 21b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef uint16_t jchar; /* unsigned 16 bits */ 22b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef int16_t jshort; /* signed 16 bits */ 23b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef int32_t jint; /* signed 32 bits */ 24b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef int64_t jlong; /* signed 64 bits */ 25b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef float jfloat; /* 32-bit IEEE 754 */ 26b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef double jdouble; /* 64-bit IEEE 754 */ 27b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#else 28b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef unsigned char jboolean; /* unsigned 8 bits */ 29b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef signed char jbyte; /* signed 8 bits */ 30b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef unsigned short jchar; /* unsigned 16 bits */ 31b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef short jshort; /* signed 16 bits */ 32b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef int jint; /* signed 32 bits */ 33b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef long long jlong; /* signed 64 bits */ 34b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef float jfloat; /* 32-bit IEEE 754 */ 35b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef double jdouble; /* 64-bit IEEE 754 */ 36b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif 37b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 38b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* "cardinal indices and sizes" */ 39b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jint jsize; 40b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 41b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#ifdef __cplusplus 42b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 43b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * Reference types, in C++ 44b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 45b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jobject {}; 46b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jclass : public _jobject {}; 47b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jstring : public _jobject {}; 48b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jarray : public _jobject {}; 49b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jobjectArray : public _jarray {}; 50b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jbooleanArray : public _jarray {}; 51b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jbyteArray : public _jarray {}; 52b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jcharArray : public _jarray {}; 53b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jshortArray : public _jarray {}; 54b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jintArray : public _jarray {}; 55b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jlongArray : public _jarray {}; 56b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jfloatArray : public _jarray {}; 57b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jdoubleArray : public _jarray {}; 58b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareclass _jthrowable : public _jobject {}; 59b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 60b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jobject* jobject; 61b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jclass* jclass; 62b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jstring* jstring; 63b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jarray* jarray; 64b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jobjectArray* jobjectArray; 65b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jbooleanArray* jbooleanArray; 66b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jbyteArray* jbyteArray; 67b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jcharArray* jcharArray; 68b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jshortArray* jshortArray; 69b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jintArray* jintArray; 70b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jlongArray* jlongArray; 71b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jfloatArray* jfloatArray; 72b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jdoubleArray* jdoubleArray; 73b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jthrowable* jthrowable; 74b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _jobject* jweak; 75b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 76b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 77b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#else /* not __cplusplus */ 78b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 79b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 80b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * Reference types, in C. 81b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 82b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef void* jobject; 83b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jobject jclass; 84b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jobject jstring; 85b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jobject jarray; 86b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jarray jobjectArray; 87b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jarray jbooleanArray; 88b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jarray jbyteArray; 89b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jarray jcharArray; 90b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jarray jshortArray; 91b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jarray jintArray; 92b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jarray jlongArray; 93b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jarray jfloatArray; 94b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jarray jdoubleArray; 95b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jobject jthrowable; 96b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef jobject jweak; 97b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 98b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif /* not __cplusplus */ 99b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 100b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct _jfieldID; /* opaque structure */ 101b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef struct _jfieldID* jfieldID; /* field IDs */ 102b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 103b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct _jmethodID; /* opaque structure */ 104b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef struct _jmethodID* jmethodID; /* method IDs */ 105b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 106b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct JNIInvokeInterface; 107b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 108b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef union jvalue { 109b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean z; 110b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte b; 111b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar c; 112b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort s; 113b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint i; 114b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong j; 115b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat f; 116b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble d; 117b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject l; 118b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare} jvalue; 119b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 120b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef enum jobjectRefType { 121b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare JNIInvalidRefType = 0, 122b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare JNILocalRefType = 1, 123b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare JNIGlobalRefType = 2, 124b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare JNIWeakGlobalRefType = 3 125b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare} jobjectRefType; 126b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 127b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef struct { 128b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const char* name; 129b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const char* signature; 130b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* fnPtr; 131b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare} JNINativeMethod; 132b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 133b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct _JNIEnv; 134b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct _JavaVM; 135b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef const struct JNINativeInterface* C_JNIEnv; 136b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 137b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#if defined(__cplusplus) 138b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _JNIEnv JNIEnv; 139b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef _JavaVM JavaVM; 140b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#else 141b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef const struct JNINativeInterface* JNIEnv; 142b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef const struct JNIInvokeInterface* JavaVM; 143b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif 144b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 145b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 146b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * Table of interface function pointers. 147b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 148b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct JNINativeInterface { 149b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* reserved0; 150b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* reserved1; 151b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* reserved2; 152b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* reserved3; 153b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 154b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*GetVersion)(JNIEnv *); 155b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 156b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jclass (*DefineClass)(JNIEnv*, const char*, jobject, const jbyte*, 157b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize); 158b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jclass (*FindClass)(JNIEnv*, const char*); 159b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 160b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID (*FromReflectedMethod)(JNIEnv*, jobject); 161b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfieldID (*FromReflectedField)(JNIEnv*, jobject); 162b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare /* spec doesn't show jboolean parameter */ 163b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*ToReflectedMethod)(JNIEnv*, jclass, jmethodID, jboolean); 164b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 165b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jclass (*GetSuperclass)(JNIEnv*, jclass); 166b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*IsAssignableFrom)(JNIEnv*, jclass, jclass); 167b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 168b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare /* spec doesn't show jboolean parameter */ 169b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*ToReflectedField)(JNIEnv*, jclass, jfieldID, jboolean); 170b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 171b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*Throw)(JNIEnv*, jthrowable); 172b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*ThrowNew)(JNIEnv *, jclass, const char *); 173b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jthrowable (*ExceptionOccurred)(JNIEnv*); 174b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ExceptionDescribe)(JNIEnv*); 175b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ExceptionClear)(JNIEnv*); 176b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*FatalError)(JNIEnv*, const char*); 177b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 178b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*PushLocalFrame)(JNIEnv*, jint); 179b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*PopLocalFrame)(JNIEnv*, jobject); 180b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 181b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*NewGlobalRef)(JNIEnv*, jobject); 182b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*DeleteGlobalRef)(JNIEnv*, jobject); 183b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*DeleteLocalRef)(JNIEnv*, jobject); 184b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*IsSameObject)(JNIEnv*, jobject, jobject); 185b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 186b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*NewLocalRef)(JNIEnv*, jobject); 187b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*EnsureLocalCapacity)(JNIEnv*, jint); 188b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 189b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*AllocObject)(JNIEnv*, jclass); 190b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*NewObject)(JNIEnv*, jclass, jmethodID, ...); 191b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*NewObjectV)(JNIEnv*, jclass, jmethodID, va_list); 192b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*NewObjectA)(JNIEnv*, jclass, jmethodID, jvalue*); 193b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 194b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jclass (*GetObjectClass)(JNIEnv*, jobject); 195b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*IsInstanceOf)(JNIEnv*, jobject, jclass); 196b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*); 197b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 198b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*CallObjectMethod)(JNIEnv*, jobject, jmethodID, ...); 199b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list); 200b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*CallObjectMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 201b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*CallBooleanMethod)(JNIEnv*, jobject, jmethodID, ...); 202b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*CallBooleanMethodV)(JNIEnv*, jobject, jmethodID, va_list); 203b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*CallBooleanMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 204b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*CallByteMethod)(JNIEnv*, jobject, jmethodID, ...); 205b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*CallByteMethodV)(JNIEnv*, jobject, jmethodID, va_list); 206b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*CallByteMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 207b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*CallCharMethod)(JNIEnv*, jobject, jmethodID, ...); 208b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*CallCharMethodV)(JNIEnv*, jobject, jmethodID, va_list); 209b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*CallCharMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 210b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*CallShortMethod)(JNIEnv*, jobject, jmethodID, ...); 211b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*CallShortMethodV)(JNIEnv*, jobject, jmethodID, va_list); 212b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*CallShortMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 213b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*CallIntMethod)(JNIEnv*, jobject, jmethodID, ...); 214b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*CallIntMethodV)(JNIEnv*, jobject, jmethodID, va_list); 215b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*CallIntMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 216b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*CallLongMethod)(JNIEnv*, jobject, jmethodID, ...); 217b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*CallLongMethodV)(JNIEnv*, jobject, jmethodID, va_list); 218b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*CallLongMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 219b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*CallFloatMethod)(JNIEnv*, jobject, jmethodID, ...); 220b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*CallFloatMethodV)(JNIEnv*, jobject, jmethodID, va_list); 221b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*CallFloatMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 222b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*CallDoubleMethod)(JNIEnv*, jobject, jmethodID, ...); 223b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*CallDoubleMethodV)(JNIEnv*, jobject, jmethodID, va_list); 224b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*CallDoubleMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 225b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...); 226b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*CallVoidMethodV)(JNIEnv*, jobject, jmethodID, va_list); 227b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*CallVoidMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 228b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 229b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*CallNonvirtualObjectMethod)(JNIEnv*, jobject, jclass, 230b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 231b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*CallNonvirtualObjectMethodV)(JNIEnv*, jobject, jclass, 232b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 233b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*CallNonvirtualObjectMethodA)(JNIEnv*, jobject, jclass, 234b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 235b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*CallNonvirtualBooleanMethod)(JNIEnv*, jobject, jclass, 236b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 237b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*CallNonvirtualBooleanMethodV)(JNIEnv*, jobject, jclass, 238b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 239b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*CallNonvirtualBooleanMethodA)(JNIEnv*, jobject, jclass, 240b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 241b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*CallNonvirtualByteMethod)(JNIEnv*, jobject, jclass, 242b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 243b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*CallNonvirtualByteMethodV)(JNIEnv*, jobject, jclass, 244b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 245b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*CallNonvirtualByteMethodA)(JNIEnv*, jobject, jclass, 246b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 247b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*CallNonvirtualCharMethod)(JNIEnv*, jobject, jclass, 248b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 249b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*CallNonvirtualCharMethodV)(JNIEnv*, jobject, jclass, 250b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 251b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*CallNonvirtualCharMethodA)(JNIEnv*, jobject, jclass, 252b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 253b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*CallNonvirtualShortMethod)(JNIEnv*, jobject, jclass, 254b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 255b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*CallNonvirtualShortMethodV)(JNIEnv*, jobject, jclass, 256b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 257b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*CallNonvirtualShortMethodA)(JNIEnv*, jobject, jclass, 258b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 259b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*CallNonvirtualIntMethod)(JNIEnv*, jobject, jclass, 260b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 261b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*CallNonvirtualIntMethodV)(JNIEnv*, jobject, jclass, 262b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 263b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*CallNonvirtualIntMethodA)(JNIEnv*, jobject, jclass, 264b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 265b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*CallNonvirtualLongMethod)(JNIEnv*, jobject, jclass, 266b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 267b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*CallNonvirtualLongMethodV)(JNIEnv*, jobject, jclass, 268b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 269b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*CallNonvirtualLongMethodA)(JNIEnv*, jobject, jclass, 270b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 271b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*CallNonvirtualFloatMethod)(JNIEnv*, jobject, jclass, 272b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 273b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*CallNonvirtualFloatMethodV)(JNIEnv*, jobject, jclass, 274b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 275b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*CallNonvirtualFloatMethodA)(JNIEnv*, jobject, jclass, 276b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 277b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*CallNonvirtualDoubleMethod)(JNIEnv*, jobject, jclass, 278b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 279b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*CallNonvirtualDoubleMethodV)(JNIEnv*, jobject, jclass, 280b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 281b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*CallNonvirtualDoubleMethodA)(JNIEnv*, jobject, jclass, 282b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 283b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*CallNonvirtualVoidMethod)(JNIEnv*, jobject, jclass, 284b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, ...); 285b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*CallNonvirtualVoidMethodV)(JNIEnv*, jobject, jclass, 286b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, va_list); 287b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*CallNonvirtualVoidMethodA)(JNIEnv*, jobject, jclass, 288b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID, jvalue*); 289b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 290b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfieldID (*GetFieldID)(JNIEnv*, jclass, const char*, const char*); 291b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 292b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*GetObjectField)(JNIEnv*, jobject, jfieldID); 293b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*GetBooleanField)(JNIEnv*, jobject, jfieldID); 294b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*GetByteField)(JNIEnv*, jobject, jfieldID); 295b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*GetCharField)(JNIEnv*, jobject, jfieldID); 296b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*GetShortField)(JNIEnv*, jobject, jfieldID); 297b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*GetIntField)(JNIEnv*, jobject, jfieldID); 298b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*GetLongField)(JNIEnv*, jobject, jfieldID); 299b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*GetFloatField)(JNIEnv*, jobject, jfieldID); 300b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*GetDoubleField)(JNIEnv*, jobject, jfieldID); 301b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 302b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetObjectField)(JNIEnv*, jobject, jfieldID, jobject); 303b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetBooleanField)(JNIEnv*, jobject, jfieldID, jboolean); 304b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetByteField)(JNIEnv*, jobject, jfieldID, jbyte); 305b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetCharField)(JNIEnv*, jobject, jfieldID, jchar); 306b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetShortField)(JNIEnv*, jobject, jfieldID, jshort); 307b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetIntField)(JNIEnv*, jobject, jfieldID, jint); 308b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetLongField)(JNIEnv*, jobject, jfieldID, jlong); 309b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetFloatField)(JNIEnv*, jobject, jfieldID, jfloat); 310b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetDoubleField)(JNIEnv*, jobject, jfieldID, jdouble); 311b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 312b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID (*GetStaticMethodID)(JNIEnv*, jclass, const char*, const char*); 313b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 314b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*CallStaticObjectMethod)(JNIEnv*, jclass, jmethodID, ...); 315b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*CallStaticObjectMethodV)(JNIEnv*, jclass, jmethodID, va_list); 316b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*CallStaticObjectMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 317b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*CallStaticBooleanMethod)(JNIEnv*, jclass, jmethodID, ...); 318b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*CallStaticBooleanMethodV)(JNIEnv*, jclass, jmethodID, 319b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list); 320b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*CallStaticBooleanMethodA)(JNIEnv*, jclass, jmethodID, 321b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jvalue*); 322b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*CallStaticByteMethod)(JNIEnv*, jclass, jmethodID, ...); 323b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*CallStaticByteMethodV)(JNIEnv*, jclass, jmethodID, va_list); 324b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*CallStaticByteMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 325b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*CallStaticCharMethod)(JNIEnv*, jclass, jmethodID, ...); 326b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*CallStaticCharMethodV)(JNIEnv*, jclass, jmethodID, va_list); 327b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*CallStaticCharMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 328b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*CallStaticShortMethod)(JNIEnv*, jclass, jmethodID, ...); 329b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*CallStaticShortMethodV)(JNIEnv*, jclass, jmethodID, va_list); 330b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*CallStaticShortMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 331b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*CallStaticIntMethod)(JNIEnv*, jclass, jmethodID, ...); 332b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*CallStaticIntMethodV)(JNIEnv*, jclass, jmethodID, va_list); 333b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*CallStaticIntMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 334b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*CallStaticLongMethod)(JNIEnv*, jclass, jmethodID, ...); 335b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*CallStaticLongMethodV)(JNIEnv*, jclass, jmethodID, va_list); 336b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*CallStaticLongMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 337b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*CallStaticFloatMethod)(JNIEnv*, jclass, jmethodID, ...); 338b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*CallStaticFloatMethodV)(JNIEnv*, jclass, jmethodID, va_list); 339b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*CallStaticFloatMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 340b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*CallStaticDoubleMethod)(JNIEnv*, jclass, jmethodID, ...); 341b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*CallStaticDoubleMethodV)(JNIEnv*, jclass, jmethodID, va_list); 342b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*CallStaticDoubleMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 343b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...); 344b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*CallStaticVoidMethodV)(JNIEnv*, jclass, jmethodID, va_list); 345b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*CallStaticVoidMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 346b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 347b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfieldID (*GetStaticFieldID)(JNIEnv*, jclass, const char*, 348b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const char*); 349b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 350b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*GetStaticObjectField)(JNIEnv*, jclass, jfieldID); 351b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*GetStaticBooleanField)(JNIEnv*, jclass, jfieldID); 352b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte (*GetStaticByteField)(JNIEnv*, jclass, jfieldID); 353b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar (*GetStaticCharField)(JNIEnv*, jclass, jfieldID); 354b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort (*GetStaticShortField)(JNIEnv*, jclass, jfieldID); 355b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*GetStaticIntField)(JNIEnv*, jclass, jfieldID); 356b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*GetStaticLongField)(JNIEnv*, jclass, jfieldID); 357b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat (*GetStaticFloatField)(JNIEnv*, jclass, jfieldID); 358b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble (*GetStaticDoubleField)(JNIEnv*, jclass, jfieldID); 359b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 360b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetStaticObjectField)(JNIEnv*, jclass, jfieldID, jobject); 361b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetStaticBooleanField)(JNIEnv*, jclass, jfieldID, jboolean); 362b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetStaticByteField)(JNIEnv*, jclass, jfieldID, jbyte); 363b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetStaticCharField)(JNIEnv*, jclass, jfieldID, jchar); 364b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetStaticShortField)(JNIEnv*, jclass, jfieldID, jshort); 365b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetStaticIntField)(JNIEnv*, jclass, jfieldID, jint); 366b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetStaticLongField)(JNIEnv*, jclass, jfieldID, jlong); 367b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetStaticFloatField)(JNIEnv*, jclass, jfieldID, jfloat); 368b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetStaticDoubleField)(JNIEnv*, jclass, jfieldID, jdouble); 369b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 370b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jstring (*NewString)(JNIEnv*, const jchar*, jsize); 371b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize (*GetStringLength)(JNIEnv*, jstring); 372b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jchar* (*GetStringChars)(JNIEnv*, jstring, jboolean*); 373b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*); 374b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jstring (*NewStringUTF)(JNIEnv*, const char*); 375b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize (*GetStringUTFLength)(JNIEnv*, jstring); 376b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare /* JNI spec says this returns const jbyte*, but that's inconsistent */ 377b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const char* (*GetStringUTFChars)(JNIEnv*, jstring, jboolean*); 378b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseStringUTFChars)(JNIEnv*, jstring, const char*); 379b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize (*GetArrayLength)(JNIEnv*, jarray); 380b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobjectArray (*NewObjectArray)(JNIEnv*, jsize, jclass, jobject); 381b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*GetObjectArrayElement)(JNIEnv*, jobjectArray, jsize); 382b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetObjectArrayElement)(JNIEnv*, jobjectArray, jsize, jobject); 383b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 384b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbooleanArray (*NewBooleanArray)(JNIEnv*, jsize); 385b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyteArray (*NewByteArray)(JNIEnv*, jsize); 386b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jcharArray (*NewCharArray)(JNIEnv*, jsize); 387b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshortArray (*NewShortArray)(JNIEnv*, jsize); 388b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jintArray (*NewIntArray)(JNIEnv*, jsize); 389b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlongArray (*NewLongArray)(JNIEnv*, jsize); 390b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloatArray (*NewFloatArray)(JNIEnv*, jsize); 391b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdoubleArray (*NewDoubleArray)(JNIEnv*, jsize); 392b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 393b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean* (*GetBooleanArrayElements)(JNIEnv*, jbooleanArray, jboolean*); 394b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte* (*GetByteArrayElements)(JNIEnv*, jbyteArray, jboolean*); 395b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar* (*GetCharArrayElements)(JNIEnv*, jcharArray, jboolean*); 396b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort* (*GetShortArrayElements)(JNIEnv*, jshortArray, jboolean*); 397b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint* (*GetIntArrayElements)(JNIEnv*, jintArray, jboolean*); 398b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong* (*GetLongArrayElements)(JNIEnv*, jlongArray, jboolean*); 399b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat* (*GetFloatArrayElements)(JNIEnv*, jfloatArray, jboolean*); 400b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble* (*GetDoubleArrayElements)(JNIEnv*, jdoubleArray, jboolean*); 401b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 402b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseBooleanArrayElements)(JNIEnv*, jbooleanArray, 403b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean*, jint); 404b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseByteArrayElements)(JNIEnv*, jbyteArray, 405b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte*, jint); 406b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseCharArrayElements)(JNIEnv*, jcharArray, 407b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar*, jint); 408b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseShortArrayElements)(JNIEnv*, jshortArray, 409b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort*, jint); 410b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseIntArrayElements)(JNIEnv*, jintArray, 411b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint*, jint); 412b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseLongArrayElements)(JNIEnv*, jlongArray, 413b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong*, jint); 414b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseFloatArrayElements)(JNIEnv*, jfloatArray, 415b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat*, jint); 416b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseDoubleArrayElements)(JNIEnv*, jdoubleArray, 417b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble*, jint); 418b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 419b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetBooleanArrayRegion)(JNIEnv*, jbooleanArray, 420b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, jboolean*); 421b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetByteArrayRegion)(JNIEnv*, jbyteArray, 422b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, jbyte*); 423b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetCharArrayRegion)(JNIEnv*, jcharArray, 424b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, jchar*); 425b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetShortArrayRegion)(JNIEnv*, jshortArray, 426b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, jshort*); 427b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetIntArrayRegion)(JNIEnv*, jintArray, 428b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, jint*); 429b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetLongArrayRegion)(JNIEnv*, jlongArray, 430b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, jlong*); 431b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetFloatArrayRegion)(JNIEnv*, jfloatArray, 432b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, jfloat*); 433b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetDoubleArrayRegion)(JNIEnv*, jdoubleArray, 434b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, jdouble*); 435b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 436b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare /* spec shows these without const; some jni.h do, some don't */ 437b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetBooleanArrayRegion)(JNIEnv*, jbooleanArray, 438b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, const jboolean*); 439b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetByteArrayRegion)(JNIEnv*, jbyteArray, 440b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, const jbyte*); 441b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetCharArrayRegion)(JNIEnv*, jcharArray, 442b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, const jchar*); 443b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetShortArrayRegion)(JNIEnv*, jshortArray, 444b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, const jshort*); 445b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetIntArrayRegion)(JNIEnv*, jintArray, 446b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, const jint*); 447b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetLongArrayRegion)(JNIEnv*, jlongArray, 448b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, const jlong*); 449b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetFloatArrayRegion)(JNIEnv*, jfloatArray, 450b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, const jfloat*); 451b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*SetDoubleArrayRegion)(JNIEnv*, jdoubleArray, 452b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize, jsize, const jdouble*); 453b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 454b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*RegisterNatives)(JNIEnv*, jclass, const JNINativeMethod*, 455b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint); 456b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*UnregisterNatives)(JNIEnv*, jclass); 457b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*MonitorEnter)(JNIEnv*, jobject); 458b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*MonitorExit)(JNIEnv*, jobject); 459b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*GetJavaVM)(JNIEnv*, JavaVM**); 460b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 461b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetStringRegion)(JNIEnv*, jstring, jsize, jsize, jchar*); 462b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*GetStringUTFRegion)(JNIEnv*, jstring, jsize, jsize, char*); 463b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 464b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* (*GetPrimitiveArrayCritical)(JNIEnv*, jarray, jboolean*); 465b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleasePrimitiveArrayCritical)(JNIEnv*, jarray, void*, jint); 466b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 467b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jchar* (*GetStringCritical)(JNIEnv*, jstring, jboolean*); 468b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*ReleaseStringCritical)(JNIEnv*, jstring, const jchar*); 469b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 470b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jweak (*NewWeakGlobalRef)(JNIEnv*, jobject); 471b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*DeleteWeakGlobalRef)(JNIEnv*, jweak); 472b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 473b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean (*ExceptionCheck)(JNIEnv*); 474b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 475b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject (*NewDirectByteBuffer)(JNIEnv*, void*, jlong); 476b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* (*GetDirectBufferAddress)(JNIEnv*, jobject); 477b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong (*GetDirectBufferCapacity)(JNIEnv*, jobject); 478b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 479b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare /* added in JNI 1.6 */ 480b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobjectRefType (*GetObjectRefType)(JNIEnv*, jobject); 481b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare}; 482b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 483b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 484b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * C++ object wrapper. 485b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * 486b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * This is usually overlaid on a C struct whose first element is a 487b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * JNINativeInterface*. We rely somewhat on compiler behavior. 488b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 489b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct _JNIEnv { 490b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare /* do not rename this; it does not seem to be entirely opaque */ 491b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const struct JNINativeInterface* functions; 492b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 493b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#if defined(__cplusplus) 494b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 495b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint GetVersion() 496b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetVersion(this); } 497b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 498b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jclass DefineClass(const char *name, jobject loader, const jbyte* buf, 499b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize bufLen) 500b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->DefineClass(this, name, loader, buf, bufLen); } 501b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 502b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jclass FindClass(const char* name) 503b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->FindClass(this, name); } 504b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 505b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID FromReflectedMethod(jobject method) 506b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->FromReflectedMethod(this, method); } 507b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 508b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfieldID FromReflectedField(jobject field) 509b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->FromReflectedField(this, field); } 510b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 511b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) 512b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->ToReflectedMethod(this, cls, methodID, isStatic); } 513b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 514b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jclass GetSuperclass(jclass clazz) 515b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetSuperclass(this, clazz); } 516b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 517b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean IsAssignableFrom(jclass clazz1, jclass clazz2) 518b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->IsAssignableFrom(this, clazz1, clazz2); } 519b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 520b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) 521b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->ToReflectedField(this, cls, fieldID, isStatic); } 522b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 523b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint Throw(jthrowable obj) 524b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->Throw(this, obj); } 525b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 526b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint ThrowNew(jclass clazz, const char* message) 527b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->ThrowNew(this, clazz, message); } 528b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 529b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jthrowable ExceptionOccurred() 530b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->ExceptionOccurred(this); } 531b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 532b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ExceptionDescribe() 533b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ExceptionDescribe(this); } 534b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 535b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ExceptionClear() 536b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ExceptionClear(this); } 537b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 538b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void FatalError(const char* msg) 539b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->FatalError(this, msg); } 540b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 541b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint PushLocalFrame(jint capacity) 542b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->PushLocalFrame(this, capacity); } 543b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 544b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject PopLocalFrame(jobject result) 545b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->PopLocalFrame(this, result); } 546b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 547b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject NewGlobalRef(jobject obj) 548b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewGlobalRef(this, obj); } 549b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 550b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void DeleteGlobalRef(jobject globalRef) 551b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->DeleteGlobalRef(this, globalRef); } 552b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 553b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void DeleteLocalRef(jobject localRef) 554b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->DeleteLocalRef(this, localRef); } 555b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 556b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean IsSameObject(jobject ref1, jobject ref2) 557b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->IsSameObject(this, ref1, ref2); } 558b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 559b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject NewLocalRef(jobject ref) 560b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewLocalRef(this, ref); } 561b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 562b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint EnsureLocalCapacity(jint capacity) 563b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->EnsureLocalCapacity(this, capacity); } 564b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 565b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject AllocObject(jclass clazz) 566b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->AllocObject(this, clazz); } 567b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 568b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject NewObject(jclass clazz, jmethodID methodID, ...) 569b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { 570b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list args; 571b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_start(args, methodID); 572b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject result = functions->NewObjectV(this, clazz, methodID, args); 573b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_end(args); 574b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare return result; 575b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare } 576b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 577b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject NewObjectV(jclass clazz, jmethodID methodID, va_list args) 578b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewObjectV(this, clazz, methodID, args); } 579b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 580b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue* args) 581b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewObjectA(this, clazz, methodID, args); } 582b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 583b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jclass GetObjectClass(jobject obj) 584b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetObjectClass(this, obj); } 585b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 586b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean IsInstanceOf(jobject obj, jclass clazz) 587b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->IsInstanceOf(this, obj, clazz); } 588b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 589b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID GetMethodID(jclass clazz, const char* name, const char* sig) 590b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetMethodID(this, clazz, name, sig); } 591b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 592b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_TYPE_METHOD(_jtype, _jname) \ 593b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype Call##_jname##Method(jobject obj, jmethodID methodID, ...) \ 594b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { \ 595b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype result; \ 596b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list args; \ 597b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_start(args, methodID); \ 598b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare result = functions->Call##_jname##MethodV(this, obj, methodID, \ 599b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare args); \ 600b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_end(args); \ 601b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare return result; \ 602b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare } 603b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_TYPE_METHODV(_jtype, _jname) \ 604b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype Call##_jname##MethodV(jobject obj, jmethodID methodID, \ 605b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list args) \ 606b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->Call##_jname##MethodV(this, obj, methodID, args); } 607b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_TYPE_METHODA(_jtype, _jname) \ 608b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype Call##_jname##MethodA(jobject obj, jmethodID methodID, \ 609b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jvalue* args) \ 610b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->Call##_jname##MethodA(this, obj, methodID, args); } 611b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 612b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_TYPE(_jtype, _jname) \ 613b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE_METHOD(_jtype, _jname) \ 614b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE_METHODV(_jtype, _jname) \ 615b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE_METHODA(_jtype, _jname) 616b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 617b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE(jobject, Object) 618b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE(jboolean, Boolean) 619b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE(jbyte, Byte) 620b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE(jchar, Char) 621b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE(jshort, Short) 622b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE(jint, Int) 623b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE(jlong, Long) 624b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE(jfloat, Float) 625b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_TYPE(jdouble, Double) 626b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 627b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void CallVoidMethod(jobject obj, jmethodID methodID, ...) 628b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { 629b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list args; 630b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_start(args, methodID); 631b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare functions->CallVoidMethodV(this, obj, methodID, args); 632b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_end(args); 633b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare } 634b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void CallVoidMethodV(jobject obj, jmethodID methodID, va_list args) 635b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->CallVoidMethodV(this, obj, methodID, args); } 636b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void CallVoidMethodA(jobject obj, jmethodID methodID, jvalue* args) 637b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->CallVoidMethodA(this, obj, methodID, args); } 638b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 639b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ 640b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype CallNonvirtual##_jname##Method(jobject obj, jclass clazz, \ 641b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID methodID, ...) \ 642b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { \ 643b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype result; \ 644b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list args; \ 645b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_start(args, methodID); \ 646b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare result = functions->CallNonvirtual##_jname##MethodV(this, obj, \ 647b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare clazz, methodID, args); \ 648b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_end(args); \ 649b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare return result; \ 650b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare } 651b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ 652b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype CallNonvirtual##_jname##MethodV(jobject obj, jclass clazz, \ 653b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID methodID, va_list args) \ 654b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->CallNonvirtual##_jname##MethodV(this, obj, clazz, \ 655b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare methodID, args); } 656b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) \ 657b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype CallNonvirtual##_jname##MethodA(jobject obj, jclass clazz, \ 658b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID methodID, jvalue* args) \ 659b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->CallNonvirtual##_jname##MethodA(this, obj, clazz, \ 660b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare methodID, args); } 661b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 662b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_NONVIRT_TYPE(_jtype, _jname) \ 663b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ 664b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ 665b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) 666b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 667b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE(jobject, Object) 668b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE(jboolean, Boolean) 669b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE(jbyte, Byte) 670b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE(jchar, Char) 671b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE(jshort, Short) 672b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE(jint, Int) 673b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE(jlong, Long) 674b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE(jfloat, Float) 675b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_NONVIRT_TYPE(jdouble, Double) 676b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 677b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void CallNonvirtualVoidMethod(jobject obj, jclass clazz, 678b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID methodID, ...) 679b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { 680b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list args; 681b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_start(args, methodID); 682b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); 683b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_end(args); 684b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare } 685b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, 686b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID methodID, va_list args) 687b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); } 688b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, 689b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID methodID, jvalue* args) 690b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->CallNonvirtualVoidMethodA(this, obj, clazz, methodID, args); } 691b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 692b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfieldID GetFieldID(jclass clazz, const char* name, const char* sig) 693b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetFieldID(this, clazz, name, sig); } 694b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 695b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject GetObjectField(jobject obj, jfieldID fieldID) 696b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetObjectField(this, obj, fieldID); } 697b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean GetBooleanField(jobject obj, jfieldID fieldID) 698b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetBooleanField(this, obj, fieldID); } 699b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte GetByteField(jobject obj, jfieldID fieldID) 700b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetByteField(this, obj, fieldID); } 701b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar GetCharField(jobject obj, jfieldID fieldID) 702b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetCharField(this, obj, fieldID); } 703b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort GetShortField(jobject obj, jfieldID fieldID) 704b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetShortField(this, obj, fieldID); } 705b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint GetIntField(jobject obj, jfieldID fieldID) 706b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetIntField(this, obj, fieldID); } 707b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong GetLongField(jobject obj, jfieldID fieldID) 708b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetLongField(this, obj, fieldID); } 709b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat GetFloatField(jobject obj, jfieldID fieldID) 710b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetFloatField(this, obj, fieldID); } 711b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble GetDoubleField(jobject obj, jfieldID fieldID) 712b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetDoubleField(this, obj, fieldID); } 713b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 714b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetObjectField(jobject obj, jfieldID fieldID, jobject value) 715b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetObjectField(this, obj, fieldID, value); } 716b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetBooleanField(jobject obj, jfieldID fieldID, jboolean value) 717b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetBooleanField(this, obj, fieldID, value); } 718b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetByteField(jobject obj, jfieldID fieldID, jbyte value) 719b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetByteField(this, obj, fieldID, value); } 720b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetCharField(jobject obj, jfieldID fieldID, jchar value) 721b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetCharField(this, obj, fieldID, value); } 722b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetShortField(jobject obj, jfieldID fieldID, jshort value) 723b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetShortField(this, obj, fieldID, value); } 724b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetIntField(jobject obj, jfieldID fieldID, jint value) 725b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetIntField(this, obj, fieldID, value); } 726b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetLongField(jobject obj, jfieldID fieldID, jlong value) 727b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetLongField(this, obj, fieldID, value); } 728b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetFloatField(jobject obj, jfieldID fieldID, jfloat value) 729b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetFloatField(this, obj, fieldID, value); } 730b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetDoubleField(jobject obj, jfieldID fieldID, jdouble value) 731b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetDoubleField(this, obj, fieldID, value); } 732b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 733b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jmethodID GetStaticMethodID(jclass clazz, const char* name, const char* sig) 734b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticMethodID(this, clazz, name, sig); } 735b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 736b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ 737b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype CallStatic##_jname##Method(jclass clazz, jmethodID methodID, \ 738b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ...) \ 739b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { \ 740b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype result; \ 741b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list args; \ 742b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_start(args, methodID); \ 743b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare result = functions->CallStatic##_jname##MethodV(this, clazz, \ 744b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare methodID, args); \ 745b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_end(args); \ 746b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare return result; \ 747b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare } 748b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ 749b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype CallStatic##_jname##MethodV(jclass clazz, jmethodID methodID, \ 750b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list args) \ 751b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->CallStatic##_jname##MethodV(this, clazz, methodID, \ 752b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare args); } 753b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_STATIC_TYPE_METHODA(_jtype, _jname) \ 754b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare _jtype CallStatic##_jname##MethodA(jclass clazz, jmethodID methodID, \ 755b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jvalue* args) \ 756b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->CallStatic##_jname##MethodA(this, clazz, methodID, \ 757b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare args); } 758b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 759b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define CALL_STATIC_TYPE(_jtype, _jname) \ 760b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ 761b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ 762b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE_METHODA(_jtype, _jname) 763b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 764b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE(jobject, Object) 765b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE(jboolean, Boolean) 766b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE(jbyte, Byte) 767b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE(jchar, Char) 768b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE(jshort, Short) 769b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE(jint, Int) 770b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE(jlong, Long) 771b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE(jfloat, Float) 772b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare CALL_STATIC_TYPE(jdouble, Double) 773b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 774b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void CallStaticVoidMethod(jclass clazz, jmethodID methodID, ...) 775b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { 776b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_list args; 777b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_start(args, methodID); 778b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare functions->CallStaticVoidMethodV(this, clazz, methodID, args); 779b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare va_end(args); 780b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare } 781b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void CallStaticVoidMethodV(jclass clazz, jmethodID methodID, va_list args) 782b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->CallStaticVoidMethodV(this, clazz, methodID, args); } 783b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void CallStaticVoidMethodA(jclass clazz, jmethodID methodID, jvalue* args) 784b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->CallStaticVoidMethodA(this, clazz, methodID, args); } 785b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 786b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfieldID GetStaticFieldID(jclass clazz, const char* name, const char* sig) 787b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticFieldID(this, clazz, name, sig); } 788b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 789b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) 790b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticObjectField(this, clazz, fieldID); } 791b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) 792b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticBooleanField(this, clazz, fieldID); } 793b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) 794b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticByteField(this, clazz, fieldID); } 795b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar GetStaticCharField(jclass clazz, jfieldID fieldID) 796b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticCharField(this, clazz, fieldID); } 797b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort GetStaticShortField(jclass clazz, jfieldID fieldID) 798b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticShortField(this, clazz, fieldID); } 799b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint GetStaticIntField(jclass clazz, jfieldID fieldID) 800b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticIntField(this, clazz, fieldID); } 801b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong GetStaticLongField(jclass clazz, jfieldID fieldID) 802b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticLongField(this, clazz, fieldID); } 803b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) 804b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticFloatField(this, clazz, fieldID); } 805b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) 806b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStaticDoubleField(this, clazz, fieldID); } 807b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 808b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) 809b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetStaticObjectField(this, clazz, fieldID, value); } 810b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) 811b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetStaticBooleanField(this, clazz, fieldID, value); } 812b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) 813b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetStaticByteField(this, clazz, fieldID, value); } 814b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) 815b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetStaticCharField(this, clazz, fieldID, value); } 816b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) 817b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetStaticShortField(this, clazz, fieldID, value); } 818b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) 819b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetStaticIntField(this, clazz, fieldID, value); } 820b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) 821b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetStaticLongField(this, clazz, fieldID, value); } 822b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) 823b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetStaticFloatField(this, clazz, fieldID, value); } 824b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) 825b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetStaticDoubleField(this, clazz, fieldID, value); } 826b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 827b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jstring NewString(const jchar* unicodeChars, jsize len) 828b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewString(this, unicodeChars, len); } 829b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 830b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize GetStringLength(jstring string) 831b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStringLength(this, string); } 832b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 833b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jchar* GetStringChars(jstring string, jboolean* isCopy) 834b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStringChars(this, string, isCopy); } 835b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 836b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseStringChars(jstring string, const jchar* chars) 837b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseStringChars(this, string, chars); } 838b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 839b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jstring NewStringUTF(const char* bytes) 840b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewStringUTF(this, bytes); } 841b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 842b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize GetStringUTFLength(jstring string) 843b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStringUTFLength(this, string); } 844b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 845b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const char* GetStringUTFChars(jstring string, jboolean* isCopy) 846b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStringUTFChars(this, string, isCopy); } 847b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 848b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseStringUTFChars(jstring string, const char* utf) 849b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseStringUTFChars(this, string, utf); } 850b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 851b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jsize GetArrayLength(jarray array) 852b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetArrayLength(this, array); } 853b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 854b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobjectArray NewObjectArray(jsize length, jclass elementClass, 855b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject initialElement) 856b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewObjectArray(this, length, elementClass, 857b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare initialElement); } 858b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 859b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject GetObjectArrayElement(jobjectArray array, jsize index) 860b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetObjectArrayElement(this, array, index); } 861b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 862b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetObjectArrayElement(jobjectArray array, jsize index, jobject value) 863b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetObjectArrayElement(this, array, index, value); } 864b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 865b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbooleanArray NewBooleanArray(jsize length) 866b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewBooleanArray(this, length); } 867b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyteArray NewByteArray(jsize length) 868b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewByteArray(this, length); } 869b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jcharArray NewCharArray(jsize length) 870b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewCharArray(this, length); } 871b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshortArray NewShortArray(jsize length) 872b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewShortArray(this, length); } 873b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jintArray NewIntArray(jsize length) 874b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewIntArray(this, length); } 875b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlongArray NewLongArray(jsize length) 876b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewLongArray(this, length); } 877b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloatArray NewFloatArray(jsize length) 878b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewFloatArray(this, length); } 879b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdoubleArray NewDoubleArray(jsize length) 880b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewDoubleArray(this, length); } 881b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 882b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean* GetBooleanArrayElements(jbooleanArray array, jboolean* isCopy) 883b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetBooleanArrayElements(this, array, isCopy); } 884b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte* GetByteArrayElements(jbyteArray array, jboolean* isCopy) 885b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetByteArrayElements(this, array, isCopy); } 886b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar* GetCharArrayElements(jcharArray array, jboolean* isCopy) 887b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetCharArrayElements(this, array, isCopy); } 888b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort* GetShortArrayElements(jshortArray array, jboolean* isCopy) 889b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetShortArrayElements(this, array, isCopy); } 890b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint* GetIntArrayElements(jintArray array, jboolean* isCopy) 891b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetIntArrayElements(this, array, isCopy); } 892b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong* GetLongArrayElements(jlongArray array, jboolean* isCopy) 893b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetLongArrayElements(this, array, isCopy); } 894b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat* GetFloatArrayElements(jfloatArray array, jboolean* isCopy) 895b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetFloatArrayElements(this, array, isCopy); } 896b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble* GetDoubleArrayElements(jdoubleArray array, jboolean* isCopy) 897b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetDoubleArrayElements(this, array, isCopy); } 898b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 899b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseBooleanArrayElements(jbooleanArray array, jboolean* elems, 900b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint mode) 901b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseBooleanArrayElements(this, array, elems, mode); } 902b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseByteArrayElements(jbyteArray array, jbyte* elems, 903b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint mode) 904b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseByteArrayElements(this, array, elems, mode); } 905b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseCharArrayElements(jcharArray array, jchar* elems, 906b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint mode) 907b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseCharArrayElements(this, array, elems, mode); } 908b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseShortArrayElements(jshortArray array, jshort* elems, 909b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint mode) 910b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseShortArrayElements(this, array, elems, mode); } 911b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseIntArrayElements(jintArray array, jint* elems, 912b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint mode) 913b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseIntArrayElements(this, array, elems, mode); } 914b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseLongArrayElements(jlongArray array, jlong* elems, 915b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint mode) 916b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseLongArrayElements(this, array, elems, mode); } 917b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseFloatArrayElements(jfloatArray array, jfloat* elems, 918b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint mode) 919b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseFloatArrayElements(this, array, elems, mode); } 920b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseDoubleArrayElements(jdoubleArray array, jdouble* elems, 921b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint mode) 922b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseDoubleArrayElements(this, array, elems, mode); } 923b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 924b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 925b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean* buf) 926b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->GetBooleanArrayRegion(this, array, start, len, buf); } 927b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetByteArrayRegion(jbyteArray array, jsize start, jsize len, 928b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jbyte* buf) 929b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->GetByteArrayRegion(this, array, start, len, buf); } 930b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetCharArrayRegion(jcharArray array, jsize start, jsize len, 931b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jchar* buf) 932b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->GetCharArrayRegion(this, array, start, len, buf); } 933b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetShortArrayRegion(jshortArray array, jsize start, jsize len, 934b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jshort* buf) 935b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->GetShortArrayRegion(this, array, start, len, buf); } 936b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetIntArrayRegion(jintArray array, jsize start, jsize len, 937b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint* buf) 938b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->GetIntArrayRegion(this, array, start, len, buf); } 939b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetLongArrayRegion(jlongArray array, jsize start, jsize len, 940b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong* buf) 941b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->GetLongArrayRegion(this, array, start, len, buf); } 942b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 943b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jfloat* buf) 944b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->GetFloatArrayRegion(this, array, start, len, buf); } 945b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 946b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jdouble* buf) 947b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->GetDoubleArrayRegion(this, array, start, len, buf); } 948b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 949b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 950b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jboolean* buf) 951b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetBooleanArrayRegion(this, array, start, len, buf); } 952b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, 953b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jbyte* buf) 954b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetByteArrayRegion(this, array, start, len, buf); } 955b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetCharArrayRegion(jcharArray array, jsize start, jsize len, 956b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jchar* buf) 957b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetCharArrayRegion(this, array, start, len, buf); } 958b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetShortArrayRegion(jshortArray array, jsize start, jsize len, 959b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jshort* buf) 960b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetShortArrayRegion(this, array, start, len, buf); } 961b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetIntArrayRegion(jintArray array, jsize start, jsize len, 962b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jint* buf) 963b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetIntArrayRegion(this, array, start, len, buf); } 964b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetLongArrayRegion(jlongArray array, jsize start, jsize len, 965b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jlong* buf) 966b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetLongArrayRegion(this, array, start, len, buf); } 967b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 968b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jfloat* buf) 969b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetFloatArrayRegion(this, array, start, len, buf); } 970b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 971b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jdouble* buf) 972b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->SetDoubleArrayRegion(this, array, start, len, buf); } 973b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 974b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint RegisterNatives(jclass clazz, const JNINativeMethod* methods, 975b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint nMethods) 976b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->RegisterNatives(this, clazz, methods, nMethods); } 977b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 978b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint UnregisterNatives(jclass clazz) 979b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->UnregisterNatives(this, clazz); } 980b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 981b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint MonitorEnter(jobject obj) 982b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->MonitorEnter(this, obj); } 983b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 984b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint MonitorExit(jobject obj) 985b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->MonitorExit(this, obj); } 986b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 987b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint GetJavaVM(JavaVM** vm) 988b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetJavaVM(this, vm); } 989b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 990b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetStringRegion(jstring str, jsize start, jsize len, jchar* buf) 991b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->GetStringRegion(this, str, start, len, buf); } 992b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 993b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void GetStringUTFRegion(jstring str, jsize start, jsize len, char* buf) 994b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStringUTFRegion(this, str, start, len, buf); } 995b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 996b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* GetPrimitiveArrayCritical(jarray array, jboolean* isCopy) 997b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetPrimitiveArrayCritical(this, array, isCopy); } 998b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 999b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleasePrimitiveArrayCritical(jarray array, void* carray, jint mode) 1000b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleasePrimitiveArrayCritical(this, array, carray, mode); } 1001b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1002b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const jchar* GetStringCritical(jstring string, jboolean* isCopy) 1003b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetStringCritical(this, string, isCopy); } 1004b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1005b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void ReleaseStringCritical(jstring string, const jchar* carray) 1006b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->ReleaseStringCritical(this, string, carray); } 1007b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1008b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jweak NewWeakGlobalRef(jobject obj) 1009b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewWeakGlobalRef(this, obj); } 1010b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1011b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void DeleteWeakGlobalRef(jweak obj) 1012b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { functions->DeleteWeakGlobalRef(this, obj); } 1013b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1014b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean ExceptionCheck() 1015b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->ExceptionCheck(this); } 1016b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1017b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject NewDirectByteBuffer(void* address, jlong capacity) 1018b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->NewDirectByteBuffer(this, address, capacity); } 1019b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1020b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* GetDirectBufferAddress(jobject buf) 1021b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetDirectBufferAddress(this, buf); } 1022b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1023b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jlong GetDirectBufferCapacity(jobject buf) 1024b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetDirectBufferCapacity(this, buf); } 1025b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1026b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare /* added in JNI 1.6 */ 1027b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobjectRefType GetObjectRefType(jobject obj) 1028b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetObjectRefType(this, obj); } 1029b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif /*__cplusplus*/ 1030b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare}; 1031b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1032b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1033b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 1034b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * JNI invocation interface. 1035b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 1036b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct JNIInvokeInterface { 1037b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* reserved0; 1038b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* reserved1; 1039b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* reserved2; 1040b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1041b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*DestroyJavaVM)(JavaVM*); 1042b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*AttachCurrentThread)(JavaVM*, JNIEnv**, void*); 1043b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*DetachCurrentThread)(JavaVM*); 1044b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*GetEnv)(JavaVM*, void**, jint); 1045b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint (*AttachCurrentThreadAsDaemon)(JavaVM*, JNIEnv**, void*); 1046b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare}; 1047b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1048b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 1049b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * C++ version. 1050b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 1051b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct _JavaVM { 1052b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const struct JNIInvokeInterface* functions; 1053b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1054b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#if defined(__cplusplus) 1055b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint DestroyJavaVM() 1056b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->DestroyJavaVM(this); } 1057b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint AttachCurrentThread(JNIEnv** p_env, void* thr_args) 1058b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->AttachCurrentThread(this, p_env, thr_args); } 1059b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint DetachCurrentThread() 1060b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->DetachCurrentThread(this); } 1061b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint GetEnv(void** env, jint version) 1062b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->GetEnv(this, env, version); } 1063b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint AttachCurrentThreadAsDaemon(JNIEnv** p_env, void* thr_args) 1064b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare { return functions->AttachCurrentThreadAsDaemon(this, p_env, thr_args); } 1065b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif /*__cplusplus*/ 1066b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare}; 1067b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1068b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct JavaVMAttachArgs { 1069b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint version; /* must be >= JNI_VERSION_1_2 */ 1070b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const char* name; /* NULL or name of thread as modified UTF-8 str */ 1071b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jobject group; /* global ref of a ThreadGroup object, or NULL */ 1072b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare}; 1073b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef struct JavaVMAttachArgs JavaVMAttachArgs; 1074b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1075b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 1076b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * JNI 1.2+ initialization. (As of 1.6, the pre-1.2 structures are no 1077b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * longer supported.) 1078b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 1079b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef struct JavaVMOption { 1080b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const char* optionString; 1081b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void* extraInfo; 1082b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare} JavaVMOption; 1083b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1084b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef struct JavaVMInitArgs { 1085b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint version; /* use JNI_VERSION_1_2 or later */ 1086b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1087b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jint nOptions; 1088b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare JavaVMOption* options; 1089b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare jboolean ignoreUnrecognized; 1090b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare} JavaVMInitArgs; 1091b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1092b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#ifdef __cplusplus 1093b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareextern "C" { 1094b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif 1095b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 1096b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * VM initialization functions. 1097b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * 1098b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * Note these are the only symbols exported for JNI by the VM. 1099b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 1100b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearejint JNI_GetDefaultJavaVMInitArgs(void*); 1101b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearejint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*); 1102b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearejint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*); 1103b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1104b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 1105b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * Prototypes for functions exported by loadable shared libs. These are 1106b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * called by JNI, not provided by JNI. 1107b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 1108b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearejint JNI_OnLoad(JavaVM* vm, void* reserved); 1109b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearevoid JNI_OnUnload(JavaVM* vm, void* reserved); 1110b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1111b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#ifdef __cplusplus 1112b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare} 1113b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif 1114b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1115b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1116b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* 1117b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare * Manifest constants. 1118b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare */ 1119b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_FALSE 0 1120b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_TRUE 1 1121b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1122b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_VERSION_1_1 0x00010001 1123b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_VERSION_1_2 0x00010002 1124b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_VERSION_1_4 0x00010004 1125b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_VERSION_1_6 0x00010006 1126b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1127b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_OK (0) /* no error */ 1128b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_ERR (-1) /* generic error */ 1129b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_EDETACHED (-2) /* thread detached from the VM */ 1130b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_EVERSION (-3) /* JNI version error */ 1131b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1132b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_COMMIT 1 /* copy content, do not free buffer */ 1133b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNI_ABORT 2 /* free buffer w/o copying back */ 1134b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1135b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/* need these for Windows-aware headers */ 1136b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNIIMPORT 1137b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNIEXPORT 1138b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define JNICALL 1139b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare 1140b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif /*_JNI_H*/ 1141