Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes16kdownloads
jni.h2002 linesDownload Raw Back to include
1/*2 * Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved.3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.4 *5 * This code is free software; you can redistribute it and/or modify it6 * under the terms of the GNU General Public License version 2 only, as7 * published by the Free Software Foundation.  Oracle designates this8 * particular file as subject to the "Classpath" exception as provided9 * by Oracle in the LICENSE file that accompanied this code.10 *11 * This code is distributed in the hope that it will be useful, but WITHOUT12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License14 * version 2 for more details (a copy is included in the LICENSE file that15 * accompanied this code).16 *17 * You should have received a copy of the GNU General Public License version18 * 2 along with this work; if not, write to the Free Software Foundation,19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.20 *21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA22 * or visit www.oracle.com if you need additional information or have any23 * questions.24 */25 26/*27 * We used part of Netscape's Java Runtime Interface (JRI) as the starting28 * point of our design and implementation.29 */30 31/******************************************************************************32 * Java Runtime Interface33 * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.34 *****************************************************************************/35 36#ifndef _JAVASOFT_JNI_H_37#define _JAVASOFT_JNI_H_38 39#include <stdio.h>40#include <stdarg.h>41 42/* jni_md.h contains the machine-dependent typedefs for jbyte, jint43   and jlong */44 45#include "jni_md.h"46 47#ifdef __cplusplus48extern "C" {49#endif50 51/*52 * JNI Types53 */54 55#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H56 57typedef unsigned char   jboolean;58typedef unsigned short  jchar;59typedef short           jshort;60typedef float           jfloat;61typedef double          jdouble;62 63typedef jint            jsize;64 65#ifdef __cplusplus66 67class _jobject {};68class _jclass : public _jobject {};69class _jthrowable : public _jobject {};70class _jstring : public _jobject {};71class _jarray : public _jobject {};72class _jbooleanArray : public _jarray {};73class _jbyteArray : public _jarray {};74class _jcharArray : public _jarray {};75class _jshortArray : public _jarray {};76class _jintArray : public _jarray {};77class _jlongArray : public _jarray {};78class _jfloatArray : public _jarray {};79class _jdoubleArray : public _jarray {};80class _jobjectArray : public _jarray {};81 82typedef _jobject *jobject;83typedef _jclass *jclass;84typedef _jthrowable *jthrowable;85typedef _jstring *jstring;86typedef _jarray *jarray;87typedef _jbooleanArray *jbooleanArray;88typedef _jbyteArray *jbyteArray;89typedef _jcharArray *jcharArray;90typedef _jshortArray *jshortArray;91typedef _jintArray *jintArray;92typedef _jlongArray *jlongArray;93typedef _jfloatArray *jfloatArray;94typedef _jdoubleArray *jdoubleArray;95typedef _jobjectArray *jobjectArray;96 97#else98 99struct _jobject;100 101typedef struct _jobject *jobject;102typedef jobject jclass;103typedef jobject jthrowable;104typedef jobject jstring;105typedef jobject jarray;106typedef jarray jbooleanArray;107typedef jarray jbyteArray;108typedef jarray jcharArray;109typedef jarray jshortArray;110typedef jarray jintArray;111typedef jarray jlongArray;112typedef jarray jfloatArray;113typedef jarray jdoubleArray;114typedef jarray jobjectArray;115 116#endif117 118typedef jobject jweak;119 120typedef union jvalue {121    jboolean z;122    jbyte    b;123    jchar    c;124    jshort   s;125    jint     i;126    jlong    j;127    jfloat   f;128    jdouble  d;129    jobject  l;130} jvalue;131 132struct _jfieldID;133typedef struct _jfieldID *jfieldID;134 135struct _jmethodID;136typedef struct _jmethodID *jmethodID;137 138/* Return values from jobjectRefType */139typedef enum _jobjectType {140     JNIInvalidRefType    = 0,141     JNILocalRefType      = 1,142     JNIGlobalRefType     = 2,143     JNIWeakGlobalRefType = 3144} jobjectRefType;145 146 147#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */148 149/*150 * jboolean constants151 */152 153#define JNI_FALSE 0154#define JNI_TRUE 1155 156/*157 * possible return values for JNI functions.158 */159 160#define JNI_OK           0                 /* success */161#define JNI_ERR          (-1)              /* unknown error */162#define JNI_EDETACHED    (-2)              /* thread detached from the VM */163#define JNI_EVERSION     (-3)              /* JNI version error */164#define JNI_ENOMEM       (-4)              /* not enough memory */165#define JNI_EEXIST       (-5)              /* VM already created */166#define JNI_EINVAL       (-6)              /* invalid arguments */167 168/*169 * used in ReleaseScalarArrayElements170 */171 172#define JNI_COMMIT 1173#define JNI_ABORT 2174 175/*176 * used in RegisterNatives to describe native method name, signature,177 * and function pointer.178 */179 180typedef struct {181    char *name;182    char *signature;183    void *fnPtr;184} JNINativeMethod;185 186/*187 * JNI Native Method Interface.188 */189 190struct JNINativeInterface_;191 192struct JNIEnv_;193 194#ifdef __cplusplus195typedef JNIEnv_ JNIEnv;196#else197typedef const struct JNINativeInterface_ *JNIEnv;198#endif199 200/*201 * JNI Invocation Interface.202 */203 204struct JNIInvokeInterface_;205 206struct JavaVM_;207 208#ifdef __cplusplus209typedef JavaVM_ JavaVM;210#else211typedef const struct JNIInvokeInterface_ *JavaVM;212#endif213 214struct JNINativeInterface_ {215    void *reserved0;216    void *reserved1;217    void *reserved2;218 219    void *reserved3;220    jint (JNICALL *GetVersion)(JNIEnv *env);221 222    jclass (JNICALL *DefineClass)223      (JNIEnv *env, const char *name, jobject loader, const jbyte *buf,224       jsize len);225    jclass (JNICALL *FindClass)226      (JNIEnv *env, const char *name);227 228    jmethodID (JNICALL *FromReflectedMethod)229      (JNIEnv *env, jobject method);230    jfieldID (JNICALL *FromReflectedField)231      (JNIEnv *env, jobject field);232 233    jobject (JNICALL *ToReflectedMethod)234      (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);235 236    jclass (JNICALL *GetSuperclass)237      (JNIEnv *env, jclass sub);238    jboolean (JNICALL *IsAssignableFrom)239      (JNIEnv *env, jclass sub, jclass sup);240 241    jobject (JNICALL *ToReflectedField)242      (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);243 244    jint (JNICALL *Throw)245      (JNIEnv *env, jthrowable obj);246    jint (JNICALL *ThrowNew)247      (JNIEnv *env, jclass clazz, const char *msg);248    jthrowable (JNICALL *ExceptionOccurred)249      (JNIEnv *env);250    void (JNICALL *ExceptionDescribe)251      (JNIEnv *env);252    void (JNICALL *ExceptionClear)253      (JNIEnv *env);254    void (JNICALL *FatalError)255      (JNIEnv *env, const char *msg);256 257    jint (JNICALL *PushLocalFrame)258      (JNIEnv *env, jint capacity);259    jobject (JNICALL *PopLocalFrame)260      (JNIEnv *env, jobject result);261 262    jobject (JNICALL *NewGlobalRef)263      (JNIEnv *env, jobject lobj);264    void (JNICALL *DeleteGlobalRef)265      (JNIEnv *env, jobject gref);266    void (JNICALL *DeleteLocalRef)267      (JNIEnv *env, jobject obj);268    jboolean (JNICALL *IsSameObject)269      (JNIEnv *env, jobject obj1, jobject obj2);270    jobject (JNICALL *NewLocalRef)271      (JNIEnv *env, jobject ref);272    jint (JNICALL *EnsureLocalCapacity)273      (JNIEnv *env, jint capacity);274 275    jobject (JNICALL *AllocObject)276      (JNIEnv *env, jclass clazz);277    jobject (JNICALL *NewObject)278      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);279    jobject (JNICALL *NewObjectV)280      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);281    jobject (JNICALL *NewObjectA)282      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);283 284    jclass (JNICALL *GetObjectClass)285      (JNIEnv *env, jobject obj);286    jboolean (JNICALL *IsInstanceOf)287      (JNIEnv *env, jobject obj, jclass clazz);288 289    jmethodID (JNICALL *GetMethodID)290      (JNIEnv *env, jclass clazz, const char *name, const char *sig);291 292    jobject (JNICALL *CallObjectMethod)293      (JNIEnv *env, jobject obj, jmethodID methodID, ...);294    jobject (JNICALL *CallObjectMethodV)295      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);296    jobject (JNICALL *CallObjectMethodA)297      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);298 299    jboolean (JNICALL *CallBooleanMethod)300      (JNIEnv *env, jobject obj, jmethodID methodID, ...);301    jboolean (JNICALL *CallBooleanMethodV)302      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);303    jboolean (JNICALL *CallBooleanMethodA)304      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);305 306    jbyte (JNICALL *CallByteMethod)307      (JNIEnv *env, jobject obj, jmethodID methodID, ...);308    jbyte (JNICALL *CallByteMethodV)309      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);310    jbyte (JNICALL *CallByteMethodA)311      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);312 313    jchar (JNICALL *CallCharMethod)314      (JNIEnv *env, jobject obj, jmethodID methodID, ...);315    jchar (JNICALL *CallCharMethodV)316      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);317    jchar (JNICALL *CallCharMethodA)318      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);319 320    jshort (JNICALL *CallShortMethod)321      (JNIEnv *env, jobject obj, jmethodID methodID, ...);322    jshort (JNICALL *CallShortMethodV)323      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);324    jshort (JNICALL *CallShortMethodA)325      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);326 327    jint (JNICALL *CallIntMethod)328      (JNIEnv *env, jobject obj, jmethodID methodID, ...);329    jint (JNICALL *CallIntMethodV)330      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);331    jint (JNICALL *CallIntMethodA)332      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);333 334    jlong (JNICALL *CallLongMethod)335      (JNIEnv *env, jobject obj, jmethodID methodID, ...);336    jlong (JNICALL *CallLongMethodV)337      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);338    jlong (JNICALL *CallLongMethodA)339      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);340 341    jfloat (JNICALL *CallFloatMethod)342      (JNIEnv *env, jobject obj, jmethodID methodID, ...);343    jfloat (JNICALL *CallFloatMethodV)344      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);345    jfloat (JNICALL *CallFloatMethodA)346      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);347 348    jdouble (JNICALL *CallDoubleMethod)349      (JNIEnv *env, jobject obj, jmethodID methodID, ...);350    jdouble (JNICALL *CallDoubleMethodV)351      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);352    jdouble (JNICALL *CallDoubleMethodA)353      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);354 355    void (JNICALL *CallVoidMethod)356      (JNIEnv *env, jobject obj, jmethodID methodID, ...);357    void (JNICALL *CallVoidMethodV)358      (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);359    void (JNICALL *CallVoidMethodA)360      (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);361 362    jobject (JNICALL *CallNonvirtualObjectMethod)363      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);364    jobject (JNICALL *CallNonvirtualObjectMethodV)365      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,366       va_list args);367    jobject (JNICALL *CallNonvirtualObjectMethodA)368      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,369       const jvalue * args);370 371    jboolean (JNICALL *CallNonvirtualBooleanMethod)372      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);373    jboolean (JNICALL *CallNonvirtualBooleanMethodV)374      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,375       va_list args);376    jboolean (JNICALL *CallNonvirtualBooleanMethodA)377      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,378       const jvalue * args);379 380    jbyte (JNICALL *CallNonvirtualByteMethod)381      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);382    jbyte (JNICALL *CallNonvirtualByteMethodV)383      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,384       va_list args);385    jbyte (JNICALL *CallNonvirtualByteMethodA)386      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,387       const jvalue *args);388 389    jchar (JNICALL *CallNonvirtualCharMethod)390      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);391    jchar (JNICALL *CallNonvirtualCharMethodV)392      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,393       va_list args);394    jchar (JNICALL *CallNonvirtualCharMethodA)395      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,396       const jvalue *args);397 398    jshort (JNICALL *CallNonvirtualShortMethod)399      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);400    jshort (JNICALL *CallNonvirtualShortMethodV)401      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,402       va_list args);403    jshort (JNICALL *CallNonvirtualShortMethodA)404      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,405       const jvalue *args);406 407    jint (JNICALL *CallNonvirtualIntMethod)408      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);409    jint (JNICALL *CallNonvirtualIntMethodV)410      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,411       va_list args);412    jint (JNICALL *CallNonvirtualIntMethodA)413      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,414       const jvalue *args);415 416    jlong (JNICALL *CallNonvirtualLongMethod)417      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);418    jlong (JNICALL *CallNonvirtualLongMethodV)419      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,420       va_list args);421    jlong (JNICALL *CallNonvirtualLongMethodA)422      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,423       const jvalue *args);424 425    jfloat (JNICALL *CallNonvirtualFloatMethod)426      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);427    jfloat (JNICALL *CallNonvirtualFloatMethodV)428      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,429       va_list args);430    jfloat (JNICALL *CallNonvirtualFloatMethodA)431      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,432       const jvalue *args);433 434    jdouble (JNICALL *CallNonvirtualDoubleMethod)435      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);436    jdouble (JNICALL *CallNonvirtualDoubleMethodV)437      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,438       va_list args);439    jdouble (JNICALL *CallNonvirtualDoubleMethodA)440      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,441       const jvalue *args);442 443    void (JNICALL *CallNonvirtualVoidMethod)444      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);445    void (JNICALL *CallNonvirtualVoidMethodV)446      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,447       va_list args);448    void (JNICALL *CallNonvirtualVoidMethodA)449      (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,450       const jvalue * args);451 452    jfieldID (JNICALL *GetFieldID)453      (JNIEnv *env, jclass clazz, const char *name, const char *sig);454 455    jobject (JNICALL *GetObjectField)456      (JNIEnv *env, jobject obj, jfieldID fieldID);457    jboolean (JNICALL *GetBooleanField)458      (JNIEnv *env, jobject obj, jfieldID fieldID);459    jbyte (JNICALL *GetByteField)460      (JNIEnv *env, jobject obj, jfieldID fieldID);461    jchar (JNICALL *GetCharField)462      (JNIEnv *env, jobject obj, jfieldID fieldID);463    jshort (JNICALL *GetShortField)464      (JNIEnv *env, jobject obj, jfieldID fieldID);465    jint (JNICALL *GetIntField)466      (JNIEnv *env, jobject obj, jfieldID fieldID);467    jlong (JNICALL *GetLongField)468      (JNIEnv *env, jobject obj, jfieldID fieldID);469    jfloat (JNICALL *GetFloatField)470      (JNIEnv *env, jobject obj, jfieldID fieldID);471    jdouble (JNICALL *GetDoubleField)472      (JNIEnv *env, jobject obj, jfieldID fieldID);473 474    void (JNICALL *SetObjectField)475      (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val);476    void (JNICALL *SetBooleanField)477      (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val);478    void (JNICALL *SetByteField)479      (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val);480    void (JNICALL *SetCharField)481      (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val);482    void (JNICALL *SetShortField)483      (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val);484    void (JNICALL *SetIntField)485      (JNIEnv *env, jobject obj, jfieldID fieldID, jint val);486    void (JNICALL *SetLongField)487      (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val);488    void (JNICALL *SetFloatField)489      (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val);490    void (JNICALL *SetDoubleField)491      (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val);492 493    jmethodID (JNICALL *GetStaticMethodID)494      (JNIEnv *env, jclass clazz, const char *name, const char *sig);495 496    jobject (JNICALL *CallStaticObjectMethod)497      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);498    jobject (JNICALL *CallStaticObjectMethodV)499      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);500    jobject (JNICALL *CallStaticObjectMethodA)501      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);502 503    jboolean (JNICALL *CallStaticBooleanMethod)504      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);505    jboolean (JNICALL *CallStaticBooleanMethodV)506      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);507    jboolean (JNICALL *CallStaticBooleanMethodA)508      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);509 510    jbyte (JNICALL *CallStaticByteMethod)511      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);512    jbyte (JNICALL *CallStaticByteMethodV)513      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);514    jbyte (JNICALL *CallStaticByteMethodA)515      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);516 517    jchar (JNICALL *CallStaticCharMethod)518      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);519    jchar (JNICALL *CallStaticCharMethodV)520      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);521    jchar (JNICALL *CallStaticCharMethodA)522      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);523 524    jshort (JNICALL *CallStaticShortMethod)525      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);526    jshort (JNICALL *CallStaticShortMethodV)527      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);528    jshort (JNICALL *CallStaticShortMethodA)529      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);530 531    jint (JNICALL *CallStaticIntMethod)532      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);533    jint (JNICALL *CallStaticIntMethodV)534      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);535    jint (JNICALL *CallStaticIntMethodA)536      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);537 538    jlong (JNICALL *CallStaticLongMethod)539      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);540    jlong (JNICALL *CallStaticLongMethodV)541      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);542    jlong (JNICALL *CallStaticLongMethodA)543      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);544 545    jfloat (JNICALL *CallStaticFloatMethod)546      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);547    jfloat (JNICALL *CallStaticFloatMethodV)548      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);549    jfloat (JNICALL *CallStaticFloatMethodA)550      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);551 552    jdouble (JNICALL *CallStaticDoubleMethod)553      (JNIEnv *env, jclass clazz, jmethodID methodID, ...);554    jdouble (JNICALL *CallStaticDoubleMethodV)555      (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);556    jdouble (JNICALL *CallStaticDoubleMethodA)557      (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);558 559    void (JNICALL *CallStaticVoidMethod)560      (JNIEnv *env, jclass cls, jmethodID methodID, ...);561    void (JNICALL *CallStaticVoidMethodV)562      (JNIEnv *env, jclass cls, jmethodID methodID, va_list args);563    void (JNICALL *CallStaticVoidMethodA)564      (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args);565 566    jfieldID (JNICALL *GetStaticFieldID)567      (JNIEnv *env, jclass clazz, const char *name, const char *sig);568    jobject (JNICALL *GetStaticObjectField)569      (JNIEnv *env, jclass clazz, jfieldID fieldID);570    jboolean (JNICALL *GetStaticBooleanField)571      (JNIEnv *env, jclass clazz, jfieldID fieldID);572    jbyte (JNICALL *GetStaticByteField)573      (JNIEnv *env, jclass clazz, jfieldID fieldID);574    jchar (JNICALL *GetStaticCharField)575      (JNIEnv *env, jclass clazz, jfieldID fieldID);576    jshort (JNICALL *GetStaticShortField)577      (JNIEnv *env, jclass clazz, jfieldID fieldID);578    jint (JNICALL *GetStaticIntField)579      (JNIEnv *env, jclass clazz, jfieldID fieldID);580    jlong (JNICALL *GetStaticLongField)581      (JNIEnv *env, jclass clazz, jfieldID fieldID);582    jfloat (JNICALL *GetStaticFloatField)583      (JNIEnv *env, jclass clazz, jfieldID fieldID);584    jdouble (JNICALL *GetStaticDoubleField)585      (JNIEnv *env, jclass clazz, jfieldID fieldID);586 587    void (JNICALL *SetStaticObjectField)588      (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value);589    void (JNICALL *SetStaticBooleanField)590      (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value);591    void (JNICALL *SetStaticByteField)592      (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value);593    void (JNICALL *SetStaticCharField)594      (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value);595    void (JNICALL *SetStaticShortField)596      (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value);597    void (JNICALL *SetStaticIntField)598      (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value);599    void (JNICALL *SetStaticLongField)600      (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value);601    void (JNICALL *SetStaticFloatField)602      (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value);603    void (JNICALL *SetStaticDoubleField)604      (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value);605 606    jstring (JNICALL *NewString)607      (JNIEnv *env, const jchar *unicode, jsize len);608    jsize (JNICALL *GetStringLength)609      (JNIEnv *env, jstring str);610    const jchar *(JNICALL *GetStringChars)611      (JNIEnv *env, jstring str, jboolean *isCopy);612    void (JNICALL *ReleaseStringChars)613      (JNIEnv *env, jstring str, const jchar *chars);614 615    jstring (JNICALL *NewStringUTF)616      (JNIEnv *env, const char *utf);617    jsize (JNICALL *GetStringUTFLength)618      (JNIEnv *env, jstring str);619    const char* (JNICALL *GetStringUTFChars)620      (JNIEnv *env, jstring str, jboolean *isCopy);621    void (JNICALL *ReleaseStringUTFChars)622      (JNIEnv *env, jstring str, const char* chars);623 624 625    jsize (JNICALL *GetArrayLength)626      (JNIEnv *env, jarray array);627 628    jobjectArray (JNICALL *NewObjectArray)629      (JNIEnv *env, jsize len, jclass clazz, jobject init);630    jobject (JNICALL *GetObjectArrayElement)631      (JNIEnv *env, jobjectArray array, jsize index);632    void (JNICALL *SetObjectArrayElement)633      (JNIEnv *env, jobjectArray array, jsize index, jobject val);634 635    jbooleanArray (JNICALL *NewBooleanArray)636      (JNIEnv *env, jsize len);637    jbyteArray (JNICALL *NewByteArray)638      (JNIEnv *env, jsize len);639    jcharArray (JNICALL *NewCharArray)640      (JNIEnv *env, jsize len);641    jshortArray (JNICALL *NewShortArray)642      (JNIEnv *env, jsize len);643    jintArray (JNICALL *NewIntArray)644      (JNIEnv *env, jsize len);645    jlongArray (JNICALL *NewLongArray)646      (JNIEnv *env, jsize len);647    jfloatArray (JNICALL *NewFloatArray)648      (JNIEnv *env, jsize len);649    jdoubleArray (JNICALL *NewDoubleArray)650      (JNIEnv *env, jsize len);651 652    jboolean * (JNICALL *GetBooleanArrayElements)653      (JNIEnv *env, jbooleanArray array, jboolean *isCopy);654    jbyte * (JNICALL *GetByteArrayElements)655      (JNIEnv *env, jbyteArray array, jboolean *isCopy);656    jchar * (JNICALL *GetCharArrayElements)657      (JNIEnv *env, jcharArray array, jboolean *isCopy);658    jshort * (JNICALL *GetShortArrayElements)659      (JNIEnv *env, jshortArray array, jboolean *isCopy);660    jint * (JNICALL *GetIntArrayElements)661      (JNIEnv *env, jintArray array, jboolean *isCopy);662    jlong * (JNICALL *GetLongArrayElements)663      (JNIEnv *env, jlongArray array, jboolean *isCopy);664    jfloat * (JNICALL *GetFloatArrayElements)665      (JNIEnv *env, jfloatArray array, jboolean *isCopy);666    jdouble * (JNICALL *GetDoubleArrayElements)667      (JNIEnv *env, jdoubleArray array, jboolean *isCopy);668 669    void (JNICALL *ReleaseBooleanArrayElements)670      (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode);671    void (JNICALL *ReleaseByteArrayElements)672      (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode);673    void (JNICALL *ReleaseCharArrayElements)674      (JNIEnv *env, jcharArray array, jchar *elems, jint mode);675    void (JNICALL *ReleaseShortArrayElements)676      (JNIEnv *env, jshortArray array, jshort *elems, jint mode);677    void (JNICALL *ReleaseIntArrayElements)678      (JNIEnv *env, jintArray array, jint *elems, jint mode);679    void (JNICALL *ReleaseLongArrayElements)680      (JNIEnv *env, jlongArray array, jlong *elems, jint mode);681    void (JNICALL *ReleaseFloatArrayElements)682      (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode);683    void (JNICALL *ReleaseDoubleArrayElements)684      (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode);685 686    void (JNICALL *GetBooleanArrayRegion)687      (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf);688    void (JNICALL *GetByteArrayRegion)689      (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf);690    void (JNICALL *GetCharArrayRegion)691      (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf);692    void (JNICALL *GetShortArrayRegion)693      (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf);694    void (JNICALL *GetIntArrayRegion)695      (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf);696    void (JNICALL *GetLongArrayRegion)697      (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf);698    void (JNICALL *GetFloatArrayRegion)699      (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf);700    void (JNICALL *GetDoubleArrayRegion)701      (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf);702 703    void (JNICALL *SetBooleanArrayRegion)704      (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf);705    void (JNICALL *SetByteArrayRegion)706      (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf);707    void (JNICALL *SetCharArrayRegion)708      (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf);709    void (JNICALL *SetShortArrayRegion)710      (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf);711    void (JNICALL *SetIntArrayRegion)712      (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf);713    void (JNICALL *SetLongArrayRegion)714      (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf);715    void (JNICALL *SetFloatArrayRegion)716      (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf);717    void (JNICALL *SetDoubleArrayRegion)718      (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf);719 720    jint (JNICALL *RegisterNatives)721      (JNIEnv *env, jclass clazz, const JNINativeMethod *methods,722       jint nMethods);723    jint (JNICALL *UnregisterNatives)724      (JNIEnv *env, jclass clazz);725 726    jint (JNICALL *MonitorEnter)727      (JNIEnv *env, jobject obj);728    jint (JNICALL *MonitorExit)729      (JNIEnv *env, jobject obj);730 731    jint (JNICALL *GetJavaVM)732      (JNIEnv *env, JavaVM **vm);733 734    void (JNICALL *GetStringRegion)735      (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf);736    void (JNICALL *GetStringUTFRegion)737      (JNIEnv *env, jstring str, jsize start, jsize len, char *buf);738 739    void * (JNICALL *GetPrimitiveArrayCritical)740      (JNIEnv *env, jarray array, jboolean *isCopy);741    void (JNICALL *ReleasePrimitiveArrayCritical)742      (JNIEnv *env, jarray array, void *carray, jint mode);743 744    const jchar * (JNICALL *GetStringCritical)745      (JNIEnv *env, jstring string, jboolean *isCopy);746    void (JNICALL *ReleaseStringCritical)747      (JNIEnv *env, jstring string, const jchar *cstring);748 749    jweak (JNICALL *NewWeakGlobalRef)750       (JNIEnv *env, jobject obj);751    void (JNICALL *DeleteWeakGlobalRef)752       (JNIEnv *env, jweak ref);753 754    jboolean (JNICALL *ExceptionCheck)755       (JNIEnv *env);756 757    jobject (JNICALL *NewDirectByteBuffer)758       (JNIEnv* env, void* address, jlong capacity);759    void* (JNICALL *GetDirectBufferAddress)760       (JNIEnv* env, jobject buf);761    jlong (JNICALL *GetDirectBufferCapacity)762       (JNIEnv* env, jobject buf);763 764    /* New JNI 1.6 Features */765 766    jobjectRefType (JNICALL *GetObjectRefType)767        (JNIEnv* env, jobject obj);768 769    /* Module Features */770 771    jobject (JNICALL *GetModule)772       (JNIEnv* env, jclass clazz);773 774    /* Virtual threads */775 776    jboolean (JNICALL *IsVirtualThread)777       (JNIEnv* env, jobject obj);778};779 780/*781 * We use inlined functions for C++ so that programmers can write:782 *783 *    env->FindClass("java/lang/String")784 *785 * in C++ rather than:786 *787 *    (*env)->FindClass(env, "java/lang/String")788 *789 * in C.790 */791 792struct JNIEnv_ {793    const struct JNINativeInterface_ *functions;794#ifdef __cplusplus795 796    jint GetVersion() {797        return functions->GetVersion(this);798    }799    jclass DefineClass(const char *name, jobject loader, const jbyte *buf,800                       jsize len) {801        return functions->DefineClass(this, name, loader, buf, len);802    }803    jclass FindClass(const char *name) {804        return functions->FindClass(this, name);805    }806    jmethodID FromReflectedMethod(jobject method) {807        return functions->FromReflectedMethod(this,method);808    }809    jfieldID FromReflectedField(jobject field) {810        return functions->FromReflectedField(this,field);811    }812 813    jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) {814        return functions->ToReflectedMethod(this, cls, methodID, isStatic);815    }816 817    jclass GetSuperclass(jclass sub) {818        return functions->GetSuperclass(this, sub);819    }820    jboolean IsAssignableFrom(jclass sub, jclass sup) {821        return functions->IsAssignableFrom(this, sub, sup);822    }823 824    jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) {825        return functions->ToReflectedField(this,cls,fieldID,isStatic);826    }827 828    jint Throw(jthrowable obj) {829        return functions->Throw(this, obj);830    }831    jint ThrowNew(jclass clazz, const char *msg) {832        return functions->ThrowNew(this, clazz, msg);833    }834    jthrowable ExceptionOccurred() {835        return functions->ExceptionOccurred(this);836    }837    void ExceptionDescribe() {838        functions->ExceptionDescribe(this);839    }840    void ExceptionClear() {841        functions->ExceptionClear(this);842    }843    void FatalError(const char *msg) {844        functions->FatalError(this, msg);845    }846 847    jint PushLocalFrame(jint capacity) {848        return functions->PushLocalFrame(this,capacity);849    }850    jobject PopLocalFrame(jobject result) {851        return functions->PopLocalFrame(this,result);852    }853 854    jobject NewGlobalRef(jobject lobj) {855        return functions->NewGlobalRef(this,lobj);856    }857    void DeleteGlobalRef(jobject gref) {858        functions->DeleteGlobalRef(this,gref);859    }860    void DeleteLocalRef(jobject obj) {861        functions->DeleteLocalRef(this, obj);862    }863 864    jboolean IsSameObject(jobject obj1, jobject obj2) {865        return functions->IsSameObject(this,obj1,obj2);866    }867 868    jobject NewLocalRef(jobject ref) {869        return functions->NewLocalRef(this,ref);870    }871    jint EnsureLocalCapacity(jint capacity) {872        return functions->EnsureLocalCapacity(this,capacity);873    }874 875    jobject AllocObject(jclass clazz) {876        return functions->AllocObject(this,clazz);877    }878    jobject NewObject(jclass clazz, jmethodID methodID, ...) {879        va_list args;880        jobject result;881        va_start(args, methodID);882        result = functions->NewObjectV(this,clazz,methodID,args);883        va_end(args);884        return result;885    }886    jobject NewObjectV(jclass clazz, jmethodID methodID,887                       va_list args) {888        return functions->NewObjectV(this,clazz,methodID,args);889    }890    jobject NewObjectA(jclass clazz, jmethodID methodID,891                       const jvalue *args) {892        return functions->NewObjectA(this,clazz,methodID,args);893    }894 895    jclass GetObjectClass(jobject obj) {896        return functions->GetObjectClass(this,obj);897    }898    jboolean IsInstanceOf(jobject obj, jclass clazz) {899        return functions->IsInstanceOf(this,obj,clazz);900    }901 902    jmethodID GetMethodID(jclass clazz, const char *name,903                          const char *sig) {904        return functions->GetMethodID(this,clazz,name,sig);905    }906 907    jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) {908        va_list args;909        jobject result;910        va_start(args,methodID);911        result = functions->CallObjectMethodV(this,obj,methodID,args);912        va_end(args);913        return result;914    }915    jobject CallObjectMethodV(jobject obj, jmethodID methodID,916                        va_list args) {917        return functions->CallObjectMethodV(this,obj,methodID,args);918    }919    jobject CallObjectMethodA(jobject obj, jmethodID methodID,920                        const jvalue * args) {921        return functions->CallObjectMethodA(this,obj,methodID,args);922    }923 924    jboolean CallBooleanMethod(jobject obj,925                               jmethodID methodID, ...) {926        va_list args;927        jboolean result;928        va_start(args,methodID);929        result = functions->CallBooleanMethodV(this,obj,methodID,args);930        va_end(args);931        return result;932    }933    jboolean CallBooleanMethodV(jobject obj, jmethodID methodID,934                                va_list args) {935        return functions->CallBooleanMethodV(this,obj,methodID,args);936    }937    jboolean CallBooleanMethodA(jobject obj, jmethodID methodID,938                                const jvalue * args) {939        return functions->CallBooleanMethodA(this,obj,methodID, args);940    }941 942    jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) {943        va_list args;944        jbyte result;945        va_start(args,methodID);946        result = functions->CallByteMethodV(this,obj,methodID,args);947        va_end(args);948        return result;949    }950    jbyte CallByteMethodV(jobject obj, jmethodID methodID,951                          va_list args) {952        return functions->CallByteMethodV(this,obj,methodID,args);953    }954    jbyte CallByteMethodA(jobject obj, jmethodID methodID,955                          const jvalue * args) {956        return functions->CallByteMethodA(this,obj,methodID,args);957    }958 959    jchar CallCharMethod(jobject obj, jmethodID methodID, ...) {960        va_list args;961        jchar result;962        va_start(args,methodID);963        result = functions->CallCharMethodV(this,obj,methodID,args);964        va_end(args);965        return result;966    }967    jchar CallCharMethodV(jobject obj, jmethodID methodID,968                          va_list args) {969        return functions->CallCharMethodV(this,obj,methodID,args);970    }971    jchar CallCharMethodA(jobject obj, jmethodID methodID,972                          const jvalue * args) {973        return functions->CallCharMethodA(this,obj,methodID,args);974    }975 976    jshort CallShortMethod(jobject obj, jmethodID methodID, ...) {977        va_list args;978        jshort result;979        va_start(args,methodID);980        result = functions->CallShortMethodV(this,obj,methodID,args);981        va_end(args);982        return result;983    }984    jshort CallShortMethodV(jobject obj, jmethodID methodID,985                            va_list args) {986        return functions->CallShortMethodV(this,obj,methodID,args);987    }988    jshort CallShortMethodA(jobject obj, jmethodID methodID,989                            const jvalue * args) {990        return functions->CallShortMethodA(this,obj,methodID,args);991    }992 993    jint CallIntMethod(jobject obj, jmethodID methodID, ...) {994        va_list args;995        jint result;996        va_start(args,methodID);997        result = functions->CallIntMethodV(this,obj,methodID,args);998        va_end(args);999        return result;1000    }1001    jint CallIntMethodV(jobject obj, jmethodID methodID,1002                        va_list args) {1003        return functions->CallIntMethodV(this,obj,methodID,args);1004    }1005    jint CallIntMethodA(jobject obj, jmethodID methodID,1006                        const jvalue * args) {1007        return functions->CallIntMethodA(this,obj,methodID,args);1008    }1009 1010    jlong CallLongMethod(jobject obj, jmethodID methodID, ...) {1011        va_list args;1012        jlong result;1013        va_start(args,methodID);1014        result = functions->CallLongMethodV(this,obj,methodID,args);1015        va_end(args);1016        return result;1017    }1018    jlong CallLongMethodV(jobject obj, jmethodID methodID,1019                          va_list args) {1020        return functions->CallLongMethodV(this,obj,methodID,args);1021    }1022    jlong CallLongMethodA(jobject obj, jmethodID methodID,1023                          const jvalue * args) {1024        return functions->CallLongMethodA(this,obj,methodID,args);1025    }1026 1027    jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) {1028        va_list args;1029        jfloat result;1030        va_start(args,methodID);1031        result = functions->CallFloatMethodV(this,obj,methodID,args);1032        va_end(args);1033        return result;1034    }1035    jfloat CallFloatMethodV(jobject obj, jmethodID methodID,1036                            va_list args) {1037        return functions->CallFloatMethodV(this,obj,methodID,args);1038    }1039    jfloat CallFloatMethodA(jobject obj, jmethodID methodID,1040                            const jvalue * args) {1041        return functions->CallFloatMethodA(this,obj,methodID,args);1042    }1043 1044    jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) {1045        va_list args;1046        jdouble result;1047        va_start(args,methodID);1048        result = functions->CallDoubleMethodV(this,obj,methodID,args);1049        va_end(args);1050        return result;1051    }1052    jdouble CallDoubleMethodV(jobject obj, jmethodID methodID,1053                        va_list args) {1054        return functions->CallDoubleMethodV(this,obj,methodID,args);1055    }1056    jdouble CallDoubleMethodA(jobject obj, jmethodID methodID,1057                        const jvalue * args) {1058        return functions->CallDoubleMethodA(this,obj,methodID,args);1059    }1060 1061    void CallVoidMethod(jobject obj, jmethodID methodID, ...) {1062        va_list args;1063        va_start(args,methodID);1064        functions->CallVoidMethodV(this,obj,methodID,args);1065        va_end(args);1066    }1067    void CallVoidMethodV(jobject obj, jmethodID methodID,1068                         va_list args) {1069        functions->CallVoidMethodV(this,obj,methodID,args);1070    }1071    void CallVoidMethodA(jobject obj, jmethodID methodID,1072                         const jvalue * args) {1073        functions->CallVoidMethodA(this,obj,methodID,args);1074    }1075 1076    jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz,1077                                       jmethodID methodID, ...) {1078        va_list args;1079        jobject result;1080        va_start(args,methodID);1081        result = functions->CallNonvirtualObjectMethodV(this,obj,clazz,1082                                                        methodID,args);1083        va_end(args);1084        return result;1085    }1086    jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz,1087                                        jmethodID methodID, va_list args) {1088        return functions->CallNonvirtualObjectMethodV(this,obj,clazz,1089                                                      methodID,args);1090    }1091    jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz,1092                                        jmethodID methodID, const jvalue * args) {1093        return functions->CallNonvirtualObjectMethodA(this,obj,clazz,1094                                                      methodID,args);1095    }1096 1097    jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz,1098                                         jmethodID methodID, ...) {1099        va_list args;1100        jboolean result;1101        va_start(args,methodID);1102        result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz,1103                                                         methodID,args);1104        va_end(args);1105        return result;1106    }1107    jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz,1108                                          jmethodID methodID, va_list args) {1109        return functions->CallNonvirtualBooleanMethodV(this,obj,clazz,1110                                                       methodID,args);1111    }1112    jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz,1113                                          jmethodID methodID, const jvalue * args) {1114        return functions->CallNonvirtualBooleanMethodA(this,obj,clazz,1115                                                       methodID, args);1116    }1117 1118    jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz,1119                                   jmethodID methodID, ...) {1120        va_list args;1121        jbyte result;1122        va_start(args,methodID);1123        result = functions->CallNonvirtualByteMethodV(this,obj,clazz,1124                                                      methodID,args);1125        va_end(args);1126        return result;1127    }1128    jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz,1129                                    jmethodID methodID, va_list args) {1130        return functions->CallNonvirtualByteMethodV(this,obj,clazz,1131                                                    methodID,args);1132    }1133    jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz,1134                                    jmethodID methodID, const jvalue * args) {1135        return functions->CallNonvirtualByteMethodA(this,obj,clazz,1136                                                    methodID,args);1137    }1138 1139    jchar CallNonvirtualCharMethod(jobject obj, jclass clazz,1140                                   jmethodID methodID, ...) {1141        va_list args;1142        jchar result;1143        va_start(args,methodID);1144        result = functions->CallNonvirtualCharMethodV(this,obj,clazz,1145                                                      methodID,args);1146        va_end(args);1147        return result;1148    }1149    jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz,1150                                    jmethodID methodID, va_list args) {1151        return functions->CallNonvirtualCharMethodV(this,obj,clazz,1152                                                    methodID,args);1153    }1154    jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz,1155                                    jmethodID methodID, const jvalue * args) {1156        return functions->CallNonvirtualCharMethodA(this,obj,clazz,1157                                                    methodID,args);1158    }1159 1160    jshort CallNonvirtualShortMethod(jobject obj, jclass clazz,1161                                     jmethodID methodID, ...) {1162        va_list args;1163        jshort result;1164        va_start(args,methodID);1165        result = functions->CallNonvirtualShortMethodV(this,obj,clazz,1166                                                       methodID,args);1167        va_end(args);1168        return result;1169    }1170    jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz,1171                                      jmethodID methodID, va_list args) {1172        return functions->CallNonvirtualShortMethodV(this,obj,clazz,1173                                                     methodID,args);1174    }1175    jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz,1176                                      jmethodID methodID, const jvalue * args) {1177        return functions->CallNonvirtualShortMethodA(this,obj,clazz,1178                                                     methodID,args);1179    }1180 1181    jint CallNonvirtualIntMethod(jobject obj, jclass clazz,1182                                 jmethodID methodID, ...) {1183        va_list args;1184        jint result;1185        va_start(args,methodID);1186        result = functions->CallNonvirtualIntMethodV(this,obj,clazz,1187                                                     methodID,args);1188        va_end(args);1189        return result;1190    }1191    jint CallNonvirtualIntMethodV(jobject obj, jclass clazz,1192                                  jmethodID methodID, va_list args) {1193        return functions->CallNonvirtualIntMethodV(this,obj,clazz,1194                                                   methodID,args);1195    }1196    jint CallNonvirtualIntMethodA(jobject obj, jclass clazz,1197                                  jmethodID methodID, const jvalue * args) {1198        return functions->CallNonvirtualIntMethodA(this,obj,clazz,1199                                                   methodID,args);1200    }

Showing the first 1,200 of 2002 lines. Download the file for the rest.

codekingpro/portable-devtools · Team Ai