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