116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Copyright (C) 2006 The Android Open Source Project 316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * 416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Licensed under the Apache License, Version 2.0 (the "License"); 516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * you may not use this file except in compliance with the License. 616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * You may obtain a copy of the License at 716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * 816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * http://www.apache.org/licenses/LICENSE-2.0 916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * 1016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Unless required by applicable law or agreed to in writing, software 1116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * distributed under the License is distributed on an "AS IS" BASIS, 1216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * See the License for the specific language governing permissions and 1416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * limitations under the License. 1516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 1616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 1716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 1816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * JNI specification, as defined by Sun: 1916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html 2016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * 2116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Everything here is expected to be VM-neutral. 2216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 2316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 2416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#ifndef JNI_H_ 2516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_H_ 2616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 2716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#include <stdarg.h> 2816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 2916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 3016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Primitive types that match up with Java equivalents. 3116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 3216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#ifdef HAVE_INTTYPES_H 3316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang# include <inttypes.h> /* C99 */ 3416559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef uint8_t jboolean; /* unsigned 8 bits */ 3516559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef int8_t jbyte; /* signed 8 bits */ 3616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef uint16_t jchar; /* unsigned 16 bits */ 3716559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef int16_t jshort; /* signed 16 bits */ 3816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef int32_t jint; /* signed 32 bits */ 3916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef int64_t jlong; /* signed 64 bits */ 4016559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef float jfloat; /* 32-bit IEEE 754 */ 4116559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef double jdouble; /* 64-bit IEEE 754 */ 4216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#else 4316559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef unsigned char jboolean; /* unsigned 8 bits */ 4416559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef signed char jbyte; /* signed 8 bits */ 4516559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef unsigned short jchar; /* unsigned 16 bits */ 4616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef short jshort; /* signed 16 bits */ 4716559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef int jint; /* signed 32 bits */ 4816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef long long jlong; /* signed 64 bits */ 4916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef float jfloat; /* 32-bit IEEE 754 */ 5016559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef double jdouble; /* 64-bit IEEE 754 */ 5116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#endif 5216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 5316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* "cardinal indices and sizes" */ 5416559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jint jsize; 5516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 5616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#ifdef __cplusplus 5716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 5816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Reference types, in C++ 5916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 6016559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jobject {}; 6116559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jclass : public _jobject {}; 6216559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jstring : public _jobject {}; 6316559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jarray : public _jobject {}; 6416559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jobjectArray : public _jarray {}; 6516559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jbooleanArray : public _jarray {}; 6616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jbyteArray : public _jarray {}; 6716559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jcharArray : public _jarray {}; 6816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jshortArray : public _jarray {}; 6916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jintArray : public _jarray {}; 7016559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jlongArray : public _jarray {}; 7116559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jfloatArray : public _jarray {}; 7216559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jdoubleArray : public _jarray {}; 7316559ae86908b88ba7644fac078f9168cbbcae10Ying Wangclass _jthrowable : public _jobject {}; 7416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 7516559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jobject* jobject; 7616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jclass* jclass; 7716559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jstring* jstring; 7816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jarray* jarray; 7916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jobjectArray* jobjectArray; 8016559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jbooleanArray* jbooleanArray; 8116559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jbyteArray* jbyteArray; 8216559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jcharArray* jcharArray; 8316559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jshortArray* jshortArray; 8416559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jintArray* jintArray; 8516559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jlongArray* jlongArray; 8616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jfloatArray* jfloatArray; 8716559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jdoubleArray* jdoubleArray; 8816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jthrowable* jthrowable; 8916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _jobject* jweak; 9016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 9116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 9216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#else /* not __cplusplus */ 9316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 9416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 9516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Reference types, in C. 9616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 9716559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef void* jobject; 9816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jobject jclass; 9916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jobject jstring; 10016559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jobject jarray; 10116559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jarray jobjectArray; 10216559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jarray jbooleanArray; 10316559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jarray jbyteArray; 10416559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jarray jcharArray; 10516559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jarray jshortArray; 10616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jarray jintArray; 10716559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jarray jlongArray; 10816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jarray jfloatArray; 10916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jarray jdoubleArray; 11016559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jobject jthrowable; 11116559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef jobject jweak; 11216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 11316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#endif /* not __cplusplus */ 11416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 11516559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct _jfieldID; /* opaque structure */ 11616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef struct _jfieldID* jfieldID; /* field IDs */ 11716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 11816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct _jmethodID; /* opaque structure */ 11916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef struct _jmethodID* jmethodID; /* method IDs */ 12016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 12116559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct JNIInvokeInterface; 12216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 12316559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef union jvalue { 12416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean z; 12516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte b; 12616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar c; 12716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort s; 12816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint i; 12916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong j; 13016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat f; 13116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble d; 13216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject l; 13316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang} jvalue; 13416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 13516559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef enum jobjectRefType { 13616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang JNIInvalidRefType = 0, 13716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang JNILocalRefType = 1, 13816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang JNIGlobalRefType = 2, 13916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang JNIWeakGlobalRefType = 3 14016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang} jobjectRefType; 14116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 14216559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef struct { 14316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const char* name; 14416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const char* signature; 14516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* fnPtr; 14616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang} JNINativeMethod; 14716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 14816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct _JNIEnv; 14916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct _JavaVM; 15016559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef const struct JNINativeInterface* C_JNIEnv; 15116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 15216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#if defined(__cplusplus) 15316559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _JNIEnv JNIEnv; 15416559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef _JavaVM JavaVM; 15516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#else 15616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef const struct JNINativeInterface* JNIEnv; 15716559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef const struct JNIInvokeInterface* JavaVM; 15816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#endif 15916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 16016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 16116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Table of interface function pointers. 16216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 16316559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct JNINativeInterface { 16416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* reserved0; 16516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* reserved1; 16616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* reserved2; 16716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* reserved3; 16816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 16916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*GetVersion)(JNIEnv *); 17016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 17116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jclass (*DefineClass)(JNIEnv*, const char*, jobject, const jbyte*, 17216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize); 17316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jclass (*FindClass)(JNIEnv*, const char*); 17416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 17516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID (*FromReflectedMethod)(JNIEnv*, jobject); 17616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfieldID (*FromReflectedField)(JNIEnv*, jobject); 17716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang /* spec doesn't show jboolean parameter */ 17816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*ToReflectedMethod)(JNIEnv*, jclass, jmethodID, jboolean); 17916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 18016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jclass (*GetSuperclass)(JNIEnv*, jclass); 18116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*IsAssignableFrom)(JNIEnv*, jclass, jclass); 18216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 18316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang /* spec doesn't show jboolean parameter */ 18416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*ToReflectedField)(JNIEnv*, jclass, jfieldID, jboolean); 18516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 18616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*Throw)(JNIEnv*, jthrowable); 18716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*ThrowNew)(JNIEnv *, jclass, const char *); 18816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jthrowable (*ExceptionOccurred)(JNIEnv*); 18916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ExceptionDescribe)(JNIEnv*); 19016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ExceptionClear)(JNIEnv*); 19116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*FatalError)(JNIEnv*, const char*); 19216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 19316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*PushLocalFrame)(JNIEnv*, jint); 19416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*PopLocalFrame)(JNIEnv*, jobject); 19516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 19616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*NewGlobalRef)(JNIEnv*, jobject); 19716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*DeleteGlobalRef)(JNIEnv*, jobject); 19816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*DeleteLocalRef)(JNIEnv*, jobject); 19916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*IsSameObject)(JNIEnv*, jobject, jobject); 20016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 20116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*NewLocalRef)(JNIEnv*, jobject); 20216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*EnsureLocalCapacity)(JNIEnv*, jint); 20316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 20416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*AllocObject)(JNIEnv*, jclass); 20516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*NewObject)(JNIEnv*, jclass, jmethodID, ...); 20616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*NewObjectV)(JNIEnv*, jclass, jmethodID, va_list); 20716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*NewObjectA)(JNIEnv*, jclass, jmethodID, jvalue*); 20816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 20916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jclass (*GetObjectClass)(JNIEnv*, jobject); 21016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*IsInstanceOf)(JNIEnv*, jobject, jclass); 21116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*); 21216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 21316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*CallObjectMethod)(JNIEnv*, jobject, jmethodID, ...); 21416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list); 21516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*CallObjectMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 21616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*CallBooleanMethod)(JNIEnv*, jobject, jmethodID, ...); 21716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*CallBooleanMethodV)(JNIEnv*, jobject, jmethodID, va_list); 21816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*CallBooleanMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 21916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*CallByteMethod)(JNIEnv*, jobject, jmethodID, ...); 22016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*CallByteMethodV)(JNIEnv*, jobject, jmethodID, va_list); 22116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*CallByteMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 22216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*CallCharMethod)(JNIEnv*, jobject, jmethodID, ...); 22316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*CallCharMethodV)(JNIEnv*, jobject, jmethodID, va_list); 22416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*CallCharMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 22516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*CallShortMethod)(JNIEnv*, jobject, jmethodID, ...); 22616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*CallShortMethodV)(JNIEnv*, jobject, jmethodID, va_list); 22716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*CallShortMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 22816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*CallIntMethod)(JNIEnv*, jobject, jmethodID, ...); 22916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*CallIntMethodV)(JNIEnv*, jobject, jmethodID, va_list); 23016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*CallIntMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 23116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*CallLongMethod)(JNIEnv*, jobject, jmethodID, ...); 23216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*CallLongMethodV)(JNIEnv*, jobject, jmethodID, va_list); 23316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*CallLongMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 23416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*CallFloatMethod)(JNIEnv*, jobject, jmethodID, ...); 23516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*CallFloatMethodV)(JNIEnv*, jobject, jmethodID, va_list); 23616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*CallFloatMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 23716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*CallDoubleMethod)(JNIEnv*, jobject, jmethodID, ...); 23816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*CallDoubleMethodV)(JNIEnv*, jobject, jmethodID, va_list); 23916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*CallDoubleMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 24016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...); 24116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*CallVoidMethodV)(JNIEnv*, jobject, jmethodID, va_list); 24216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*CallVoidMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); 24316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 24416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*CallNonvirtualObjectMethod)(JNIEnv*, jobject, jclass, 24516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 24616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*CallNonvirtualObjectMethodV)(JNIEnv*, jobject, jclass, 24716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 24816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*CallNonvirtualObjectMethodA)(JNIEnv*, jobject, jclass, 24916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 25016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*CallNonvirtualBooleanMethod)(JNIEnv*, jobject, jclass, 25116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 25216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*CallNonvirtualBooleanMethodV)(JNIEnv*, jobject, jclass, 25316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 25416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*CallNonvirtualBooleanMethodA)(JNIEnv*, jobject, jclass, 25516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 25616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*CallNonvirtualByteMethod)(JNIEnv*, jobject, jclass, 25716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 25816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*CallNonvirtualByteMethodV)(JNIEnv*, jobject, jclass, 25916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 26016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*CallNonvirtualByteMethodA)(JNIEnv*, jobject, jclass, 26116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 26216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*CallNonvirtualCharMethod)(JNIEnv*, jobject, jclass, 26316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 26416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*CallNonvirtualCharMethodV)(JNIEnv*, jobject, jclass, 26516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 26616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*CallNonvirtualCharMethodA)(JNIEnv*, jobject, jclass, 26716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 26816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*CallNonvirtualShortMethod)(JNIEnv*, jobject, jclass, 26916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 27016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*CallNonvirtualShortMethodV)(JNIEnv*, jobject, jclass, 27116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 27216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*CallNonvirtualShortMethodA)(JNIEnv*, jobject, jclass, 27316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 27416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*CallNonvirtualIntMethod)(JNIEnv*, jobject, jclass, 27516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 27616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*CallNonvirtualIntMethodV)(JNIEnv*, jobject, jclass, 27716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 27816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*CallNonvirtualIntMethodA)(JNIEnv*, jobject, jclass, 27916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 28016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*CallNonvirtualLongMethod)(JNIEnv*, jobject, jclass, 28116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 28216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*CallNonvirtualLongMethodV)(JNIEnv*, jobject, jclass, 28316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 28416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*CallNonvirtualLongMethodA)(JNIEnv*, jobject, jclass, 28516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 28616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*CallNonvirtualFloatMethod)(JNIEnv*, jobject, jclass, 28716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 28816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*CallNonvirtualFloatMethodV)(JNIEnv*, jobject, jclass, 28916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 29016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*CallNonvirtualFloatMethodA)(JNIEnv*, jobject, jclass, 29116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 29216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*CallNonvirtualDoubleMethod)(JNIEnv*, jobject, jclass, 29316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 29416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*CallNonvirtualDoubleMethodV)(JNIEnv*, jobject, jclass, 29516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 29616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*CallNonvirtualDoubleMethodA)(JNIEnv*, jobject, jclass, 29716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 29816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*CallNonvirtualVoidMethod)(JNIEnv*, jobject, jclass, 29916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, ...); 30016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*CallNonvirtualVoidMethodV)(JNIEnv*, jobject, jclass, 30116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, va_list); 30216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*CallNonvirtualVoidMethodA)(JNIEnv*, jobject, jclass, 30316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID, jvalue*); 30416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 30516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfieldID (*GetFieldID)(JNIEnv*, jclass, const char*, const char*); 30616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 30716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*GetObjectField)(JNIEnv*, jobject, jfieldID); 30816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*GetBooleanField)(JNIEnv*, jobject, jfieldID); 30916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*GetByteField)(JNIEnv*, jobject, jfieldID); 31016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*GetCharField)(JNIEnv*, jobject, jfieldID); 31116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*GetShortField)(JNIEnv*, jobject, jfieldID); 31216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*GetIntField)(JNIEnv*, jobject, jfieldID); 31316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*GetLongField)(JNIEnv*, jobject, jfieldID); 31416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*GetFloatField)(JNIEnv*, jobject, jfieldID); 31516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*GetDoubleField)(JNIEnv*, jobject, jfieldID); 31616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 31716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetObjectField)(JNIEnv*, jobject, jfieldID, jobject); 31816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetBooleanField)(JNIEnv*, jobject, jfieldID, jboolean); 31916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetByteField)(JNIEnv*, jobject, jfieldID, jbyte); 32016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetCharField)(JNIEnv*, jobject, jfieldID, jchar); 32116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetShortField)(JNIEnv*, jobject, jfieldID, jshort); 32216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetIntField)(JNIEnv*, jobject, jfieldID, jint); 32316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetLongField)(JNIEnv*, jobject, jfieldID, jlong); 32416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetFloatField)(JNIEnv*, jobject, jfieldID, jfloat); 32516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetDoubleField)(JNIEnv*, jobject, jfieldID, jdouble); 32616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 32716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID (*GetStaticMethodID)(JNIEnv*, jclass, const char*, const char*); 32816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 32916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*CallStaticObjectMethod)(JNIEnv*, jclass, jmethodID, ...); 33016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*CallStaticObjectMethodV)(JNIEnv*, jclass, jmethodID, va_list); 33116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*CallStaticObjectMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 33216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*CallStaticBooleanMethod)(JNIEnv*, jclass, jmethodID, ...); 33316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*CallStaticBooleanMethodV)(JNIEnv*, jclass, jmethodID, 33416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list); 33516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*CallStaticBooleanMethodA)(JNIEnv*, jclass, jmethodID, 33616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jvalue*); 33716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*CallStaticByteMethod)(JNIEnv*, jclass, jmethodID, ...); 33816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*CallStaticByteMethodV)(JNIEnv*, jclass, jmethodID, va_list); 33916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*CallStaticByteMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 34016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*CallStaticCharMethod)(JNIEnv*, jclass, jmethodID, ...); 34116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*CallStaticCharMethodV)(JNIEnv*, jclass, jmethodID, va_list); 34216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*CallStaticCharMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 34316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*CallStaticShortMethod)(JNIEnv*, jclass, jmethodID, ...); 34416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*CallStaticShortMethodV)(JNIEnv*, jclass, jmethodID, va_list); 34516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*CallStaticShortMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 34616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*CallStaticIntMethod)(JNIEnv*, jclass, jmethodID, ...); 34716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*CallStaticIntMethodV)(JNIEnv*, jclass, jmethodID, va_list); 34816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*CallStaticIntMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 34916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*CallStaticLongMethod)(JNIEnv*, jclass, jmethodID, ...); 35016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*CallStaticLongMethodV)(JNIEnv*, jclass, jmethodID, va_list); 35116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*CallStaticLongMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 35216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*CallStaticFloatMethod)(JNIEnv*, jclass, jmethodID, ...); 35316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*CallStaticFloatMethodV)(JNIEnv*, jclass, jmethodID, va_list); 35416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*CallStaticFloatMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 35516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*CallStaticDoubleMethod)(JNIEnv*, jclass, jmethodID, ...); 35616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*CallStaticDoubleMethodV)(JNIEnv*, jclass, jmethodID, va_list); 35716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*CallStaticDoubleMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 35816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...); 35916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*CallStaticVoidMethodV)(JNIEnv*, jclass, jmethodID, va_list); 36016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*CallStaticVoidMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); 36116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 36216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfieldID (*GetStaticFieldID)(JNIEnv*, jclass, const char*, 36316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const char*); 36416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 36516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*GetStaticObjectField)(JNIEnv*, jclass, jfieldID); 36616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*GetStaticBooleanField)(JNIEnv*, jclass, jfieldID); 36716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte (*GetStaticByteField)(JNIEnv*, jclass, jfieldID); 36816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar (*GetStaticCharField)(JNIEnv*, jclass, jfieldID); 36916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort (*GetStaticShortField)(JNIEnv*, jclass, jfieldID); 37016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*GetStaticIntField)(JNIEnv*, jclass, jfieldID); 37116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*GetStaticLongField)(JNIEnv*, jclass, jfieldID); 37216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat (*GetStaticFloatField)(JNIEnv*, jclass, jfieldID); 37316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble (*GetStaticDoubleField)(JNIEnv*, jclass, jfieldID); 37416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 37516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetStaticObjectField)(JNIEnv*, jclass, jfieldID, jobject); 37616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetStaticBooleanField)(JNIEnv*, jclass, jfieldID, jboolean); 37716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetStaticByteField)(JNIEnv*, jclass, jfieldID, jbyte); 37816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetStaticCharField)(JNIEnv*, jclass, jfieldID, jchar); 37916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetStaticShortField)(JNIEnv*, jclass, jfieldID, jshort); 38016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetStaticIntField)(JNIEnv*, jclass, jfieldID, jint); 38116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetStaticLongField)(JNIEnv*, jclass, jfieldID, jlong); 38216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetStaticFloatField)(JNIEnv*, jclass, jfieldID, jfloat); 38316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetStaticDoubleField)(JNIEnv*, jclass, jfieldID, jdouble); 38416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 38516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jstring (*NewString)(JNIEnv*, const jchar*, jsize); 38616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize (*GetStringLength)(JNIEnv*, jstring); 38716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jchar* (*GetStringChars)(JNIEnv*, jstring, jboolean*); 38816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*); 38916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jstring (*NewStringUTF)(JNIEnv*, const char*); 39016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize (*GetStringUTFLength)(JNIEnv*, jstring); 39116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang /* JNI spec says this returns const jbyte*, but that's inconsistent */ 39216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const char* (*GetStringUTFChars)(JNIEnv*, jstring, jboolean*); 39316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseStringUTFChars)(JNIEnv*, jstring, const char*); 39416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize (*GetArrayLength)(JNIEnv*, jarray); 39516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobjectArray (*NewObjectArray)(JNIEnv*, jsize, jclass, jobject); 39616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*GetObjectArrayElement)(JNIEnv*, jobjectArray, jsize); 39716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetObjectArrayElement)(JNIEnv*, jobjectArray, jsize, jobject); 39816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 39916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbooleanArray (*NewBooleanArray)(JNIEnv*, jsize); 40016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyteArray (*NewByteArray)(JNIEnv*, jsize); 40116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jcharArray (*NewCharArray)(JNIEnv*, jsize); 40216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshortArray (*NewShortArray)(JNIEnv*, jsize); 40316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jintArray (*NewIntArray)(JNIEnv*, jsize); 40416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlongArray (*NewLongArray)(JNIEnv*, jsize); 40516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloatArray (*NewFloatArray)(JNIEnv*, jsize); 40616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdoubleArray (*NewDoubleArray)(JNIEnv*, jsize); 40716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 40816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean* (*GetBooleanArrayElements)(JNIEnv*, jbooleanArray, jboolean*); 40916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte* (*GetByteArrayElements)(JNIEnv*, jbyteArray, jboolean*); 41016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar* (*GetCharArrayElements)(JNIEnv*, jcharArray, jboolean*); 41116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort* (*GetShortArrayElements)(JNIEnv*, jshortArray, jboolean*); 41216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint* (*GetIntArrayElements)(JNIEnv*, jintArray, jboolean*); 41316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong* (*GetLongArrayElements)(JNIEnv*, jlongArray, jboolean*); 41416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat* (*GetFloatArrayElements)(JNIEnv*, jfloatArray, jboolean*); 41516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble* (*GetDoubleArrayElements)(JNIEnv*, jdoubleArray, jboolean*); 41616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 41716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseBooleanArrayElements)(JNIEnv*, jbooleanArray, 41816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean*, jint); 41916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseByteArrayElements)(JNIEnv*, jbyteArray, 42016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte*, jint); 42116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseCharArrayElements)(JNIEnv*, jcharArray, 42216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar*, jint); 42316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseShortArrayElements)(JNIEnv*, jshortArray, 42416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort*, jint); 42516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseIntArrayElements)(JNIEnv*, jintArray, 42616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint*, jint); 42716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseLongArrayElements)(JNIEnv*, jlongArray, 42816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong*, jint); 42916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseFloatArrayElements)(JNIEnv*, jfloatArray, 43016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat*, jint); 43116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseDoubleArrayElements)(JNIEnv*, jdoubleArray, 43216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble*, jint); 43316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 43416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetBooleanArrayRegion)(JNIEnv*, jbooleanArray, 43516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, jboolean*); 43616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetByteArrayRegion)(JNIEnv*, jbyteArray, 43716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, jbyte*); 43816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetCharArrayRegion)(JNIEnv*, jcharArray, 43916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, jchar*); 44016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetShortArrayRegion)(JNIEnv*, jshortArray, 44116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, jshort*); 44216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetIntArrayRegion)(JNIEnv*, jintArray, 44316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, jint*); 44416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetLongArrayRegion)(JNIEnv*, jlongArray, 44516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, jlong*); 44616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetFloatArrayRegion)(JNIEnv*, jfloatArray, 44716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, jfloat*); 44816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetDoubleArrayRegion)(JNIEnv*, jdoubleArray, 44916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, jdouble*); 45016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 45116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang /* spec shows these without const; some jni.h do, some don't */ 45216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetBooleanArrayRegion)(JNIEnv*, jbooleanArray, 45316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, const jboolean*); 45416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetByteArrayRegion)(JNIEnv*, jbyteArray, 45516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, const jbyte*); 45616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetCharArrayRegion)(JNIEnv*, jcharArray, 45716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, const jchar*); 45816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetShortArrayRegion)(JNIEnv*, jshortArray, 45916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, const jshort*); 46016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetIntArrayRegion)(JNIEnv*, jintArray, 46116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, const jint*); 46216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetLongArrayRegion)(JNIEnv*, jlongArray, 46316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, const jlong*); 46416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetFloatArrayRegion)(JNIEnv*, jfloatArray, 46516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, const jfloat*); 46616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*SetDoubleArrayRegion)(JNIEnv*, jdoubleArray, 46716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize, jsize, const jdouble*); 46816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 46916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*RegisterNatives)(JNIEnv*, jclass, const JNINativeMethod*, 47016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint); 47116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*UnregisterNatives)(JNIEnv*, jclass); 47216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*MonitorEnter)(JNIEnv*, jobject); 47316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*MonitorExit)(JNIEnv*, jobject); 47416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*GetJavaVM)(JNIEnv*, JavaVM**); 47516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 47616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetStringRegion)(JNIEnv*, jstring, jsize, jsize, jchar*); 47716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*GetStringUTFRegion)(JNIEnv*, jstring, jsize, jsize, char*); 47816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 47916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* (*GetPrimitiveArrayCritical)(JNIEnv*, jarray, jboolean*); 48016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleasePrimitiveArrayCritical)(JNIEnv*, jarray, void*, jint); 48116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 48216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jchar* (*GetStringCritical)(JNIEnv*, jstring, jboolean*); 48316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*ReleaseStringCritical)(JNIEnv*, jstring, const jchar*); 48416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 48516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jweak (*NewWeakGlobalRef)(JNIEnv*, jobject); 48616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void (*DeleteWeakGlobalRef)(JNIEnv*, jweak); 48716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 48816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean (*ExceptionCheck)(JNIEnv*); 48916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 49016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject (*NewDirectByteBuffer)(JNIEnv*, void*, jlong); 49116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* (*GetDirectBufferAddress)(JNIEnv*, jobject); 49216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong (*GetDirectBufferCapacity)(JNIEnv*, jobject); 49316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 49416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang /* added in JNI 1.6 */ 49516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobjectRefType (*GetObjectRefType)(JNIEnv*, jobject); 49616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang}; 49716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 49816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 49916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * C++ object wrapper. 50016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * 50116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * This is usually overlaid on a C struct whose first element is a 50216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * JNINativeInterface*. We rely somewhat on compiler behavior. 50316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 50416559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct _JNIEnv { 50516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang /* do not rename this; it does not seem to be entirely opaque */ 50616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const struct JNINativeInterface* functions; 50716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 50816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#if defined(__cplusplus) 50916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 51016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint GetVersion() 51116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetVersion(this); } 51216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 51316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jclass DefineClass(const char *name, jobject loader, const jbyte* buf, 51416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize bufLen) 51516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->DefineClass(this, name, loader, buf, bufLen); } 51616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 51716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jclass FindClass(const char* name) 51816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->FindClass(this, name); } 51916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 52016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID FromReflectedMethod(jobject method) 52116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->FromReflectedMethod(this, method); } 52216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 52316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfieldID FromReflectedField(jobject field) 52416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->FromReflectedField(this, field); } 52516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 52616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) 52716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->ToReflectedMethod(this, cls, methodID, isStatic); } 52816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 52916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jclass GetSuperclass(jclass clazz) 53016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetSuperclass(this, clazz); } 53116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 53216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean IsAssignableFrom(jclass clazz1, jclass clazz2) 53316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->IsAssignableFrom(this, clazz1, clazz2); } 53416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 53516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) 53616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->ToReflectedField(this, cls, fieldID, isStatic); } 53716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 53816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint Throw(jthrowable obj) 53916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->Throw(this, obj); } 54016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 54116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint ThrowNew(jclass clazz, const char* message) 54216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->ThrowNew(this, clazz, message); } 54316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 54416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jthrowable ExceptionOccurred() 54516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->ExceptionOccurred(this); } 54616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 54716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ExceptionDescribe() 54816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ExceptionDescribe(this); } 54916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 55016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ExceptionClear() 55116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ExceptionClear(this); } 55216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 55316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void FatalError(const char* msg) 55416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->FatalError(this, msg); } 55516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 55616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint PushLocalFrame(jint capacity) 55716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->PushLocalFrame(this, capacity); } 55816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 55916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject PopLocalFrame(jobject result) 56016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->PopLocalFrame(this, result); } 56116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 56216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject NewGlobalRef(jobject obj) 56316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewGlobalRef(this, obj); } 56416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 56516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void DeleteGlobalRef(jobject globalRef) 56616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->DeleteGlobalRef(this, globalRef); } 56716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 56816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void DeleteLocalRef(jobject localRef) 56916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->DeleteLocalRef(this, localRef); } 57016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 57116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean IsSameObject(jobject ref1, jobject ref2) 57216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->IsSameObject(this, ref1, ref2); } 57316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 57416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject NewLocalRef(jobject ref) 57516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewLocalRef(this, ref); } 57616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 57716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint EnsureLocalCapacity(jint capacity) 57816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->EnsureLocalCapacity(this, capacity); } 57916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 58016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject AllocObject(jclass clazz) 58116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->AllocObject(this, clazz); } 58216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 58316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject NewObject(jclass clazz, jmethodID methodID, ...) 58416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { 58516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list args; 58616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_start(args, methodID); 58716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject result = functions->NewObjectV(this, clazz, methodID, args); 58816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_end(args); 58916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang return result; 59016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang } 59116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 59216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject NewObjectV(jclass clazz, jmethodID methodID, va_list args) 59316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewObjectV(this, clazz, methodID, args); } 59416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 59516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue* args) 59616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewObjectA(this, clazz, methodID, args); } 59716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 59816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jclass GetObjectClass(jobject obj) 59916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetObjectClass(this, obj); } 60016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 60116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean IsInstanceOf(jobject obj, jclass clazz) 60216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->IsInstanceOf(this, obj, clazz); } 60316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 60416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID GetMethodID(jclass clazz, const char* name, const char* sig) 60516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetMethodID(this, clazz, name, sig); } 60616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 60716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_TYPE_METHOD(_jtype, _jname) \ 60816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype Call##_jname##Method(jobject obj, jmethodID methodID, ...) \ 60916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { \ 61016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype result; \ 61116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list args; \ 61216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_start(args, methodID); \ 61316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang result = functions->Call##_jname##MethodV(this, obj, methodID, \ 61416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang args); \ 61516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_end(args); \ 61616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang return result; \ 61716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang } 61816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_TYPE_METHODV(_jtype, _jname) \ 61916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype Call##_jname##MethodV(jobject obj, jmethodID methodID, \ 62016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list args) \ 62116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->Call##_jname##MethodV(this, obj, methodID, args); } 62216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_TYPE_METHODA(_jtype, _jname) \ 62316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype Call##_jname##MethodA(jobject obj, jmethodID methodID, \ 62416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jvalue* args) \ 62516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->Call##_jname##MethodA(this, obj, methodID, args); } 62616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 62716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_TYPE(_jtype, _jname) \ 62816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE_METHOD(_jtype, _jname) \ 62916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE_METHODV(_jtype, _jname) \ 63016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE_METHODA(_jtype, _jname) 63116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 63216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE(jobject, Object) 63316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE(jboolean, Boolean) 63416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE(jbyte, Byte) 63516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE(jchar, Char) 63616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE(jshort, Short) 63716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE(jint, Int) 63816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE(jlong, Long) 63916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE(jfloat, Float) 64016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_TYPE(jdouble, Double) 64116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 64216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void CallVoidMethod(jobject obj, jmethodID methodID, ...) 64316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { 64416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list args; 64516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_start(args, methodID); 64616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang functions->CallVoidMethodV(this, obj, methodID, args); 64716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_end(args); 64816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang } 64916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void CallVoidMethodV(jobject obj, jmethodID methodID, va_list args) 65016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->CallVoidMethodV(this, obj, methodID, args); } 65116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void CallVoidMethodA(jobject obj, jmethodID methodID, jvalue* args) 65216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->CallVoidMethodA(this, obj, methodID, args); } 65316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 65416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ 65516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype CallNonvirtual##_jname##Method(jobject obj, jclass clazz, \ 65616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID methodID, ...) \ 65716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { \ 65816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype result; \ 65916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list args; \ 66016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_start(args, methodID); \ 66116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang result = functions->CallNonvirtual##_jname##MethodV(this, obj, \ 66216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang clazz, methodID, args); \ 66316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_end(args); \ 66416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang return result; \ 66516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang } 66616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ 66716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype CallNonvirtual##_jname##MethodV(jobject obj, jclass clazz, \ 66816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID methodID, va_list args) \ 66916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->CallNonvirtual##_jname##MethodV(this, obj, clazz, \ 67016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang methodID, args); } 67116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) \ 67216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype CallNonvirtual##_jname##MethodA(jobject obj, jclass clazz, \ 67316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID methodID, jvalue* args) \ 67416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->CallNonvirtual##_jname##MethodA(this, obj, clazz, \ 67516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang methodID, args); } 67616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 67716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_NONVIRT_TYPE(_jtype, _jname) \ 67816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ 67916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ 68016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) 68116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 68216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE(jobject, Object) 68316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE(jboolean, Boolean) 68416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE(jbyte, Byte) 68516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE(jchar, Char) 68616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE(jshort, Short) 68716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE(jint, Int) 68816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE(jlong, Long) 68916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE(jfloat, Float) 69016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_NONVIRT_TYPE(jdouble, Double) 69116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 69216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void CallNonvirtualVoidMethod(jobject obj, jclass clazz, 69316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID methodID, ...) 69416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { 69516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list args; 69616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_start(args, methodID); 69716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); 69816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_end(args); 69916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang } 70016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, 70116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID methodID, va_list args) 70216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); } 70316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, 70416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID methodID, jvalue* args) 70516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->CallNonvirtualVoidMethodA(this, obj, clazz, methodID, args); } 70616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 70716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfieldID GetFieldID(jclass clazz, const char* name, const char* sig) 70816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetFieldID(this, clazz, name, sig); } 70916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 71016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject GetObjectField(jobject obj, jfieldID fieldID) 71116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetObjectField(this, obj, fieldID); } 71216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean GetBooleanField(jobject obj, jfieldID fieldID) 71316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetBooleanField(this, obj, fieldID); } 71416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte GetByteField(jobject obj, jfieldID fieldID) 71516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetByteField(this, obj, fieldID); } 71616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar GetCharField(jobject obj, jfieldID fieldID) 71716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetCharField(this, obj, fieldID); } 71816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort GetShortField(jobject obj, jfieldID fieldID) 71916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetShortField(this, obj, fieldID); } 72016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint GetIntField(jobject obj, jfieldID fieldID) 72116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetIntField(this, obj, fieldID); } 72216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong GetLongField(jobject obj, jfieldID fieldID) 72316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetLongField(this, obj, fieldID); } 72416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat GetFloatField(jobject obj, jfieldID fieldID) 72516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetFloatField(this, obj, fieldID); } 72616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble GetDoubleField(jobject obj, jfieldID fieldID) 72716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetDoubleField(this, obj, fieldID); } 72816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 72916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetObjectField(jobject obj, jfieldID fieldID, jobject value) 73016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetObjectField(this, obj, fieldID, value); } 73116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetBooleanField(jobject obj, jfieldID fieldID, jboolean value) 73216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetBooleanField(this, obj, fieldID, value); } 73316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetByteField(jobject obj, jfieldID fieldID, jbyte value) 73416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetByteField(this, obj, fieldID, value); } 73516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetCharField(jobject obj, jfieldID fieldID, jchar value) 73616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetCharField(this, obj, fieldID, value); } 73716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetShortField(jobject obj, jfieldID fieldID, jshort value) 73816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetShortField(this, obj, fieldID, value); } 73916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetIntField(jobject obj, jfieldID fieldID, jint value) 74016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetIntField(this, obj, fieldID, value); } 74116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetLongField(jobject obj, jfieldID fieldID, jlong value) 74216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetLongField(this, obj, fieldID, value); } 74316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetFloatField(jobject obj, jfieldID fieldID, jfloat value) 74416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetFloatField(this, obj, fieldID, value); } 74516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetDoubleField(jobject obj, jfieldID fieldID, jdouble value) 74616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetDoubleField(this, obj, fieldID, value); } 74716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 74816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jmethodID GetStaticMethodID(jclass clazz, const char* name, const char* sig) 74916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticMethodID(this, clazz, name, sig); } 75016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 75116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ 75216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype CallStatic##_jname##Method(jclass clazz, jmethodID methodID, \ 75316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang ...) \ 75416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { \ 75516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype result; \ 75616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list args; \ 75716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_start(args, methodID); \ 75816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang result = functions->CallStatic##_jname##MethodV(this, clazz, \ 75916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang methodID, args); \ 76016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_end(args); \ 76116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang return result; \ 76216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang } 76316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ 76416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype CallStatic##_jname##MethodV(jclass clazz, jmethodID methodID, \ 76516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list args) \ 76616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->CallStatic##_jname##MethodV(this, clazz, methodID, \ 76716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang args); } 76816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_STATIC_TYPE_METHODA(_jtype, _jname) \ 76916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang _jtype CallStatic##_jname##MethodA(jclass clazz, jmethodID methodID, \ 77016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jvalue* args) \ 77116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->CallStatic##_jname##MethodA(this, clazz, methodID, \ 77216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang args); } 77316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 77416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define CALL_STATIC_TYPE(_jtype, _jname) \ 77516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ 77616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ 77716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE_METHODA(_jtype, _jname) 77816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 77916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE(jobject, Object) 78016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE(jboolean, Boolean) 78116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE(jbyte, Byte) 78216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE(jchar, Char) 78316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE(jshort, Short) 78416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE(jint, Int) 78516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE(jlong, Long) 78616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE(jfloat, Float) 78716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang CALL_STATIC_TYPE(jdouble, Double) 78816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 78916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void CallStaticVoidMethod(jclass clazz, jmethodID methodID, ...) 79016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { 79116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_list args; 79216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_start(args, methodID); 79316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang functions->CallStaticVoidMethodV(this, clazz, methodID, args); 79416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang va_end(args); 79516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang } 79616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void CallStaticVoidMethodV(jclass clazz, jmethodID methodID, va_list args) 79716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->CallStaticVoidMethodV(this, clazz, methodID, args); } 79816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void CallStaticVoidMethodA(jclass clazz, jmethodID methodID, jvalue* args) 79916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->CallStaticVoidMethodA(this, clazz, methodID, args); } 80016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 80116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfieldID GetStaticFieldID(jclass clazz, const char* name, const char* sig) 80216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticFieldID(this, clazz, name, sig); } 80316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 80416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) 80516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticObjectField(this, clazz, fieldID); } 80616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) 80716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticBooleanField(this, clazz, fieldID); } 80816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) 80916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticByteField(this, clazz, fieldID); } 81016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar GetStaticCharField(jclass clazz, jfieldID fieldID) 81116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticCharField(this, clazz, fieldID); } 81216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort GetStaticShortField(jclass clazz, jfieldID fieldID) 81316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticShortField(this, clazz, fieldID); } 81416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint GetStaticIntField(jclass clazz, jfieldID fieldID) 81516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticIntField(this, clazz, fieldID); } 81616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong GetStaticLongField(jclass clazz, jfieldID fieldID) 81716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticLongField(this, clazz, fieldID); } 81816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) 81916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticFloatField(this, clazz, fieldID); } 82016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) 82116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStaticDoubleField(this, clazz, fieldID); } 82216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 82316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) 82416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetStaticObjectField(this, clazz, fieldID, value); } 82516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) 82616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetStaticBooleanField(this, clazz, fieldID, value); } 82716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) 82816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetStaticByteField(this, clazz, fieldID, value); } 82916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) 83016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetStaticCharField(this, clazz, fieldID, value); } 83116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) 83216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetStaticShortField(this, clazz, fieldID, value); } 83316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) 83416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetStaticIntField(this, clazz, fieldID, value); } 83516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) 83616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetStaticLongField(this, clazz, fieldID, value); } 83716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) 83816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetStaticFloatField(this, clazz, fieldID, value); } 83916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) 84016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetStaticDoubleField(this, clazz, fieldID, value); } 84116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 84216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jstring NewString(const jchar* unicodeChars, jsize len) 84316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewString(this, unicodeChars, len); } 84416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 84516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize GetStringLength(jstring string) 84616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStringLength(this, string); } 84716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 84816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jchar* GetStringChars(jstring string, jboolean* isCopy) 84916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStringChars(this, string, isCopy); } 85016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 85116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseStringChars(jstring string, const jchar* chars) 85216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseStringChars(this, string, chars); } 85316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 85416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jstring NewStringUTF(const char* bytes) 85516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewStringUTF(this, bytes); } 85616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 85716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize GetStringUTFLength(jstring string) 85816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStringUTFLength(this, string); } 85916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 86016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const char* GetStringUTFChars(jstring string, jboolean* isCopy) 86116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStringUTFChars(this, string, isCopy); } 86216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 86316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseStringUTFChars(jstring string, const char* utf) 86416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseStringUTFChars(this, string, utf); } 86516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 86616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jsize GetArrayLength(jarray array) 86716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetArrayLength(this, array); } 86816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 86916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobjectArray NewObjectArray(jsize length, jclass elementClass, 87016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject initialElement) 87116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewObjectArray(this, length, elementClass, 87216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang initialElement); } 87316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 87416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject GetObjectArrayElement(jobjectArray array, jsize index) 87516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetObjectArrayElement(this, array, index); } 87616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 87716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetObjectArrayElement(jobjectArray array, jsize index, jobject value) 87816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetObjectArrayElement(this, array, index, value); } 87916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 88016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbooleanArray NewBooleanArray(jsize length) 88116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewBooleanArray(this, length); } 88216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyteArray NewByteArray(jsize length) 88316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewByteArray(this, length); } 88416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jcharArray NewCharArray(jsize length) 88516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewCharArray(this, length); } 88616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshortArray NewShortArray(jsize length) 88716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewShortArray(this, length); } 88816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jintArray NewIntArray(jsize length) 88916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewIntArray(this, length); } 89016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlongArray NewLongArray(jsize length) 89116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewLongArray(this, length); } 89216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloatArray NewFloatArray(jsize length) 89316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewFloatArray(this, length); } 89416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdoubleArray NewDoubleArray(jsize length) 89516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewDoubleArray(this, length); } 89616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 89716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean* GetBooleanArrayElements(jbooleanArray array, jboolean* isCopy) 89816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetBooleanArrayElements(this, array, isCopy); } 89916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte* GetByteArrayElements(jbyteArray array, jboolean* isCopy) 90016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetByteArrayElements(this, array, isCopy); } 90116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar* GetCharArrayElements(jcharArray array, jboolean* isCopy) 90216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetCharArrayElements(this, array, isCopy); } 90316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort* GetShortArrayElements(jshortArray array, jboolean* isCopy) 90416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetShortArrayElements(this, array, isCopy); } 90516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint* GetIntArrayElements(jintArray array, jboolean* isCopy) 90616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetIntArrayElements(this, array, isCopy); } 90716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong* GetLongArrayElements(jlongArray array, jboolean* isCopy) 90816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetLongArrayElements(this, array, isCopy); } 90916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat* GetFloatArrayElements(jfloatArray array, jboolean* isCopy) 91016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetFloatArrayElements(this, array, isCopy); } 91116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble* GetDoubleArrayElements(jdoubleArray array, jboolean* isCopy) 91216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetDoubleArrayElements(this, array, isCopy); } 91316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 91416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseBooleanArrayElements(jbooleanArray array, jboolean* elems, 91516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint mode) 91616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseBooleanArrayElements(this, array, elems, mode); } 91716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseByteArrayElements(jbyteArray array, jbyte* elems, 91816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint mode) 91916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseByteArrayElements(this, array, elems, mode); } 92016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseCharArrayElements(jcharArray array, jchar* elems, 92116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint mode) 92216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseCharArrayElements(this, array, elems, mode); } 92316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseShortArrayElements(jshortArray array, jshort* elems, 92416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint mode) 92516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseShortArrayElements(this, array, elems, mode); } 92616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseIntArrayElements(jintArray array, jint* elems, 92716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint mode) 92816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseIntArrayElements(this, array, elems, mode); } 92916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseLongArrayElements(jlongArray array, jlong* elems, 93016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint mode) 93116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseLongArrayElements(this, array, elems, mode); } 93216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseFloatArrayElements(jfloatArray array, jfloat* elems, 93316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint mode) 93416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseFloatArrayElements(this, array, elems, mode); } 93516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseDoubleArrayElements(jdoubleArray array, jdouble* elems, 93616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint mode) 93716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseDoubleArrayElements(this, array, elems, mode); } 93816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 93916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 94016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean* buf) 94116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->GetBooleanArrayRegion(this, array, start, len, buf); } 94216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetByteArrayRegion(jbyteArray array, jsize start, jsize len, 94316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jbyte* buf) 94416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->GetByteArrayRegion(this, array, start, len, buf); } 94516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetCharArrayRegion(jcharArray array, jsize start, jsize len, 94616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jchar* buf) 94716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->GetCharArrayRegion(this, array, start, len, buf); } 94816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetShortArrayRegion(jshortArray array, jsize start, jsize len, 94916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jshort* buf) 95016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->GetShortArrayRegion(this, array, start, len, buf); } 95116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetIntArrayRegion(jintArray array, jsize start, jsize len, 95216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint* buf) 95316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->GetIntArrayRegion(this, array, start, len, buf); } 95416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetLongArrayRegion(jlongArray array, jsize start, jsize len, 95516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong* buf) 95616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->GetLongArrayRegion(this, array, start, len, buf); } 95716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 95816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jfloat* buf) 95916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->GetFloatArrayRegion(this, array, start, len, buf); } 96016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 96116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jdouble* buf) 96216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->GetDoubleArrayRegion(this, array, start, len, buf); } 96316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 96416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 96516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jboolean* buf) 96616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetBooleanArrayRegion(this, array, start, len, buf); } 96716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, 96816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jbyte* buf) 96916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetByteArrayRegion(this, array, start, len, buf); } 97016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetCharArrayRegion(jcharArray array, jsize start, jsize len, 97116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jchar* buf) 97216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetCharArrayRegion(this, array, start, len, buf); } 97316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetShortArrayRegion(jshortArray array, jsize start, jsize len, 97416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jshort* buf) 97516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetShortArrayRegion(this, array, start, len, buf); } 97616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetIntArrayRegion(jintArray array, jsize start, jsize len, 97716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jint* buf) 97816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetIntArrayRegion(this, array, start, len, buf); } 97916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetLongArrayRegion(jlongArray array, jsize start, jsize len, 98016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jlong* buf) 98116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetLongArrayRegion(this, array, start, len, buf); } 98216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 98316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jfloat* buf) 98416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetFloatArrayRegion(this, array, start, len, buf); } 98516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 98616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jdouble* buf) 98716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->SetDoubleArrayRegion(this, array, start, len, buf); } 98816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 98916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint RegisterNatives(jclass clazz, const JNINativeMethod* methods, 99016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint nMethods) 99116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->RegisterNatives(this, clazz, methods, nMethods); } 99216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 99316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint UnregisterNatives(jclass clazz) 99416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->UnregisterNatives(this, clazz); } 99516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 99616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint MonitorEnter(jobject obj) 99716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->MonitorEnter(this, obj); } 99816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 99916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint MonitorExit(jobject obj) 100016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->MonitorExit(this, obj); } 100116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 100216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint GetJavaVM(JavaVM** vm) 100316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetJavaVM(this, vm); } 100416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 100516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetStringRegion(jstring str, jsize start, jsize len, jchar* buf) 100616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->GetStringRegion(this, str, start, len, buf); } 100716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 100816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void GetStringUTFRegion(jstring str, jsize start, jsize len, char* buf) 100916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStringUTFRegion(this, str, start, len, buf); } 101016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 101116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* GetPrimitiveArrayCritical(jarray array, jboolean* isCopy) 101216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetPrimitiveArrayCritical(this, array, isCopy); } 101316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 101416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleasePrimitiveArrayCritical(jarray array, void* carray, jint mode) 101516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleasePrimitiveArrayCritical(this, array, carray, mode); } 101616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 101716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const jchar* GetStringCritical(jstring string, jboolean* isCopy) 101816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetStringCritical(this, string, isCopy); } 101916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 102016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void ReleaseStringCritical(jstring string, const jchar* carray) 102116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->ReleaseStringCritical(this, string, carray); } 102216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 102316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jweak NewWeakGlobalRef(jobject obj) 102416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewWeakGlobalRef(this, obj); } 102516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 102616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void DeleteWeakGlobalRef(jweak obj) 102716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { functions->DeleteWeakGlobalRef(this, obj); } 102816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 102916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean ExceptionCheck() 103016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->ExceptionCheck(this); } 103116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 103216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject NewDirectByteBuffer(void* address, jlong capacity) 103316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->NewDirectByteBuffer(this, address, capacity); } 103416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 103516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* GetDirectBufferAddress(jobject buf) 103616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetDirectBufferAddress(this, buf); } 103716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 103816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jlong GetDirectBufferCapacity(jobject buf) 103916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetDirectBufferCapacity(this, buf); } 104016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 104116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang /* added in JNI 1.6 */ 104216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobjectRefType GetObjectRefType(jobject obj) 104316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetObjectRefType(this, obj); } 104416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#endif /*__cplusplus*/ 104516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang}; 104616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 104716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 104816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 104916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * JNI invocation interface. 105016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 105116559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct JNIInvokeInterface { 105216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* reserved0; 105316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* reserved1; 105416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* reserved2; 105516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 105616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*DestroyJavaVM)(JavaVM*); 105716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*AttachCurrentThread)(JavaVM*, JNIEnv**, void*); 105816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*DetachCurrentThread)(JavaVM*); 105916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*GetEnv)(JavaVM*, void**, jint); 106016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint (*AttachCurrentThreadAsDaemon)(JavaVM*, JNIEnv**, void*); 106116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang}; 106216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 106316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 106416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * C++ version. 106516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 106616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct _JavaVM { 106716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const struct JNIInvokeInterface* functions; 106816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 106916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#if defined(__cplusplus) 107016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint DestroyJavaVM() 107116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->DestroyJavaVM(this); } 107216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint AttachCurrentThread(JNIEnv** p_env, void* thr_args) 107316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->AttachCurrentThread(this, p_env, thr_args); } 107416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint DetachCurrentThread() 107516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->DetachCurrentThread(this); } 107616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint GetEnv(void** env, jint version) 107716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->GetEnv(this, env, version); } 107816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint AttachCurrentThreadAsDaemon(JNIEnv** p_env, void* thr_args) 107916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang { return functions->AttachCurrentThreadAsDaemon(this, p_env, thr_args); } 108016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#endif /*__cplusplus*/ 108116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang}; 108216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 108316559ae86908b88ba7644fac078f9168cbbcae10Ying Wangstruct JavaVMAttachArgs { 108416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint version; /* must be >= JNI_VERSION_1_2 */ 108516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const char* name; /* NULL or name of thread as modified UTF-8 str */ 108616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jobject group; /* global ref of a ThreadGroup object, or NULL */ 108716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang}; 108816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef struct JavaVMAttachArgs JavaVMAttachArgs; 108916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 109016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 109116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * JNI 1.2+ initialization. (As of 1.6, the pre-1.2 structures are no 109216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * longer supported.) 109316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 109416559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef struct JavaVMOption { 109516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang const char* optionString; 109616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang void* extraInfo; 109716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang} JavaVMOption; 109816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 109916559ae86908b88ba7644fac078f9168cbbcae10Ying Wangtypedef struct JavaVMInitArgs { 110016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint version; /* use JNI_VERSION_1_2 or later */ 110116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 110216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jint nOptions; 110316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang JavaVMOption* options; 110416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang jboolean ignoreUnrecognized; 110516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang} JavaVMInitArgs; 110616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 110716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#ifdef __cplusplus 110816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangextern "C" { 110916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#endif 111016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 111116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * VM initialization functions. 111216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * 111316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Note these are the only symbols exported for JNI by the VM. 111416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 111516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#if 0 /* In practice, these are not exported by the NDK so don't declare them */ 111616559ae86908b88ba7644fac078f9168cbbcae10Ying Wangjint JNI_GetDefaultJavaVMInitArgs(void*); 111716559ae86908b88ba7644fac078f9168cbbcae10Ying Wangjint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*); 111816559ae86908b88ba7644fac078f9168cbbcae10Ying Wangjint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*); 111916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#endif 112016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 112116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNIIMPORT 112216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNIEXPORT __attribute__ ((visibility ("default"))) 112316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNICALL 112416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 112516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 112616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Prototypes for functions exported by loadable shared libs. These are 112716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * called by JNI, not provided by JNI. 112816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 112916559ae86908b88ba7644fac078f9168cbbcae10Ying WangJNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved); 113016559ae86908b88ba7644fac078f9168cbbcae10Ying WangJNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved); 113116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 113216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#ifdef __cplusplus 113316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang} 113416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#endif 113516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 113616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 113716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang/* 113816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang * Manifest constants. 113916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang */ 114016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_FALSE 0 114116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_TRUE 1 114216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 114316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_VERSION_1_1 0x00010001 114416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_VERSION_1_2 0x00010002 114516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_VERSION_1_4 0x00010004 114616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_VERSION_1_6 0x00010006 114716559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 114816559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_OK (0) /* no error */ 114916559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_ERR (-1) /* generic error */ 115016559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_EDETACHED (-2) /* thread detached from the VM */ 115116559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_EVERSION (-3) /* JNI version error */ 115216559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 115316559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_COMMIT 1 /* copy content, do not free buffer */ 115416559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#define JNI_ABORT 2 /* free buffer w/o copying back */ 115516559ae86908b88ba7644fac078f9168cbbcae10Ying Wang 115616559ae86908b88ba7644fac078f9168cbbcae10Ying Wang#endif /* JNI_H_ */ 1157