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