36#ifndef _JAVASOFT_JNI_H_
37#define _JAVASOFT_JNI_H_
55#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H
68class _jclass :
public _jobject {};
69class _jthrowable :
public _jobject {};
70class _jstring :
public _jobject {};
71class _jarray :
public _jobject {};
72class _jbooleanArray :
public _jarray {};
73class _jbyteArray :
public _jarray {};
74class _jcharArray :
public _jarray {};
75class _jshortArray :
public _jarray {};
76class _jintArray :
public _jarray {};
77class _jlongArray :
public _jarray {};
78class _jfloatArray :
public _jarray {};
79class _jdoubleArray :
public _jarray {};
80class _jobjectArray :
public _jarray {};
162#define JNI_EDETACHED (-2)
163#define JNI_EVERSION (-3)
164#define JNI_ENOMEM (-4)
165#define JNI_EEXIST (-5)
166#define JNI_EINVAL (-6)
250 void (JNICALL *ExceptionDescribe)
264 void (JNICALL *DeleteGlobalRef)
272 jint (JNICALL *EnsureLocalCapacity)
357 void (JNICALL *CallVoidMethodV)
359 void (JNICALL *CallVoidMethodA)
364 jobject (JNICALL *CallNonvirtualObjectMethodV)
367 jobject (JNICALL *CallNonvirtualObjectMethodA)
380 jbyte (JNICALL *CallNonvirtualByteMethod)
382 jbyte (JNICALL *CallNonvirtualByteMethodV)
385 jbyte (JNICALL *CallNonvirtualByteMethodA)
389 jchar (JNICALL *CallNonvirtualCharMethod)
391 jchar (JNICALL *CallNonvirtualCharMethodV)
394 jchar (JNICALL *CallNonvirtualCharMethodA)
398 jshort (JNICALL *CallNonvirtualShortMethod)
400 jshort (JNICALL *CallNonvirtualShortMethodV)
403 jshort (JNICALL *CallNonvirtualShortMethodA)
407 jint (JNICALL *CallNonvirtualIntMethod)
409 jint (JNICALL *CallNonvirtualIntMethodV)
412 jint (JNICALL *CallNonvirtualIntMethodA)
416 jlong (JNICALL *CallNonvirtualLongMethod)
418 jlong (JNICALL *CallNonvirtualLongMethodV)
421 jlong (JNICALL *CallNonvirtualLongMethodA)
425 jfloat (JNICALL *CallNonvirtualFloatMethod)
427 jfloat (JNICALL *CallNonvirtualFloatMethodV)
430 jfloat (JNICALL *CallNonvirtualFloatMethodA)
436 jdouble (JNICALL *CallNonvirtualDoubleMethodV)
439 jdouble (JNICALL *CallNonvirtualDoubleMethodA)
443 void (JNICALL *CallNonvirtualVoidMethod)
445 void (JNICALL *CallNonvirtualVoidMethodV)
448 void (JNICALL *CallNonvirtualVoidMethodA)
476 void (JNICALL *SetBooleanField)
510 jbyte (JNICALL *CallStaticByteMethod)
512 jbyte (JNICALL *CallStaticByteMethodV)
514 jbyte (JNICALL *CallStaticByteMethodA)
517 jchar (JNICALL *CallStaticCharMethod)
519 jchar (JNICALL *CallStaticCharMethodV)
521 jchar (JNICALL *CallStaticCharMethodA)
531 jint (JNICALL *CallStaticIntMethod)
533 jint (JNICALL *CallStaticIntMethodV)
535 jint (JNICALL *CallStaticIntMethodA)
538 jlong (JNICALL *CallStaticLongMethod)
540 jlong (JNICALL *CallStaticLongMethodV)
542 jlong (JNICALL *CallStaticLongMethodA)
559 void (JNICALL *CallStaticVoidMethod)
561 void (JNICALL *CallStaticVoidMethodV)
563 void (JNICALL *CallStaticVoidMethodA)
578 jint (JNICALL *GetStaticIntField)
587 void (JNICALL *SetStaticObjectField)
589 void (JNICALL *SetStaticBooleanField)
591 void (JNICALL *SetStaticByteField)
593 void (JNICALL *SetStaticCharField)
595 void (JNICALL *SetStaticShortField)
597 void (JNICALL *SetStaticIntField)
599 void (JNICALL *SetStaticLongField)
601 void (JNICALL *SetStaticFloatField)
603 void (JNICALL *SetStaticDoubleField)
612 void (JNICALL *ReleaseStringChars)
621 void (JNICALL *ReleaseStringUTFChars)
632 void (JNICALL *SetObjectArrayElement)
669 void (JNICALL *ReleaseBooleanArrayElements)
671 void (JNICALL *ReleaseByteArrayElements)
673 void (JNICALL *ReleaseCharArrayElements)
675 void (JNICALL *ReleaseShortArrayElements)
677 void (JNICALL *ReleaseIntArrayElements)
679 void (JNICALL *ReleaseLongArrayElements)
681 void (JNICALL *ReleaseFloatArrayElements)
683 void (JNICALL *ReleaseDoubleArrayElements)
686 void (JNICALL *GetBooleanArrayRegion)
688 void (JNICALL *GetByteArrayRegion)
690 void (JNICALL *GetCharArrayRegion)
692 void (JNICALL *GetShortArrayRegion)
694 void (JNICALL *GetIntArrayRegion)
696 void (JNICALL *GetLongArrayRegion)
698 void (JNICALL *GetFloatArrayRegion)
700 void (JNICALL *GetDoubleArrayRegion)
703 void (JNICALL *SetBooleanArrayRegion)
705 void (JNICALL *SetByteArrayRegion)
707 void (JNICALL *SetCharArrayRegion)
709 void (JNICALL *SetShortArrayRegion)
711 void (JNICALL *SetIntArrayRegion)
713 void (JNICALL *SetLongArrayRegion)
715 void (JNICALL *SetFloatArrayRegion)
717 void (JNICALL *SetDoubleArrayRegion)
720 jint (JNICALL *RegisterNatives)
723 jint (JNICALL *UnregisterNatives)
734 void (JNICALL *GetStringRegion)
736 void (JNICALL *GetStringUTFRegion)
741 void (JNICALL *ReleasePrimitiveArrayCritical)
746 void (JNICALL *ReleaseStringCritical)
751 void (JNICALL *DeleteWeakGlobalRef)
761 jlong (JNICALL *GetDirectBufferCapacity)
794 jclass DefineClass(
const char *name,
jobject loader,
const jbyte *buf,
796 return functions->DefineClass(
this, name, loader, buf, len);
798 jclass FindClass(
const char *name) {
802 return functions->FromReflectedMethod(
this,method);
805 return functions->FromReflectedField(
this,field);
809 return functions->ToReflectedMethod(
this, cls, methodID, isStatic);
813 return functions->GetSuperclass(
this, sub);
816 return functions->IsAssignableFrom(
this, sub, sup);
820 return functions->ToReflectedField(
this,cls,fieldID,isStatic);
826 jint ThrowNew(
jclass clazz,
const char *msg) {
827 return functions->ThrowNew(
this, clazz, msg);
830 return functions->ExceptionOccurred(
this);
832 void ExceptionDescribe() {
835 void ExceptionClear() {
838 void FatalError(
const char *msg) {
842 jint PushLocalFrame(jint capacity) {
843 return functions->PushLocalFrame(
this,capacity);
846 return functions->PopLocalFrame(
this,result);
850 return functions->NewGlobalRef(
this,lobj);
852 void DeleteGlobalRef(
jobject gref) {
855 void DeleteLocalRef(
jobject obj) {
860 return functions->IsSameObject(
this,obj1,obj2);
866 jint EnsureLocalCapacity(jint capacity) {
867 return functions->EnsureLocalCapacity(
this,capacity);
871 return functions->AllocObject(
this,clazz);
876 va_start(args, methodID);
877 result =
functions->NewObjectV(
this,clazz,methodID,args);
883 return functions->NewObjectV(
this,clazz,methodID,args);
887 return functions->NewObjectA(
this,clazz,methodID,args);
891 return functions->GetObjectClass(
this,obj);
894 return functions->IsInstanceOf(
this,obj,clazz);
899 return functions->GetMethodID(
this,clazz,name,sig);
905 va_start(args,methodID);
906 result =
functions->CallObjectMethodV(
this,obj,methodID,args);
912 return functions->CallObjectMethodV(
this,obj,methodID,args);
916 return functions->CallObjectMethodA(
this,obj,methodID,args);
923 va_start(args,methodID);
924 result =
functions->CallBooleanMethodV(
this,obj,methodID,args);
930 return functions->CallBooleanMethodV(
this,obj,methodID,args);
934 return functions->CallBooleanMethodA(
this,obj,methodID, args);
940 va_start(args,methodID);
941 result =
functions->CallByteMethodV(
this,obj,methodID,args);
947 return functions->CallByteMethodV(
this,obj,methodID,args);
951 return functions->CallByteMethodA(
this,obj,methodID,args);
957 va_start(args,methodID);
958 result =
functions->CallCharMethodV(
this,obj,methodID,args);
964 return functions->CallCharMethodV(
this,obj,methodID,args);
968 return functions->CallCharMethodA(
this,obj,methodID,args);
974 va_start(args,methodID);
975 result =
functions->CallShortMethodV(
this,obj,methodID,args);
981 return functions->CallShortMethodV(
this,obj,methodID,args);
985 return functions->CallShortMethodA(
this,obj,methodID,args);
991 va_start(args,methodID);
992 result =
functions->CallIntMethodV(
this,obj,methodID,args);
998 return functions->CallIntMethodV(
this,obj,methodID,args);
1002 return functions->CallIntMethodA(
this,obj,methodID,args);
1008 va_start(args,methodID);
1009 result =
functions->CallLongMethodV(
this,obj,methodID,args);
1015 return functions->CallLongMethodV(
this,obj,methodID,args);
1019 return functions->CallLongMethodA(
this,obj,methodID,args);
1025 va_start(args,methodID);
1026 result =
functions->CallFloatMethodV(
this,obj,methodID,args);
1032 return functions->CallFloatMethodV(
this,obj,methodID,args);
1036 return functions->CallFloatMethodA(
this,obj,methodID,args);
1042 va_start(args,methodID);
1043 result =
functions->CallDoubleMethodV(
this,obj,methodID,args);
1049 return functions->CallDoubleMethodV(
this,obj,methodID,args);
1053 return functions->CallDoubleMethodA(
this,obj,methodID,args);
1058 va_start(args,methodID);
1059 functions->CallVoidMethodV(
this,obj,methodID,args);
1064 functions->CallVoidMethodV(
this,obj,methodID,args);
1068 functions->CallVoidMethodA(
this,obj,methodID,args);
1075 va_start(args,methodID);
1076 result =
functions->CallNonvirtualObjectMethodV(
this,obj,clazz,
1083 return functions->CallNonvirtualObjectMethodV(
this,obj,clazz,
1088 return functions->CallNonvirtualObjectMethodA(
this,obj,clazz,
1096 va_start(args,methodID);
1097 result =
functions->CallNonvirtualBooleanMethodV(
this,obj,clazz,
1104 return functions->CallNonvirtualBooleanMethodV(
this,obj,clazz,
1109 return functions->CallNonvirtualBooleanMethodA(
this,obj,clazz,
1117 va_start(args,methodID);
1118 result =
functions->CallNonvirtualByteMethodV(
this,obj,clazz,
1125 return functions->CallNonvirtualByteMethodV(
this,obj,clazz,
1130 return functions->CallNonvirtualByteMethodA(
this,obj,clazz,
1138 va_start(args,methodID);
1139 result =
functions->CallNonvirtualCharMethodV(
this,obj,clazz,
1146 return functions->CallNonvirtualCharMethodV(
this,obj,clazz,
1151 return functions->CallNonvirtualCharMethodA(
this,obj,clazz,
1159 va_start(args,methodID);
1160 result =
functions->CallNonvirtualShortMethodV(
this,obj,clazz,
1167 return functions->CallNonvirtualShortMethodV(
this,obj,clazz,
1172 return functions->CallNonvirtualShortMethodA(
this,obj,clazz,
1180 va_start(args,methodID);
1181 result =
functions->CallNonvirtualIntMethodV(
this,obj,clazz,
1188 return functions->CallNonvirtualIntMethodV(
this,obj,clazz,
1193 return functions->CallNonvirtualIntMethodA(
this,obj,clazz,
1201 va_start(args,methodID);
1202 result =
functions->CallNonvirtualLongMethodV(
this,obj,clazz,
1209 return functions->CallNonvirtualLongMethodV(
this,obj,clazz,
1214 return functions->CallNonvirtualLongMethodA(
this,obj,clazz,
1222 va_start(args,methodID);
1223 result =
functions->CallNonvirtualFloatMethodV(
this,obj,clazz,
1231 return functions->CallNonvirtualFloatMethodV(
this,obj,clazz,
1237 return functions->CallNonvirtualFloatMethodA(
this,obj,clazz,
1245 va_start(args,methodID);
1246 result =
functions->CallNonvirtualDoubleMethodV(
this,obj,clazz,
1254 return functions->CallNonvirtualDoubleMethodV(
this,obj,clazz,
1260 return functions->CallNonvirtualDoubleMethodA(
this,obj,clazz,
1267 va_start(args,methodID);
1268 functions->CallNonvirtualVoidMethodV(
this,obj,clazz,methodID,args);
1274 functions->CallNonvirtualVoidMethodV(
this,obj,clazz,methodID,args);
1279 functions->CallNonvirtualVoidMethodA(
this,obj,clazz,methodID,args);
1284 return functions->GetFieldID(
this,clazz,name,sig);
1288 return functions->GetObjectField(
this,obj,fieldID);
1291 return functions->GetBooleanField(
this,obj,fieldID);
1294 return functions->GetByteField(
this,obj,fieldID);
1297 return functions->GetCharField(
this,obj,fieldID);
1300 return functions->GetShortField(
this,obj,fieldID);
1303 return functions->GetIntField(
this,obj,fieldID);
1306 return functions->GetLongField(
this,obj,fieldID);
1309 return functions->GetFloatField(
this,obj,fieldID);
1312 return functions->GetDoubleField(
this,obj,fieldID);
1316 functions->SetObjectField(
this,obj,fieldID,val);
1320 functions->SetBooleanField(
this,obj,fieldID,val);
1324 functions->SetByteField(
this,obj,fieldID,val);
1328 functions->SetCharField(
this,obj,fieldID,val);
1332 functions->SetShortField(
this,obj,fieldID,val);
1336 functions->SetIntField(
this,obj,fieldID,val);
1340 functions->SetLongField(
this,obj,fieldID,val);
1344 functions->SetFloatField(
this,obj,fieldID,val);
1348 functions->SetDoubleField(
this,obj,fieldID,val);
1353 return functions->GetStaticMethodID(
this,clazz,name,sig);
1360 va_start(args,methodID);
1361 result =
functions->CallStaticObjectMethodV(
this,clazz,methodID,args);
1367 return functions->CallStaticObjectMethodV(
this,clazz,methodID,args);
1371 return functions->CallStaticObjectMethodA(
this,clazz,methodID,args);
1378 va_start(args,methodID);
1379 result =
functions->CallStaticBooleanMethodV(
this,clazz,methodID,args);
1385 return functions->CallStaticBooleanMethodV(
this,clazz,methodID,args);
1389 return functions->CallStaticBooleanMethodA(
this,clazz,methodID,args);
1392 jbyte CallStaticByteMethod(
jclass clazz,
1396 va_start(args,methodID);
1397 result =
functions->CallStaticByteMethodV(
this,clazz,methodID,args);
1401 jbyte CallStaticByteMethodV(
jclass clazz,
1403 return functions->CallStaticByteMethodV(
this,clazz,methodID,args);
1405 jbyte CallStaticByteMethodA(
jclass clazz,
1407 return functions->CallStaticByteMethodA(
this,clazz,methodID,args);
1414 va_start(args,methodID);
1415 result =
functions->CallStaticCharMethodV(
this,clazz,methodID,args);
1421 return functions->CallStaticCharMethodV(
this,clazz,methodID,args);
1425 return functions->CallStaticCharMethodA(
this,clazz,methodID,args);
1432 va_start(args,methodID);
1433 result =
functions->CallStaticShortMethodV(
this,clazz,methodID,args);
1439 return functions->CallStaticShortMethodV(
this,clazz,methodID,args);
1443 return functions->CallStaticShortMethodA(
this,clazz,methodID,args);
1446 jint CallStaticIntMethod(
jclass clazz,
1450 va_start(args,methodID);
1451 result =
functions->CallStaticIntMethodV(
this,clazz,methodID,args);
1455 jint CallStaticIntMethodV(
jclass clazz,
1457 return functions->CallStaticIntMethodV(
this,clazz,methodID,args);
1459 jint CallStaticIntMethodA(
jclass clazz,
1461 return functions->CallStaticIntMethodA(
this,clazz,methodID,args);
1464 jlong CallStaticLongMethod(
jclass clazz,
1468 va_start(args,methodID);
1469 result =
functions->CallStaticLongMethodV(
this,clazz,methodID,args);
1473 jlong CallStaticLongMethodV(
jclass clazz,
1475 return functions->CallStaticLongMethodV(
this,clazz,methodID,args);
1477 jlong CallStaticLongMethodA(
jclass clazz,
1479 return functions->CallStaticLongMethodA(
this,clazz,methodID,args);
1486 va_start(args,methodID);
1487 result =
functions->CallStaticFloatMethodV(
this,clazz,methodID,args);
1493 return functions->CallStaticFloatMethodV(
this,clazz,methodID,args);
1497 return functions->CallStaticFloatMethodA(
this,clazz,methodID,args);
1504 va_start(args,methodID);
1505 result =
functions->CallStaticDoubleMethodV(
this,clazz,methodID,args);
1511 return functions->CallStaticDoubleMethodV(
this,clazz,methodID,args);
1515 return functions->CallStaticDoubleMethodA(
this,clazz,methodID,args);
1520 va_start(args,methodID);
1521 functions->CallStaticVoidMethodV(
this,cls,methodID,args);
1526 functions->CallStaticVoidMethodV(
this,cls,methodID,args);
1530 functions->CallStaticVoidMethodA(
this,cls,methodID,args);
1535 return functions->GetStaticFieldID(
this,clazz,name,sig);
1538 return functions->GetStaticObjectField(
this,clazz,fieldID);
1541 return functions->GetStaticBooleanField(
this,clazz,fieldID);
1544 return functions->GetStaticByteField(
this,clazz,fieldID);
1547 return functions->GetStaticCharField(
this,clazz,fieldID);
1550 return functions->GetStaticShortField(
this,clazz,fieldID);
1553 return functions->GetStaticIntField(
this,clazz,fieldID);
1556 return functions->GetStaticLongField(
this,clazz,fieldID);
1559 return functions->GetStaticFloatField(
this,clazz,fieldID);
1562 return functions->GetStaticDoubleField(
this,clazz,fieldID);
1567 functions->SetStaticObjectField(
this,clazz,fieldID,value);
1571 functions->SetStaticBooleanField(
this,clazz,fieldID,value);
1575 functions->SetStaticByteField(
this,clazz,fieldID,value);
1579 functions->SetStaticCharField(
this,clazz,fieldID,value);
1583 functions->SetStaticShortField(
this,clazz,fieldID,value);
1587 functions->SetStaticIntField(
this,clazz,fieldID,value);
1591 functions->SetStaticLongField(
this,clazz,fieldID,value);
1595 functions->SetStaticFloatField(
this,clazz,fieldID,value);
1599 functions->SetStaticDoubleField(
this,clazz,fieldID,value);
1603 return functions->NewString(
this,unicode,len);
1606 return functions->GetStringLength(
this,str);
1611 void ReleaseStringChars(
jstring str,
const jchar *chars) {
1612 functions->ReleaseStringChars(
this,str,chars);
1615 jstring NewStringUTF(
const char *utf) {
1616 return functions->NewStringUTF(
this,utf);
1619 return functions->GetStringUTFLength(
this,str);
1624 void ReleaseStringUTFChars(
jstring str,
const char* chars) {
1625 functions->ReleaseStringUTFChars(
this,str,chars);
1629 return functions->GetArrayLength(
this,array);
1634 return functions->NewObjectArray(
this,len,clazz,init);
1637 return functions->GetObjectArrayElement(
this,array,index);
1641 functions->SetObjectArrayElement(
this,array,index,val);
1645 return functions->NewBooleanArray(
this,len);
1648 return functions->NewByteArray(
this,len);
1651 return functions->NewCharArray(
this,len);
1654 return functions->NewShortArray(
this,len);
1657 return functions->NewIntArray(
this,len);
1660 return functions->NewLongArray(
this,len);
1663 return functions->NewFloatArray(
this,len);
1666 return functions->NewDoubleArray(
this,len);
1697 functions->ReleaseBooleanArrayElements(
this,array,elems,mode);
1699 void ReleaseByteArrayElements(
jbyteArray array,
1702 functions->ReleaseByteArrayElements(
this,array,elems,mode);
1704 void ReleaseCharArrayElements(
jcharArray array,
1707 functions->ReleaseCharArrayElements(
this,array,elems,mode);
1712 functions->ReleaseShortArrayElements(
this,array,elems,mode);
1714 void ReleaseIntArrayElements(
jintArray array,
1717 functions->ReleaseIntArrayElements(
this,array,elems,mode);
1719 void ReleaseLongArrayElements(
jlongArray array,
1722 functions->ReleaseLongArrayElements(
this,array,elems,mode);
1727 functions->ReleaseFloatArrayElements(
this,array,elems,mode);
1732 functions->ReleaseDoubleArrayElements(
this,array,elems,mode);
1737 functions->GetBooleanArrayRegion(
this,array,start,len,buf);
1741 functions->GetByteArrayRegion(
this,array,start,len,buf);
1745 functions->GetCharArrayRegion(
this,array,start,len,buf);
1749 functions->GetShortArrayRegion(
this,array,start,len,buf);
1753 functions->GetIntArrayRegion(
this,array,start,len,buf);
1757 functions->GetLongArrayRegion(
this,array,start,len,buf);
1761 functions->GetFloatArrayRegion(
this,array,start,len,buf);
1765 functions->GetDoubleArrayRegion(
this,array,start,len,buf);
1770 functions->SetBooleanArrayRegion(
this,array,start,len,buf);
1774 functions->SetByteArrayRegion(
this,array,start,len,buf);
1778 functions->SetCharArrayRegion(
this,array,start,len,buf);
1782 functions->SetShortArrayRegion(
this,array,start,len,buf);
1786 functions->SetIntArrayRegion(
this,array,start,len,buf);
1790 functions->SetLongArrayRegion(
this,array,start,len,buf);
1794 functions->SetFloatArrayRegion(
this,array,start,len,buf);
1798 functions->SetDoubleArrayRegion(
this,array,start,len,buf);
1803 return functions->RegisterNatives(
this,clazz,methods,nMethods);
1805 jint UnregisterNatives(
jclass clazz) {
1806 return functions->UnregisterNatives(
this,clazz);
1809 jint MonitorEnter(
jobject obj) {
1810 return functions->MonitorEnter(
this,obj);
1812 jint MonitorExit(
jobject obj) {
1813 return functions->MonitorExit(
this,obj);
1816 jint GetJavaVM(
JavaVM **vm) {
1821 functions->GetStringRegion(
this,str,start,len,buf);
1824 functions->GetStringUTFRegion(
this,str,start,len,buf);
1827 void * GetPrimitiveArrayCritical(
jarray array,
jboolean *isCopy) {
1830 void ReleasePrimitiveArrayCritical(
jarray array,
void *carray, jint mode) {
1831 functions->ReleasePrimitiveArrayCritical(
this,array,carray,mode);
1837 void ReleaseStringCritical(
jstring string,
const jchar *cstring) {
1838 functions->ReleaseStringCritical(
this,
string,cstring);
1842 return functions->NewWeakGlobalRef(
this,obj);
1844 void DeleteWeakGlobalRef(
jweak ref) {
1845 functions->DeleteWeakGlobalRef(
this,ref);
1852 jobject NewDirectByteBuffer(
void* address, jlong capacity) {
1853 return functions->NewDirectByteBuffer(
this, address, capacity);
1855 void* GetDirectBufferAddress(
jobject buf) {
1858 jlong GetDirectBufferCapacity(
jobject buf) {
1859 return functions->GetDirectBufferCapacity(
this, buf);
1862 return functions->GetObjectRefType(
this, obj);
1868 return functions->GetModule(
this, clazz);
1935 jint DestroyJavaVM() {
1938 jint AttachCurrentThread(
void **penv,
void *args) {
1939 return functions->AttachCurrentThread(
this, penv, args);
1941 jint DetachCurrentThread() {
1942 return functions->DetachCurrentThread(
this);
1945 jint GetEnv(
void **penv, jint version) {
1946 return functions->GetEnv(
this, penv, version);
1948 jint AttachCurrentThreadAsDaemon(
void **penv,
void *args) {
1949 return functions->AttachCurrentThreadAsDaemon(
this, penv, args);
1954#ifdef _JNI_IMPLEMENTATION_
1955#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT
1957#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT
1969JNIEXPORT
jint JNICALL
1972JNIEXPORT
void JNICALL
1975#define JNI_VERSION_1_1 0x00010001
1976#define JNI_VERSION_1_2 0x00010002
1977#define JNI_VERSION_1_4 0x00010004
1978#define JNI_VERSION_1_6 0x00010006
1979#define JNI_VERSION_1_8 0x00010008
1980#define JNI_VERSION_9 0x00090000
1981#define JNI_VERSION_10 0x000a0000
const struct JNINativeInterface_ * JNIEnv
struct _jobject * jobject
_JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args)
enum _jobjectType jobjectRefType
#define _JNI_IMPORT_OR_EXPORT_
const struct JNIInvokeInterface_ * JavaVM
struct _jfieldID * jfieldID
JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved)
struct _jmethodID * jmethodID
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
_JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_GetDefaultJavaVMInitArgs(void *args)
_JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *)
const struct JNINativeInterface_ * functions
jint(JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm
jint(JNICALL *DetachCurrentThread)(JavaVM *vm)
jint(JNICALL *GetEnv)(JavaVM *vm
jint(JNICALL *DestroyJavaVM)(JavaVM *vm)
jlong(JNICALL *CallNonvirtualLongMethod)(JNIEnv *env
jclass jmethodID jint(JNICALL *CallStaticIntMethodV)(JNIEnv *env
void(JNICALL *ReleasePrimitiveArrayCritical)(JNIEnv *env
jclass jmethodID jbyte(JNICALL *CallStaticByteMethodV)(JNIEnv *env
jclass jmethodID jlong(JNICALL *CallStaticLongMethodV)(JNIEnv *env
jclass jmethodID jclass jmethodID va_list args
jobject(JNICALL *PopLocalFrame)(JNIEnv *env
jfieldID(JNICALL *GetFieldID)(JNIEnv *env
jlong(JNICALL *CallLongMethod)(JNIEnv *env
jfieldID(JNICALL *FromReflectedField)(JNIEnv *env
void(JNICALL *ReleaseStringUTFChars)(JNIEnv *env
jobject jclass jmethodID jdouble(JNICALL *CallNonvirtualDoubleMethodV)(JNIEnv *env
jsize jclass jobject init
jobject jclass jmethodID methodID
jchar(JNICALL *GetStaticCharField)(JNIEnv *env
jobject(JNICALL *NewGlobalRef)(JNIEnv *env
jshortArray jsize jsize jshort * buf
jboolean(JNICALL *CallBooleanMethodA)(JNIEnv *env
void(JNICALL *ReleaseCharArrayElements)(JNIEnv *env
jlong(JNICALL *CallNonvirtualLongMethodA)(JNIEnv *env
jshort(JNICALL *CallShortMethod)(JNIEnv *env
void(JNICALL *GetBooleanArrayRegion)(JNIEnv *env
jchar(JNICALL *CallStaticCharMethod)(JNIEnv *env
jobject(JNICALL *GetModule)(JNIEnv *env
jobject jmethodID jobject(JNICALL *CallObjectMethodV)(JNIEnv *env
jsize(JNICALL *GetStringLength)(JNIEnv *env
jclass jmethodID jboolean isStatic
void(JNICALL *SetStaticByteField)(JNIEnv *env
jclass jfieldID jbyte value
jlong(JNICALL *CallStaticLongMethod)(JNIEnv *env
jint(JNICALL *GetStaticIntField)(JNIEnv *env
jint *JNICALL * GetIntArrayElements(JNIEnv *env, jintArray array, jboolean *isCopy)
jbyte(JNICALL *CallByteMethod)(JNIEnv *env
jchar(JNICALL *CallCharMethodA)(JNIEnv *env
void(JNICALL *ReleaseLongArrayElements)(JNIEnv *env
jsize(JNICALL *GetStringUTFLength)(JNIEnv *env
jclass jmethodID jshort(JNICALL *CallStaticShortMethodV)(JNIEnv *env
const char jobject loader
jclass jmethodID const jvalue * args
jobject jmethodID jboolean(JNICALL *CallBooleanMethodV)(JNIEnv *env
jmethodID(JNICALL *GetStaticMethodID)(JNIEnv *env
void(JNICALL *ReleaseBooleanArrayElements)(JNIEnv *env
jsize(JNICALL *GetArrayLength)(JNIEnv *env
void(JNICALL *SetFloatField)(JNIEnv *env
jobject(JNICALL *NewObjectA)(JNIEnv *env
jstring(JNICALL *NewString)(JNIEnv *env
jlong(JNICALL *GetStaticLongField)(JNIEnv *env
jobject jclass jmethodID jint(JNICALL *CallNonvirtualIntMethodV)(JNIEnv *env
const jchar *JNICALL * GetStringCritical(JNIEnv *env, jstring string, jboolean *isCopy)
void(JNICALL *ExceptionDescribe)(JNIEnv *env)
jdoubleArray jsize jsize const jdouble * buf
jbyte(JNICALL *CallNonvirtualByteMethod)(JNIEnv *env
void(JNICALL *SetStaticIntField)(JNIEnv *env
jclass jmethodID void(JNICALL *CallStaticVoidMethodV)(JNIEnv *env
const jchar *JNICALL * GetStringChars(JNIEnv *env, jstring str, jboolean *isCopy)
jstring jsize jsize jchar * buf
jobject jfieldID jfloat val
jbooleanArray jboolean * elems
void(JNICALL *DeleteGlobalRef)(JNIEnv *env
jmethodID(JNICALL *GetMethodID)(JNIEnv *env
jstring const char * chars
jboolean(JNICALL *IsAssignableFrom)(JNIEnv *env
void(JNICALL *SetShortArrayRegion)(JNIEnv *env
jclass jmethodID jfloat(JNICALL *CallStaticFloatMethodV)(JNIEnv *env
jobject jclass jmethodID jbyte(JNICALL *CallNonvirtualByteMethodV)(JNIEnv *env
void(JNICALL *GetShortArrayRegion)(JNIEnv *env
jclass jfieldID jchar value
jfloatArray(JNICALL *NewFloatArray)(JNIEnv *env
void(JNICALL *CallStaticVoidMethod)(JNIEnv *env
jboolean(JNICALL *CallNonvirtualBooleanMethodA)(JNIEnv *env
jcharArray jsize jsize jchar * buf
jobject jclass jmethodID jchar(JNICALL *CallNonvirtualCharMethodV)(JNIEnv *env
jdouble(JNICALL *GetDoubleField)(JNIEnv *env
void(JNICALL *CallStaticVoidMethodA)(JNIEnv *env
jint(JNICALL *Throw)(JNIEnv *env
jlongArray jsize jsize jlong * buf
void(JNICALL *SetIntField)(JNIEnv *env
jboolean(JNICALL *GetBooleanField)(JNIEnv *env
void *JNICALL * GetPrimitiveArrayCritical(JNIEnv *env, jarray array, jboolean *isCopy)
jclass jfieldID jlong value
void(JNICALL *GetFloatArrayRegion)(JNIEnv *env
void(JNICALL *SetBooleanField)(JNIEnv *env
void(JNICALL *SetStaticShortField)(JNIEnv *env
jchar(JNICALL *CallCharMethod)(JNIEnv *env
jobject(JNICALL *GetObjectArrayElement)(JNIEnv *env
jclass const JNINativeMethod * methods
jobject jmethodID jlong(JNICALL *CallLongMethodV)(JNIEnv *env
jclass jfieldID jshort value
void(JNICALL *SetByteField)(JNIEnv *env
void(JNICALL *SetStaticCharField)(JNIEnv *env
jshortArray jsize jsize const jshort * buf
jlong(JNICALL *CallLongMethodA)(JNIEnv *env
jobject(JNICALL *GetStaticObjectField)(JNIEnv *env
jchar(JNICALL *CallStaticCharMethodA)(JNIEnv *env
jobject(JNICALL *CallNonvirtualObjectMethodA)(JNIEnv *env
jboolean(JNICALL *GetStaticBooleanField)(JNIEnv *env
jbyteArray jsize jsize const jbyte * buf
jthrowable(JNICALL *ExceptionOccurred)(JNIEnv *env)
jstring jsize jsize char * buf
jdouble(JNICALL *CallStaticDoubleMethod)(JNIEnv *env
jobject jfieldID jlong val
jshort(JNICALL *CallShortMethodA)(JNIEnv *env
jobjectArray(JNICALL *NewObjectArray)(JNIEnv *env
jobject jfieldID jobject val
jobject jmethodID methodID
jcharArray jsize jsize const jchar * buf
jstring const jchar * cstring
jlongArray jsize jsize const jlong * buf
jclass jfieldID jdouble value
jlong(JNICALL *GetDirectBufferCapacity)(JNIEnv *env
jobject(JNICALL *NewDirectByteBuffer)(JNIEnv *env
jdouble(JNICALL *CallStaticDoubleMethodA)(JNIEnv *env
jobject jfieldID jchar val
jlong(JNICALL *CallStaticLongMethodA)(JNIEnv *env
jclass jmethodID jobject(JNICALL *NewObjectV)(JNIEnv *env
jshort *JNICALL * GetShortArrayElements(JNIEnv *env, jshortArray array, jboolean *isCopy)
jobject jmethodID const jvalue * args
jclass jmethodID jobject(JNICALL *CallStaticObjectMethodV)(JNIEnv *env
jfloat(JNICALL *CallStaticFloatMethodA)(JNIEnv *env
void(JNICALL *SetShortField)(JNIEnv *env
void(JNICALL *SetIntArrayRegion)(JNIEnv *env
jobject jmethodID void(JNICALL *CallVoidMethodV)(JNIEnv *env
jfloat(JNICALL *CallNonvirtualFloatMethod)(JNIEnv *env
jclass jmethodID jchar(JNICALL *CallStaticCharMethodV)(JNIEnv *env
jclass(JNICALL *GetSuperclass)(JNIEnv *env
jobject jclass jmethodID jobject jclass clazz
jobject jclass jmethodID jshort(JNICALL *CallNonvirtualShortMethodV)(JNIEnv *env
jbyte(JNICALL *CallStaticByteMethod)(JNIEnv *env
jbooleanArray jsize start
void(JNICALL *CallNonvirtualVoidMethod)(JNIEnv *env
jobject(JNICALL *ToReflectedField)(JNIEnv *env
jbyte(JNICALL *CallNonvirtualByteMethodA)(JNIEnv *env
jboolean(JNICALL *IsSameObject)(JNIEnv *env
jboolean(JNICALL *CallNonvirtualBooleanMethod)(JNIEnv *env
jdouble(JNICALL *CallNonvirtualDoubleMethod)(JNIEnv *env
jlongArray(JNICALL *NewLongArray)(JNIEnv *env
jfieldID(JNICALL *GetStaticFieldID)(JNIEnv *env
jbooleanArray jsize jsize const jboolean * buf
void(JNICALL *CallVoidMethodA)(JNIEnv *env
jboolean(JNICALL *CallStaticBooleanMethodA)(JNIEnv *env
jobject(JNICALL *NewObject)(JNIEnv *env
void(JNICALL *SetObjectField)(JNIEnv *env
jobject jmethodID jobject jmethodID va_list args
jobject(JNICALL *ToReflectedMethod)(JNIEnv *env
void(JNICALL *SetDoubleArrayRegion)(JNIEnv *env
jobject(JNICALL *CallStaticObjectMethodA)(JNIEnv *env
jclass(JNICALL *GetObjectClass)(JNIEnv *env
void(JNICALL *SetDoubleField)(JNIEnv *env
jint(JNICALL *GetVersion)(JNIEnv *env)
jfloatArray jsize jsize const jfloat * buf
void(JNICALL *SetCharField)(JNIEnv *env
jobject jclass jmethodID const jvalue * args
jboolean *JNICALL * GetBooleanArrayElements(JNIEnv *env, jbooleanArray array, jboolean *isCopy)
jdoubleArray(JNICALL *NewDoubleArray)(JNIEnv *env
const char jobject const jbyte * buf
void(JNICALL *ReleaseShortArrayElements)(JNIEnv *env
jbooleanArray jsize jsize l
jchar *JNICALL * GetCharArrayElements(JNIEnv *env, jcharArray array, jboolean *isCopy)
jbyte(JNICALL *CallStaticByteMethodA)(JNIEnv *env
void(JNICALL *ReleaseStringCritical)(JNIEnv *env
jfloat(JNICALL *CallStaticFloatMethod)(JNIEnv *env
jintArray jsize jsize jint * buf
jobject jfieldID jshort val
void(JNICALL *SetStaticFloatField)(JNIEnv *env
jclass jmethodID jdouble(JNICALL *CallStaticDoubleMethodV)(JNIEnv *env
jlong(JNICALL *GetLongField)(JNIEnv *env
void(JNICALL *ReleaseIntArrayElements)(JNIEnv *env
jclass jmethodID jboolean(JNICALL *CallStaticBooleanMethodV)(JNIEnv *env
void(JNICALL *CallNonvirtualVoidMethodA)(JNIEnv *env
jfloat(JNICALL *CallFloatMethod)(JNIEnv *env
jobjectRefType(JNICALL *GetObjectRefType)(JNIEnv *env
jobject jmethodID jshort(JNICALL *CallShortMethodV)(JNIEnv *env
jobject jclass jmethodID void(JNICALL *CallNonvirtualVoidMethodV)(JNIEnv *env
void(JNICALL *SetStaticDoubleField)(JNIEnv *env
void(JNICALL *SetCharArrayRegion)(JNIEnv *env
jshort(JNICALL *CallNonvirtualShortMethod)(JNIEnv *env
jbyte(JNICALL *GetByteField)(JNIEnv *env
jintArray(JNICALL *NewIntArray)(JNIEnv *env
jbooleanArray jsize jsize jboolean * buf
jlong *JNICALL * GetLongArrayElements(JNIEnv *env, jlongArray array, jboolean *isCopy)
jdoubleArray jsize jsize jdouble * buf
jobject jmethodID jdouble(JNICALL *CallDoubleMethodV)(JNIEnv *env
jobject jclass jmethodID jfloat(JNICALL *CallNonvirtualFloatMethodV)(JNIEnv *env
void(JNICALL *CallVoidMethod)(JNIEnv *env
jfloat *JNICALL * GetFloatArrayElements(JNIEnv *env, jfloatArray array, jboolean *isCopy)
jint(JNICALL *CallStaticIntMethodA)(JNIEnv *env
void(JNICALL *GetIntArrayRegion)(JNIEnv *env
jobject(JNICALL *AllocObject)(JNIEnv *env
jclass jfieldID jint value
const char jobject const jbyte jsize len
jobject(JNICALL *NewLocalRef)(JNIEnv *env
jfloat(JNICALL *GetFloatField)(JNIEnv *env
jclass const JNINativeMethod jint nMethods
jdouble(JNICALL *CallNonvirtualDoubleMethodA)(JNIEnv *env
jobject jmethodID jbyte(JNICALL *CallByteMethodV)(JNIEnv *env
jchar(JNICALL *CallNonvirtualCharMethod)(JNIEnv *env
jchar(JNICALL *GetCharField)(JNIEnv *env
jint(JNICALL *MonitorExit)(JNIEnv *env
jclass jfieldID jboolean value
void *JNICALL * GetDirectBufferAddress(JNIEnv *env, jobject buf)
jobject jmethodID jint(JNICALL *CallIntMethodV)(JNIEnv *env
jshortArray(JNICALL *NewShortArray)(JNIEnv *env
jint(JNICALL *CallNonvirtualIntMethod)(JNIEnv *env
void(JNICALL *ReleaseDoubleArrayElements)(JNIEnv *env
jobjectArray jsize jobject val
void(JNICALL *SetFloatArrayRegion)(JNIEnv *env
jstring const jchar * chars
jdouble *JNICALL * GetDoubleArrayElements(JNIEnv *env, jdoubleArray array, jboolean *isCopy)
jbyteArray(JNICALL *NewByteArray)(JNIEnv *env
void(JNICALL *GetDoubleArrayRegion)(JNIEnv *env
jint(JNICALL *GetJavaVM)(JNIEnv *env
jint(JNICALL *CallIntMethodA)(JNIEnv *env
jclass(JNICALL *FindClass)(JNIEnv *env
void(JNICALL *GetCharArrayRegion)(JNIEnv *env
void(JNICALL *DeleteLocalRef)(JNIEnv *env
jbyte(JNICALL *CallByteMethodA)(JNIEnv *env
jobject jmethodID jchar(JNICALL *CallCharMethodV)(JNIEnv *env
jobject jfieldID jboolean val
void(JNICALL *SetStaticLongField)(JNIEnv *env
void(JNICALL *DeleteWeakGlobalRef)(JNIEnv *env
void(JNICALL *SetLongField)(JNIEnv *env
void(JNICALL *ReleaseByteArrayElements)(JNIEnv *env
jweak(JNICALL *NewWeakGlobalRef)(JNIEnv *env
jshort(JNICALL *GetStaticShortField)(JNIEnv *env
jobject(JNICALL *CallNonvirtualObjectMethod)(JNIEnv *env
jint(JNICALL *CallIntMethod)(JNIEnv *env
jint(JNICALL *CallNonvirtualIntMethodA)(JNIEnv *env
jint(JNICALL *CallStaticIntMethod)(JNIEnv *env
void(JNICALL *ReleaseFloatArrayElements)(JNIEnv *env
void(JNICALL *SetStaticObjectField)(JNIEnv *env
jobject(JNICALL *CallObjectMethodA)(JNIEnv *env
void(JNICALL *GetStringRegion)(JNIEnv *env
jclass jmethodID methodID
void(JNICALL *SetBooleanArrayRegion)(JNIEnv *env
void(JNICALL *GetLongArrayRegion)(JNIEnv *env
jshort(JNICALL *GetShortField)(JNIEnv *env
jobject jmethodID jfloat(JNICALL *CallFloatMethodV)(JNIEnv *env
jboolean(JNICALL *CallBooleanMethod)(JNIEnv *env
jfloatArray jsize jsize jfloat * buf
void(JNICALL *GetByteArrayRegion)(JNIEnv *env
jbyte *JNICALL * GetByteArrayElements(JNIEnv *env, jbyteArray array, jboolean *isCopy)
jobject jfieldID jdouble val
void(JNICALL *SetByteArrayRegion)(JNIEnv *env
jobject jclass jmethodID jobject(JNICALL *CallNonvirtualObjectMethodV)(JNIEnv *env
const char *JNICALL * GetStringUTFChars(JNIEnv *env, jstring str, jboolean *isCopy)
jbooleanArray(JNICALL *NewBooleanArray)(JNIEnv *env
jint(JNICALL *RegisterNatives)(JNIEnv *env
void(JNICALL *GetStringUTFRegion)(JNIEnv *env
jshort(JNICALL *CallStaticShortMethodA)(JNIEnv *env
jstring(JNICALL *NewStringUTF)(JNIEnv *env
jboolean(JNICALL *IsInstanceOf)(JNIEnv *env
jchar(JNICALL *CallNonvirtualCharMethodA)(JNIEnv *env
jint(JNICALL *ThrowNew)(JNIEnv *env
jcharArray(JNICALL *NewCharArray)(JNIEnv *env
jclass(JNICALL *DefineClass)(JNIEnv *env
jobject jfieldID jbyte val
jclass jfieldID jobject value
jobject(JNICALL *CallStaticObjectMethod)(JNIEnv *env
jint(JNICALL *EnsureLocalCapacity)(JNIEnv *env
jfloat(JNICALL *GetStaticFloatField)(JNIEnv *env
jobject jfieldID jint val
jint(JNICALL *UnregisterNatives)(JNIEnv *env
jint(JNICALL *MonitorEnter)(JNIEnv *env
jbyte(JNICALL *GetStaticByteField)(JNIEnv *env
void(JNICALL *ReleaseStringChars)(JNIEnv *env
void(JNICALL *SetObjectArrayElement)(JNIEnv *env
void(JNICALL *FatalError)(JNIEnv *env
jclass jmethodID jclass cls
jdouble(JNICALL *GetStaticDoubleField)(JNIEnv *env
jobject(JNICALL *CallObjectMethod)(JNIEnv *env
jdouble(JNICALL *CallDoubleMethodA)(JNIEnv *env
jdouble(JNICALL *CallDoubleMethod)(JNIEnv *env
void(JNICALL *SetStaticBooleanField)(JNIEnv *env
jfloat(JNICALL *CallFloatMethodA)(JNIEnv *env
jmethodID(JNICALL *FromReflectedMethod)(JNIEnv *env
jint(JNICALL *PushLocalFrame)(JNIEnv *env
jbooleanArray jboolean jint mode
jshort(JNICALL *CallNonvirtualShortMethodA)(JNIEnv *env
void(JNICALL *SetLongArrayRegion)(JNIEnv *env
jboolean(JNICALL *ExceptionCheck)(JNIEnv *env)
jobject jclass jmethodID jlong(JNICALL *CallNonvirtualLongMethodV)(JNIEnv *env
jbyteArray jsize jsize jbyte * buf
jshort(JNICALL *CallStaticShortMethod)(JNIEnv *env
jobject(JNICALL *GetObjectField)(JNIEnv *env
jint(JNICALL *GetIntField)(JNIEnv *env
jboolean(JNICALL *CallStaticBooleanMethod)(JNIEnv *env
jclass const char const char * sig
jintArray jsize jsize const jint * buf
jclass jfieldID jfloat value
void(JNICALL *ExceptionClear)(JNIEnv *env)
jobject jclass jmethodID jboolean(JNICALL *CallNonvirtualBooleanMethodV)(JNIEnv *env
jobject jclass jmethodID jobject jclass jmethodID va_list args
jfloat(JNICALL *CallNonvirtualFloatMethodA)(JNIEnv *env
jboolean ignoreUnrecognized
const struct JNIInvokeInterface_ * functions