jw项目windows环境软件安装
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1987 lines
74 KiB

1 year ago
  1. /*
  2. * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
  3. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4. *
  5. * This code is free software; you can redistribute it and/or modify it
  6. * under the terms of the GNU General Public License version 2 only, as
  7. * published by the Free Software Foundation. Oracle designates this
  8. * particular file as subject to the "Classpath" exception as provided
  9. * by Oracle in the LICENSE file that accompanied this code.
  10. *
  11. * This code is distributed in the hope that it will be useful, but WITHOUT
  12. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  14. * version 2 for more details (a copy is included in the LICENSE file that
  15. * accompanied this code).
  16. *
  17. * You should have received a copy of the GNU General Public License version
  18. * 2 along with this work; if not, write to the Free Software Foundation,
  19. * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20. *
  21. * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22. * or visit www.oracle.com if you need additional information or have any
  23. * questions.
  24. */
  25. /*
  26. * We used part of Netscape's Java Runtime Interface (JRI) as the starting
  27. * point of our design and implementation.
  28. */
  29. /******************************************************************************
  30. * Java Runtime Interface
  31. * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
  32. *****************************************************************************/
  33. #ifndef _JAVASOFT_JNI_H_
  34. #define _JAVASOFT_JNI_H_
  35. #include <stdio.h>
  36. #include <stdarg.h>
  37. /* jni_md.h contains the machine-dependent typedefs for jbyte, jint
  38. and jlong */
  39. #include "jni_md.h"
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. /*
  44. * JNI Types
  45. */
  46. #ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H
  47. typedef unsigned char jboolean;
  48. typedef unsigned short jchar;
  49. typedef short jshort;
  50. typedef float jfloat;
  51. typedef double jdouble;
  52. typedef jint jsize;
  53. #ifdef __cplusplus
  54. class _jobject {};
  55. class _jclass : public _jobject {};
  56. class _jthrowable : public _jobject {};
  57. class _jstring : public _jobject {};
  58. class _jarray : public _jobject {};
  59. class _jbooleanArray : public _jarray {};
  60. class _jbyteArray : public _jarray {};
  61. class _jcharArray : public _jarray {};
  62. class _jshortArray : public _jarray {};
  63. class _jintArray : public _jarray {};
  64. class _jlongArray : public _jarray {};
  65. class _jfloatArray : public _jarray {};
  66. class _jdoubleArray : public _jarray {};
  67. class _jobjectArray : public _jarray {};
  68. typedef _jobject *jobject;
  69. typedef _jclass *jclass;
  70. typedef _jthrowable *jthrowable;
  71. typedef _jstring *jstring;
  72. typedef _jarray *jarray;
  73. typedef _jbooleanArray *jbooleanArray;
  74. typedef _jbyteArray *jbyteArray;
  75. typedef _jcharArray *jcharArray;
  76. typedef _jshortArray *jshortArray;
  77. typedef _jintArray *jintArray;
  78. typedef _jlongArray *jlongArray;
  79. typedef _jfloatArray *jfloatArray;
  80. typedef _jdoubleArray *jdoubleArray;
  81. typedef _jobjectArray *jobjectArray;
  82. #else
  83. struct _jobject;
  84. typedef struct _jobject *jobject;
  85. typedef jobject jclass;
  86. typedef jobject jthrowable;
  87. typedef jobject jstring;
  88. typedef jobject jarray;
  89. typedef jarray jbooleanArray;
  90. typedef jarray jbyteArray;
  91. typedef jarray jcharArray;
  92. typedef jarray jshortArray;
  93. typedef jarray jintArray;
  94. typedef jarray jlongArray;
  95. typedef jarray jfloatArray;
  96. typedef jarray jdoubleArray;
  97. typedef jarray jobjectArray;
  98. #endif
  99. typedef jobject jweak;
  100. typedef union jvalue {
  101. jboolean z;
  102. jbyte b;
  103. jchar c;
  104. jshort s;
  105. jint i;
  106. jlong j;
  107. jfloat f;
  108. jdouble d;
  109. jobject l;
  110. } jvalue;
  111. struct _jfieldID;
  112. typedef struct _jfieldID *jfieldID;
  113. struct _jmethodID;
  114. typedef struct _jmethodID *jmethodID;
  115. /* Return values from jobjectRefType */
  116. typedef enum _jobjectType {
  117. JNIInvalidRefType = 0,
  118. JNILocalRefType = 1,
  119. JNIGlobalRefType = 2,
  120. JNIWeakGlobalRefType = 3
  121. } jobjectRefType;
  122. #endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */
  123. /*
  124. * jboolean constants
  125. */
  126. #define JNI_FALSE 0
  127. #define JNI_TRUE 1
  128. /*
  129. * possible return values for JNI functions.
  130. */
  131. #define JNI_OK 0 /* success */
  132. #define JNI_ERR (-1) /* unknown error */
  133. #define JNI_EDETACHED (-2) /* thread detached from the VM */
  134. #define JNI_EVERSION (-3) /* JNI version error */
  135. #define JNI_ENOMEM (-4) /* not enough memory */
  136. #define JNI_EEXIST (-5) /* VM already created */
  137. #define JNI_EINVAL (-6) /* invalid arguments */
  138. /*
  139. * used in ReleaseScalarArrayElements
  140. */
  141. #define JNI_COMMIT 1
  142. #define JNI_ABORT 2
  143. /*
  144. * used in RegisterNatives to describe native method name, signature,
  145. * and function pointer.
  146. */
  147. typedef struct {
  148. char *name;
  149. char *signature;
  150. void *fnPtr;
  151. } JNINativeMethod;
  152. /*
  153. * JNI Native Method Interface.
  154. */
  155. struct JNINativeInterface_;
  156. struct JNIEnv_;
  157. #ifdef __cplusplus
  158. typedef JNIEnv_ JNIEnv;
  159. #else
  160. typedef const struct JNINativeInterface_ *JNIEnv;
  161. #endif
  162. /*
  163. * JNI Invocation Interface.
  164. */
  165. struct JNIInvokeInterface_;
  166. struct JavaVM_;
  167. #ifdef __cplusplus
  168. typedef JavaVM_ JavaVM;
  169. #else
  170. typedef const struct JNIInvokeInterface_ *JavaVM;
  171. #endif
  172. struct JNINativeInterface_ {
  173. void *reserved0;
  174. void *reserved1;
  175. void *reserved2;
  176. void *reserved3;
  177. jint (JNICALL *GetVersion)(JNIEnv *env);
  178. jclass (JNICALL *DefineClass)
  179. (JNIEnv *env, const char *name, jobject loader, const jbyte *buf,
  180. jsize len);
  181. jclass (JNICALL *FindClass)
  182. (JNIEnv *env, const char *name);
  183. jmethodID (JNICALL *FromReflectedMethod)
  184. (JNIEnv *env, jobject method);
  185. jfieldID (JNICALL *FromReflectedField)
  186. (JNIEnv *env, jobject field);
  187. jobject (JNICALL *ToReflectedMethod)
  188. (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);
  189. jclass (JNICALL *GetSuperclass)
  190. (JNIEnv *env, jclass sub);
  191. jboolean (JNICALL *IsAssignableFrom)
  192. (JNIEnv *env, jclass sub, jclass sup);
  193. jobject (JNICALL *ToReflectedField)
  194. (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);
  195. jint (JNICALL *Throw)
  196. (JNIEnv *env, jthrowable obj);
  197. jint (JNICALL *ThrowNew)
  198. (JNIEnv *env, jclass clazz, const char *msg);
  199. jthrowable (JNICALL *ExceptionOccurred)
  200. (JNIEnv *env);
  201. void (JNICALL *ExceptionDescribe)
  202. (JNIEnv *env);
  203. void (JNICALL *ExceptionClear)
  204. (JNIEnv *env);
  205. void (JNICALL *FatalError)
  206. (JNIEnv *env, const char *msg);
  207. jint (JNICALL *PushLocalFrame)
  208. (JNIEnv *env, jint capacity);
  209. jobject (JNICALL *PopLocalFrame)
  210. (JNIEnv *env, jobject result);
  211. jobject (JNICALL *NewGlobalRef)
  212. (JNIEnv *env, jobject lobj);
  213. void (JNICALL *DeleteGlobalRef)
  214. (JNIEnv *env, jobject gref);
  215. void (JNICALL *DeleteLocalRef)
  216. (JNIEnv *env, jobject obj);
  217. jboolean (JNICALL *IsSameObject)
  218. (JNIEnv *env, jobject obj1, jobject obj2);
  219. jobject (JNICALL *NewLocalRef)
  220. (JNIEnv *env, jobject ref);
  221. jint (JNICALL *EnsureLocalCapacity)
  222. (JNIEnv *env, jint capacity);
  223. jobject (JNICALL *AllocObject)
  224. (JNIEnv *env, jclass clazz);
  225. jobject (JNICALL *NewObject)
  226. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  227. jobject (JNICALL *NewObjectV)
  228. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  229. jobject (JNICALL *NewObjectA)
  230. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  231. jclass (JNICALL *GetObjectClass)
  232. (JNIEnv *env, jobject obj);
  233. jboolean (JNICALL *IsInstanceOf)
  234. (JNIEnv *env, jobject obj, jclass clazz);
  235. jmethodID (JNICALL *GetMethodID)
  236. (JNIEnv *env, jclass clazz, const char *name, const char *sig);
  237. jobject (JNICALL *CallObjectMethod)
  238. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  239. jobject (JNICALL *CallObjectMethodV)
  240. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  241. jobject (JNICALL *CallObjectMethodA)
  242. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
  243. jboolean (JNICALL *CallBooleanMethod)
  244. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  245. jboolean (JNICALL *CallBooleanMethodV)
  246. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  247. jboolean (JNICALL *CallBooleanMethodA)
  248. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
  249. jbyte (JNICALL *CallByteMethod)
  250. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  251. jbyte (JNICALL *CallByteMethodV)
  252. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  253. jbyte (JNICALL *CallByteMethodA)
  254. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
  255. jchar (JNICALL *CallCharMethod)
  256. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  257. jchar (JNICALL *CallCharMethodV)
  258. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  259. jchar (JNICALL *CallCharMethodA)
  260. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
  261. jshort (JNICALL *CallShortMethod)
  262. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  263. jshort (JNICALL *CallShortMethodV)
  264. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  265. jshort (JNICALL *CallShortMethodA)
  266. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
  267. jint (JNICALL *CallIntMethod)
  268. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  269. jint (JNICALL *CallIntMethodV)
  270. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  271. jint (JNICALL *CallIntMethodA)
  272. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
  273. jlong (JNICALL *CallLongMethod)
  274. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  275. jlong (JNICALL *CallLongMethodV)
  276. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  277. jlong (JNICALL *CallLongMethodA)
  278. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
  279. jfloat (JNICALL *CallFloatMethod)
  280. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  281. jfloat (JNICALL *CallFloatMethodV)
  282. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  283. jfloat (JNICALL *CallFloatMethodA)
  284. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
  285. jdouble (JNICALL *CallDoubleMethod)
  286. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  287. jdouble (JNICALL *CallDoubleMethodV)
  288. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  289. jdouble (JNICALL *CallDoubleMethodA)
  290. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
  291. void (JNICALL *CallVoidMethod)
  292. (JNIEnv *env, jobject obj, jmethodID methodID, ...);
  293. void (JNICALL *CallVoidMethodV)
  294. (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
  295. void (JNICALL *CallVoidMethodA)
  296. (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
  297. jobject (JNICALL *CallNonvirtualObjectMethod)
  298. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  299. jobject (JNICALL *CallNonvirtualObjectMethodV)
  300. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  301. va_list args);
  302. jobject (JNICALL *CallNonvirtualObjectMethodA)
  303. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  304. const jvalue * args);
  305. jboolean (JNICALL *CallNonvirtualBooleanMethod)
  306. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  307. jboolean (JNICALL *CallNonvirtualBooleanMethodV)
  308. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  309. va_list args);
  310. jboolean (JNICALL *CallNonvirtualBooleanMethodA)
  311. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  312. const jvalue * args);
  313. jbyte (JNICALL *CallNonvirtualByteMethod)
  314. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  315. jbyte (JNICALL *CallNonvirtualByteMethodV)
  316. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  317. va_list args);
  318. jbyte (JNICALL *CallNonvirtualByteMethodA)
  319. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  320. const jvalue *args);
  321. jchar (JNICALL *CallNonvirtualCharMethod)
  322. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  323. jchar (JNICALL *CallNonvirtualCharMethodV)
  324. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  325. va_list args);
  326. jchar (JNICALL *CallNonvirtualCharMethodA)
  327. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  328. const jvalue *args);
  329. jshort (JNICALL *CallNonvirtualShortMethod)
  330. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  331. jshort (JNICALL *CallNonvirtualShortMethodV)
  332. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  333. va_list args);
  334. jshort (JNICALL *CallNonvirtualShortMethodA)
  335. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  336. const jvalue *args);
  337. jint (JNICALL *CallNonvirtualIntMethod)
  338. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  339. jint (JNICALL *CallNonvirtualIntMethodV)
  340. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  341. va_list args);
  342. jint (JNICALL *CallNonvirtualIntMethodA)
  343. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  344. const jvalue *args);
  345. jlong (JNICALL *CallNonvirtualLongMethod)
  346. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  347. jlong (JNICALL *CallNonvirtualLongMethodV)
  348. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  349. va_list args);
  350. jlong (JNICALL *CallNonvirtualLongMethodA)
  351. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  352. const jvalue *args);
  353. jfloat (JNICALL *CallNonvirtualFloatMethod)
  354. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  355. jfloat (JNICALL *CallNonvirtualFloatMethodV)
  356. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  357. va_list args);
  358. jfloat (JNICALL *CallNonvirtualFloatMethodA)
  359. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  360. const jvalue *args);
  361. jdouble (JNICALL *CallNonvirtualDoubleMethod)
  362. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  363. jdouble (JNICALL *CallNonvirtualDoubleMethodV)
  364. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  365. va_list args);
  366. jdouble (JNICALL *CallNonvirtualDoubleMethodA)
  367. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  368. const jvalue *args);
  369. void (JNICALL *CallNonvirtualVoidMethod)
  370. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
  371. void (JNICALL *CallNonvirtualVoidMethodV)
  372. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  373. va_list args);
  374. void (JNICALL *CallNonvirtualVoidMethodA)
  375. (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
  376. const jvalue * args);
  377. jfieldID (JNICALL *GetFieldID)
  378. (JNIEnv *env, jclass clazz, const char *name, const char *sig);
  379. jobject (JNICALL *GetObjectField)
  380. (JNIEnv *env, jobject obj, jfieldID fieldID);
  381. jboolean (JNICALL *GetBooleanField)
  382. (JNIEnv *env, jobject obj, jfieldID fieldID);
  383. jbyte (JNICALL *GetByteField)
  384. (JNIEnv *env, jobject obj, jfieldID fieldID);
  385. jchar (JNICALL *GetCharField)
  386. (JNIEnv *env, jobject obj, jfieldID fieldID);
  387. jshort (JNICALL *GetShortField)
  388. (JNIEnv *env, jobject obj, jfieldID fieldID);
  389. jint (JNICALL *GetIntField)
  390. (JNIEnv *env, jobject obj, jfieldID fieldID);
  391. jlong (JNICALL *GetLongField)
  392. (JNIEnv *env, jobject obj, jfieldID fieldID);
  393. jfloat (JNICALL *GetFloatField)
  394. (JNIEnv *env, jobject obj, jfieldID fieldID);
  395. jdouble (JNICALL *GetDoubleField)
  396. (JNIEnv *env, jobject obj, jfieldID fieldID);
  397. void (JNICALL *SetObjectField)
  398. (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val);
  399. void (JNICALL *SetBooleanField)
  400. (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val);
  401. void (JNICALL *SetByteField)
  402. (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val);
  403. void (JNICALL *SetCharField)
  404. (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val);
  405. void (JNICALL *SetShortField)
  406. (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val);
  407. void (JNICALL *SetIntField)
  408. (JNIEnv *env, jobject obj, jfieldID fieldID, jint val);
  409. void (JNICALL *SetLongField)
  410. (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val);
  411. void (JNICALL *SetFloatField)
  412. (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val);
  413. void (JNICALL *SetDoubleField)
  414. (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val);
  415. jmethodID (JNICALL *GetStaticMethodID)
  416. (JNIEnv *env, jclass clazz, const char *name, const char *sig);
  417. jobject (JNICALL *CallStaticObjectMethod)
  418. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  419. jobject (JNICALL *CallStaticObjectMethodV)
  420. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  421. jobject (JNICALL *CallStaticObjectMethodA)
  422. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  423. jboolean (JNICALL *CallStaticBooleanMethod)
  424. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  425. jboolean (JNICALL *CallStaticBooleanMethodV)
  426. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  427. jboolean (JNICALL *CallStaticBooleanMethodA)
  428. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  429. jbyte (JNICALL *CallStaticByteMethod)
  430. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  431. jbyte (JNICALL *CallStaticByteMethodV)
  432. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  433. jbyte (JNICALL *CallStaticByteMethodA)
  434. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  435. jchar (JNICALL *CallStaticCharMethod)
  436. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  437. jchar (JNICALL *CallStaticCharMethodV)
  438. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  439. jchar (JNICALL *CallStaticCharMethodA)
  440. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  441. jshort (JNICALL *CallStaticShortMethod)
  442. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  443. jshort (JNICALL *CallStaticShortMethodV)
  444. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  445. jshort (JNICALL *CallStaticShortMethodA)
  446. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  447. jint (JNICALL *CallStaticIntMethod)
  448. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  449. jint (JNICALL *CallStaticIntMethodV)
  450. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  451. jint (JNICALL *CallStaticIntMethodA)
  452. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  453. jlong (JNICALL *CallStaticLongMethod)
  454. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  455. jlong (JNICALL *CallStaticLongMethodV)
  456. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  457. jlong (JNICALL *CallStaticLongMethodA)
  458. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  459. jfloat (JNICALL *CallStaticFloatMethod)
  460. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  461. jfloat (JNICALL *CallStaticFloatMethodV)
  462. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  463. jfloat (JNICALL *CallStaticFloatMethodA)
  464. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  465. jdouble (JNICALL *CallStaticDoubleMethod)
  466. (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
  467. jdouble (JNICALL *CallStaticDoubleMethodV)
  468. (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
  469. jdouble (JNICALL *CallStaticDoubleMethodA)
  470. (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
  471. void (JNICALL *CallStaticVoidMethod)
  472. (JNIEnv *env, jclass cls, jmethodID methodID, ...);
  473. void (JNICALL *CallStaticVoidMethodV)
  474. (JNIEnv *env, jclass cls, jmethodID methodID, va_list args);
  475. void (JNICALL *CallStaticVoidMethodA)
  476. (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args);
  477. jfieldID (JNICALL *GetStaticFieldID)
  478. (JNIEnv *env, jclass clazz, const char *name, const char *sig);
  479. jobject (JNICALL *GetStaticObjectField)
  480. (JNIEnv *env, jclass clazz, jfieldID fieldID);
  481. jboolean (JNICALL *GetStaticBooleanField)
  482. (JNIEnv *env, jclass clazz, jfieldID fieldID);
  483. jbyte (JNICALL *GetStaticByteField)
  484. (JNIEnv *env, jclass clazz, jfieldID fieldID);
  485. jchar (JNICALL *GetStaticCharField)
  486. (JNIEnv *env, jclass clazz, jfieldID fieldID);
  487. jshort (JNICALL *GetStaticShortField)
  488. (JNIEnv *env, jclass clazz, jfieldID fieldID);
  489. jint (JNICALL *GetStaticIntField)
  490. (JNIEnv *env, jclass clazz, jfieldID fieldID);
  491. jlong (JNICALL *GetStaticLongField)
  492. (JNIEnv *env, jclass clazz, jfieldID fieldID);
  493. jfloat (JNICALL *GetStaticFloatField)
  494. (JNIEnv *env, jclass clazz, jfieldID fieldID);
  495. jdouble (JNICALL *GetStaticDoubleField)
  496. (JNIEnv *env, jclass clazz, jfieldID fieldID);
  497. void (JNICALL *SetStaticObjectField)
  498. (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value);
  499. void (JNICALL *SetStaticBooleanField)
  500. (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value);
  501. void (JNICALL *SetStaticByteField)
  502. (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value);
  503. void (JNICALL *SetStaticCharField)
  504. (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value);
  505. void (JNICALL *SetStaticShortField)
  506. (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value);
  507. void (JNICALL *SetStaticIntField)
  508. (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value);
  509. void (JNICALL *SetStaticLongField)
  510. (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value);
  511. void (JNICALL *SetStaticFloatField)
  512. (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value);
  513. void (JNICALL *SetStaticDoubleField)
  514. (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value);
  515. jstring (JNICALL *NewString)
  516. (JNIEnv *env, const jchar *unicode, jsize len);
  517. jsize (JNICALL *GetStringLength)
  518. (JNIEnv *env, jstring str);
  519. const jchar *(JNICALL *GetStringChars)
  520. (JNIEnv *env, jstring str, jboolean *isCopy);
  521. void (JNICALL *ReleaseStringChars)
  522. (JNIEnv *env, jstring str, const jchar *chars);
  523. jstring (JNICALL *NewStringUTF)
  524. (JNIEnv *env, const char *utf);
  525. jsize (JNICALL *GetStringUTFLength)
  526. (JNIEnv *env, jstring str);
  527. const char* (JNICALL *GetStringUTFChars)
  528. (JNIEnv *env, jstring str, jboolean *isCopy);
  529. void (JNICALL *ReleaseStringUTFChars)
  530. (JNIEnv *env, jstring str, const char* chars);
  531. jsize (JNICALL *GetArrayLength)
  532. (JNIEnv *env, jarray array);
  533. jobjectArray (JNICALL *NewObjectArray)
  534. (JNIEnv *env, jsize len, jclass clazz, jobject init);
  535. jobject (JNICALL *GetObjectArrayElement)
  536. (JNIEnv *env, jobjectArray array, jsize index);
  537. void (JNICALL *SetObjectArrayElement)
  538. (JNIEnv *env, jobjectArray array, jsize index, jobject val);
  539. jbooleanArray (JNICALL *NewBooleanArray)
  540. (JNIEnv *env, jsize len);
  541. jbyteArray (JNICALL *NewByteArray)
  542. (JNIEnv *env, jsize len);
  543. jcharArray (JNICALL *NewCharArray)
  544. (JNIEnv *env, jsize len);
  545. jshortArray (JNICALL *NewShortArray)
  546. (JNIEnv *env, jsize len);
  547. jintArray (JNICALL *NewIntArray)
  548. (JNIEnv *env, jsize len);
  549. jlongArray (JNICALL *NewLongArray)
  550. (JNIEnv *env, jsize len);
  551. jfloatArray (JNICALL *NewFloatArray)
  552. (JNIEnv *env, jsize len);
  553. jdoubleArray (JNICALL *NewDoubleArray)
  554. (JNIEnv *env, jsize len);
  555. jboolean * (JNICALL *GetBooleanArrayElements)
  556. (JNIEnv *env, jbooleanArray array, jboolean *isCopy);
  557. jbyte * (JNICALL *GetByteArrayElements)
  558. (JNIEnv *env, jbyteArray array, jboolean *isCopy);
  559. jchar * (JNICALL *GetCharArrayElements)
  560. (JNIEnv *env, jcharArray array, jboolean *isCopy);
  561. jshort * (JNICALL *GetShortArrayElements)
  562. (JNIEnv *env, jshortArray array, jboolean *isCopy);
  563. jint * (JNICALL *GetIntArrayElements)
  564. (JNIEnv *env, jintArray array, jboolean *isCopy);
  565. jlong * (JNICALL *GetLongArrayElements)
  566. (JNIEnv *env, jlongArray array, jboolean *isCopy);
  567. jfloat * (JNICALL *GetFloatArrayElements)
  568. (JNIEnv *env, jfloatArray array, jboolean *isCopy);
  569. jdouble * (JNICALL *GetDoubleArrayElements)
  570. (JNIEnv *env, jdoubleArray array, jboolean *isCopy);
  571. void (JNICALL *ReleaseBooleanArrayElements)
  572. (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode);
  573. void (JNICALL *ReleaseByteArrayElements)
  574. (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode);
  575. void (JNICALL *ReleaseCharArrayElements)
  576. (JNIEnv *env, jcharArray array, jchar *elems, jint mode);
  577. void (JNICALL *ReleaseShortArrayElements)
  578. (JNIEnv *env, jshortArray array, jshort *elems, jint mode);
  579. void (JNICALL *ReleaseIntArrayElements)
  580. (JNIEnv *env, jintArray array, jint *elems, jint mode);
  581. void (JNICALL *ReleaseLongArrayElements)
  582. (JNIEnv *env, jlongArray array, jlong *elems, jint mode);
  583. void (JNICALL *ReleaseFloatArrayElements)
  584. (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode);
  585. void (JNICALL *ReleaseDoubleArrayElements)
  586. (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode);
  587. void (JNICALL *GetBooleanArrayRegion)
  588. (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf);
  589. void (JNICALL *GetByteArrayRegion)
  590. (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf);
  591. void (JNICALL *GetCharArrayRegion)
  592. (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf);
  593. void (JNICALL *GetShortArrayRegion)
  594. (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf);
  595. void (JNICALL *GetIntArrayRegion)
  596. (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf);
  597. void (JNICALL *GetLongArrayRegion)
  598. (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf);
  599. void (JNICALL *GetFloatArrayRegion)
  600. (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf);
  601. void (JNICALL *GetDoubleArrayRegion)
  602. (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf);
  603. void (JNICALL *SetBooleanArrayRegion)
  604. (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf);
  605. void (JNICALL *SetByteArrayRegion)
  606. (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf);
  607. void (JNICALL *SetCharArrayRegion)
  608. (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf);
  609. void (JNICALL *SetShortArrayRegion)
  610. (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf);
  611. void (JNICALL *SetIntArrayRegion)
  612. (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf);
  613. void (JNICALL *SetLongArrayRegion)
  614. (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf);
  615. void (JNICALL *SetFloatArrayRegion)
  616. (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf);
  617. void (JNICALL *SetDoubleArrayRegion)
  618. (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf);
  619. jint (JNICALL *RegisterNatives)
  620. (JNIEnv *env, jclass clazz, const JNINativeMethod *methods,
  621. jint nMethods);
  622. jint (JNICALL *UnregisterNatives)
  623. (JNIEnv *env, jclass clazz);
  624. jint (JNICALL *MonitorEnter)
  625. (JNIEnv *env, jobject obj);
  626. jint (JNICALL *MonitorExit)
  627. (JNIEnv *env, jobject obj);
  628. jint (JNICALL *GetJavaVM)
  629. (JNIEnv *env, JavaVM **vm);
  630. void (JNICALL *GetStringRegion)
  631. (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf);
  632. void (JNICALL *GetStringUTFRegion)
  633. (JNIEnv *env, jstring str, jsize start, jsize len, char *buf);
  634. void * (JNICALL *GetPrimitiveArrayCritical)
  635. (JNIEnv *env, jarray array, jboolean *isCopy);
  636. void (JNICALL *ReleasePrimitiveArrayCritical)
  637. (JNIEnv *env, jarray array, void *carray, jint mode);
  638. const jchar * (JNICALL *GetStringCritical)
  639. (JNIEnv *env, jstring string, jboolean *isCopy);
  640. void (JNICALL *ReleaseStringCritical)
  641. (JNIEnv *env, jstring string, const jchar *cstring);
  642. jweak (JNICALL *NewWeakGlobalRef)
  643. (JNIEnv *env, jobject obj);
  644. void (JNICALL *DeleteWeakGlobalRef)
  645. (JNIEnv *env, jweak ref);
  646. jboolean (JNICALL *ExceptionCheck)
  647. (JNIEnv *env);
  648. jobject (JNICALL *NewDirectByteBuffer)
  649. (JNIEnv* env, void* address, jlong capacity);
  650. void* (JNICALL *GetDirectBufferAddress)
  651. (JNIEnv* env, jobject buf);
  652. jlong (JNICALL *GetDirectBufferCapacity)
  653. (JNIEnv* env, jobject buf);
  654. /* New JNI 1.6 Features */
  655. jobjectRefType (JNICALL *GetObjectRefType)
  656. (JNIEnv* env, jobject obj);
  657. /* Module Features */
  658. jobject (JNICALL *GetModule)
  659. (JNIEnv* env, jclass clazz);
  660. };
  661. /*
  662. * We use inlined functions for C++ so that programmers can write:
  663. *
  664. * env->FindClass("java/lang/String")
  665. *
  666. * in C++ rather than:
  667. *
  668. * (*env)->FindClass(env, "java/lang/String")
  669. *
  670. * in C.
  671. */
  672. struct JNIEnv_ {
  673. const struct JNINativeInterface_ *functions;
  674. #ifdef __cplusplus
  675. jint GetVersion() {
  676. return functions->GetVersion(this);
  677. }
  678. jclass DefineClass(const char *name, jobject loader, const jbyte *buf,
  679. jsize len) {
  680. return functions->DefineClass(this, name, loader, buf, len);
  681. }
  682. jclass FindClass(const char *name) {
  683. return functions->FindClass(this, name);
  684. }
  685. jmethodID FromReflectedMethod(jobject method) {
  686. return functions->FromReflectedMethod(this,method);
  687. }
  688. jfieldID FromReflectedField(jobject field) {
  689. return functions->FromReflectedField(this,field);
  690. }
  691. jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) {
  692. return functions->ToReflectedMethod(this, cls, methodID, isStatic);
  693. }
  694. jclass GetSuperclass(jclass sub) {
  695. return functions->GetSuperclass(this, sub);
  696. }
  697. jboolean IsAssignableFrom(jclass sub, jclass sup) {
  698. return functions->IsAssignableFrom(this, sub, sup);
  699. }
  700. jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) {
  701. return functions->ToReflectedField(this,cls,fieldID,isStatic);
  702. }
  703. jint Throw(jthrowable obj) {
  704. return functions->Throw(this, obj);
  705. }
  706. jint ThrowNew(jclass clazz, const char *msg) {
  707. return functions->ThrowNew(this, clazz, msg);
  708. }
  709. jthrowable ExceptionOccurred() {
  710. return functions->ExceptionOccurred(this);
  711. }
  712. void ExceptionDescribe() {
  713. functions->ExceptionDescribe(this);
  714. }
  715. void ExceptionClear() {
  716. functions->ExceptionClear(this);
  717. }
  718. void FatalError(const char *msg) {
  719. functions->FatalError(this, msg);
  720. }
  721. jint PushLocalFrame(jint capacity) {
  722. return functions->PushLocalFrame(this,capacity);
  723. }
  724. jobject PopLocalFrame(jobject result) {
  725. return functions->PopLocalFrame(this,result);
  726. }
  727. jobject NewGlobalRef(jobject lobj) {
  728. return functions->NewGlobalRef(this,lobj);
  729. }
  730. void DeleteGlobalRef(jobject gref) {
  731. functions->DeleteGlobalRef(this,gref);
  732. }
  733. void DeleteLocalRef(jobject obj) {
  734. functions->DeleteLocalRef(this, obj);
  735. }
  736. jboolean IsSameObject(jobject obj1, jobject obj2) {
  737. return functions->IsSameObject(this,obj1,obj2);
  738. }
  739. jobject NewLocalRef(jobject ref) {
  740. return functions->NewLocalRef(this,ref);
  741. }
  742. jint EnsureLocalCapacity(jint capacity) {
  743. return functions->EnsureLocalCapacity(this,capacity);
  744. }
  745. jobject AllocObject(jclass clazz) {
  746. return functions->AllocObject(this,clazz);
  747. }
  748. jobject NewObject(jclass clazz, jmethodID methodID, ...) {
  749. va_list args;
  750. jobject result;
  751. va_start(args, methodID);
  752. result = functions->NewObjectV(this,clazz,methodID,args);
  753. va_end(args);
  754. return result;
  755. }
  756. jobject NewObjectV(jclass clazz, jmethodID methodID,
  757. va_list args) {
  758. return functions->NewObjectV(this,clazz,methodID,args);
  759. }
  760. jobject NewObjectA(jclass clazz, jmethodID methodID,
  761. const jvalue *args) {
  762. return functions->NewObjectA(this,clazz,methodID,args);
  763. }
  764. jclass GetObjectClass(jobject obj) {
  765. return functions->GetObjectClass(this,obj);
  766. }
  767. jboolean IsInstanceOf(jobject obj, jclass clazz) {
  768. return functions->IsInstanceOf(this,obj,clazz);
  769. }
  770. jmethodID GetMethodID(jclass clazz, const char *name,
  771. const char *sig) {
  772. return functions->GetMethodID(this,clazz,name,sig);
  773. }
  774. jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) {
  775. va_list args;
  776. jobject result;
  777. va_start(args,methodID);
  778. result = functions->CallObjectMethodV(this,obj,methodID,args);
  779. va_end(args);
  780. return result;
  781. }
  782. jobject CallObjectMethodV(jobject obj, jmethodID methodID,
  783. va_list args) {
  784. return functions->CallObjectMethodV(this,obj,methodID,args);
  785. }
  786. jobject CallObjectMethodA(jobject obj, jmethodID methodID,
  787. const jvalue * args) {
  788. return functions->CallObjectMethodA(this,obj,methodID,args);
  789. }
  790. jboolean CallBooleanMethod(jobject obj,
  791. jmethodID methodID, ...) {
  792. va_list args;
  793. jboolean result;
  794. va_start(args,methodID);
  795. result = functions->CallBooleanMethodV(this,obj,methodID,args);
  796. va_end(args);
  797. return result;
  798. }
  799. jboolean CallBooleanMethodV(jobject obj, jmethodID methodID,
  800. va_list args) {
  801. return functions->CallBooleanMethodV(this,obj,methodID,args);
  802. }
  803. jboolean CallBooleanMethodA(jobject obj, jmethodID methodID,
  804. const jvalue * args) {
  805. return functions->CallBooleanMethodA(this,obj,methodID, args);
  806. }
  807. jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) {
  808. va_list args;
  809. jbyte result;
  810. va_start(args,methodID);
  811. result = functions->CallByteMethodV(this,obj,methodID,args);
  812. va_end(args);
  813. return result;
  814. }
  815. jbyte CallByteMethodV(jobject obj, jmethodID methodID,
  816. va_list args) {
  817. return functions->CallByteMethodV(this,obj,methodID,args);
  818. }
  819. jbyte CallByteMethodA(jobject obj, jmethodID methodID,
  820. const jvalue * args) {
  821. return functions->CallByteMethodA(this,obj,methodID,args);
  822. }
  823. jchar CallCharMethod(jobject obj, jmethodID methodID, ...) {
  824. va_list args;
  825. jchar result;
  826. va_start(args,methodID);
  827. result = functions->CallCharMethodV(this,obj,methodID,args);
  828. va_end(args);
  829. return result;
  830. }
  831. jchar CallCharMethodV(jobject obj, jmethodID methodID,
  832. va_list args) {
  833. return functions->CallCharMethodV(this,obj,methodID,args);
  834. }
  835. jchar CallCharMethodA(jobject obj, jmethodID methodID,
  836. const jvalue * args) {
  837. return functions->CallCharMethodA(this,obj,methodID,args);
  838. }
  839. jshort CallShortMethod(jobject obj, jmethodID methodID, ...) {
  840. va_list args;
  841. jshort result;
  842. va_start(args,methodID);
  843. result = functions->CallShortMethodV(this,obj,methodID,args);
  844. va_end(args);
  845. return result;
  846. }
  847. jshort CallShortMethodV(jobject obj, jmethodID methodID,
  848. va_list args) {
  849. return functions->CallShortMethodV(this,obj,methodID,args);
  850. }
  851. jshort CallShortMethodA(jobject obj, jmethodID methodID,
  852. const jvalue * args) {
  853. return functions->CallShortMethodA(this,obj,methodID,args);
  854. }
  855. jint CallIntMethod(jobject obj, jmethodID methodID, ...) {
  856. va_list args;
  857. jint result;
  858. va_start(args,methodID);
  859. result = functions->CallIntMethodV(this,obj,methodID,args);
  860. va_end(args);
  861. return result;
  862. }
  863. jint CallIntMethodV(jobject obj, jmethodID methodID,
  864. va_list args) {
  865. return functions->CallIntMethodV(this,obj,methodID,args);
  866. }
  867. jint CallIntMethodA(jobject obj, jmethodID methodID,
  868. const jvalue * args) {
  869. return functions->CallIntMethodA(this,obj,methodID,args);
  870. }
  871. jlong CallLongMethod(jobject obj, jmethodID methodID, ...) {
  872. va_list args;
  873. jlong result;
  874. va_start(args,methodID);
  875. result = functions->CallLongMethodV(this,obj,methodID,args);
  876. va_end(args);
  877. return result;
  878. }
  879. jlong CallLongMethodV(jobject obj, jmethodID methodID,
  880. va_list args) {
  881. return functions->CallLongMethodV(this,obj,methodID,args);
  882. }
  883. jlong CallLongMethodA(jobject obj, jmethodID methodID,
  884. const jvalue * args) {
  885. return functions->CallLongMethodA(this,obj,methodID,args);
  886. }
  887. jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) {
  888. va_list args;
  889. jfloat result;
  890. va_start(args,methodID);
  891. result = functions->CallFloatMethodV(this,obj,methodID,args);
  892. va_end(args);
  893. return result;
  894. }
  895. jfloat CallFloatMethodV(jobject obj, jmethodID methodID,
  896. va_list args) {
  897. return functions->CallFloatMethodV(this,obj,methodID,args);
  898. }
  899. jfloat CallFloatMethodA(jobject obj, jmethodID methodID,
  900. const jvalue * args) {
  901. return functions->CallFloatMethodA(this,obj,methodID,args);
  902. }
  903. jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) {
  904. va_list args;
  905. jdouble result;
  906. va_start(args,methodID);
  907. result = functions->CallDoubleMethodV(this,obj,methodID,args);
  908. va_end(args);
  909. return result;
  910. }
  911. jdouble CallDoubleMethodV(jobject obj, jmethodID methodID,
  912. va_list args) {
  913. return functions->CallDoubleMethodV(this,obj,methodID,args);
  914. }
  915. jdouble CallDoubleMethodA(jobject obj, jmethodID methodID,
  916. const jvalue * args) {
  917. return functions->CallDoubleMethodA(this,obj,methodID,args);
  918. }
  919. void CallVoidMethod(jobject obj, jmethodID methodID, ...) {
  920. va_list args;
  921. va_start(args,methodID);
  922. functions->CallVoidMethodV(this,obj,methodID,args);
  923. va_end(args);
  924. }
  925. void CallVoidMethodV(jobject obj, jmethodID methodID,
  926. va_list args) {
  927. functions->CallVoidMethodV(this,obj,methodID,args);
  928. }
  929. void CallVoidMethodA(jobject obj, jmethodID methodID,
  930. const jvalue * args) {
  931. functions->CallVoidMethodA(this,obj,methodID,args);
  932. }
  933. jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz,
  934. jmethodID methodID, ...) {
  935. va_list args;
  936. jobject result;
  937. va_start(args,methodID);
  938. result = functions->CallNonvirtualObjectMethodV(this,obj,clazz,
  939. methodID,args);
  940. va_end(args);
  941. return result;
  942. }
  943. jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz,
  944. jmethodID methodID, va_list args) {
  945. return functions->CallNonvirtualObjectMethodV(this,obj,clazz,
  946. methodID,args);
  947. }
  948. jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz,
  949. jmethodID methodID, const jvalue * args) {
  950. return functions->CallNonvirtualObjectMethodA(this,obj,clazz,
  951. methodID,args);
  952. }
  953. jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz,
  954. jmethodID methodID, ...) {
  955. va_list args;
  956. jboolean result;
  957. va_start(args,methodID);
  958. result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
  959. methodID,args);
  960. va_end(args);
  961. return result;
  962. }
  963. jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz,
  964. jmethodID methodID, va_list args) {
  965. return functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
  966. methodID,args);
  967. }
  968. jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz,
  969. jmethodID methodID, const jvalue * args) {
  970. return functions->CallNonvirtualBooleanMethodA(this,obj,clazz,
  971. methodID, args);
  972. }
  973. jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz,
  974. jmethodID methodID, ...) {
  975. va_list args;
  976. jbyte result;
  977. va_start(args,methodID);
  978. result = functions->CallNonvirtualByteMethodV(this,obj,clazz,
  979. methodID,args);
  980. va_end(args);
  981. return result;
  982. }
  983. jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz,
  984. jmethodID methodID, va_list args) {
  985. return functions->CallNonvirtualByteMethodV(this,obj,clazz,
  986. methodID,args);
  987. }
  988. jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz,
  989. jmethodID methodID, const jvalue * args) {
  990. return functions->CallNonvirtualByteMethodA(this,obj,clazz,
  991. methodID,args);
  992. }
  993. jchar CallNonvirtualCharMethod(jobject obj, jclass clazz,
  994. jmethodID methodID, ...) {
  995. va_list args;
  996. jchar result;
  997. va_start(args,methodID);
  998. result = functions->CallNonvirtualCharMethodV(this,obj,clazz,
  999. methodID,args);
  1000. va_end(args);
  1001. return result;
  1002. }
  1003. jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz,
  1004. jmethodID methodID, va_list args) {
  1005. return functions->CallNonvirtualCharMethodV(this,obj,clazz,
  1006. methodID,args);
  1007. }
  1008. jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz,
  1009. jmethodID methodID, const jvalue * args) {
  1010. return functions->CallNonvirtualCharMethodA(this,obj,clazz,
  1011. methodID,args);
  1012. }
  1013. jshort CallNonvirtualShortMethod(jobject obj, jclass clazz,
  1014. jmethodID methodID, ...) {
  1015. va_list args;
  1016. jshort result;
  1017. va_start(args,methodID);
  1018. result = functions->CallNonvirtualShortMethodV(this,obj,clazz,
  1019. methodID,args);
  1020. va_end(args);
  1021. return result;
  1022. }
  1023. jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz,
  1024. jmethodID methodID, va_list args) {
  1025. return functions->CallNonvirtualShortMethodV(this,obj,clazz,
  1026. methodID,args);
  1027. }
  1028. jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz,
  1029. jmethodID methodID, const jvalue * args) {
  1030. return functions->CallNonvirtualShortMethodA(this,obj,clazz,
  1031. methodID,args);
  1032. }
  1033. jint CallNonvirtualIntMethod(jobject obj, jclass clazz,
  1034. jmethodID methodID, ...) {
  1035. va_list args;
  1036. jint result;
  1037. va_start(args,methodID);
  1038. result = functions->CallNonvirtualIntMethodV(this,obj,clazz,
  1039. methodID,args);
  1040. va_end(args);
  1041. return result;
  1042. }
  1043. jint CallNonvirtualIntMethodV(jobject obj, jclass clazz,
  1044. jmethodID methodID, va_list args) {
  1045. return functions->CallNonvirtualIntMethodV(this,obj,clazz,
  1046. methodID,args);
  1047. }
  1048. jint CallNonvirtualIntMethodA(jobject obj, jclass clazz,
  1049. jmethodID methodID, const jvalue * args) {
  1050. return functions->CallNonvirtualIntMethodA(this,obj,clazz,
  1051. methodID,args);
  1052. }
  1053. jlong CallNonvirtualLongMethod(jobject obj, jclass clazz,
  1054. jmethodID methodID, ...) {
  1055. va_list args;
  1056. jlong result;
  1057. va_start(args,methodID);
  1058. result = functions->CallNonvirtualLongMethodV(this,obj,clazz,
  1059. methodID,args);
  1060. va_end(args);
  1061. return result;
  1062. }
  1063. jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz,
  1064. jmethodID methodID, va_list args) {
  1065. return functions->CallNonvirtualLongMethodV(this,obj,clazz,
  1066. methodID,args);
  1067. }
  1068. jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz,
  1069. jmethodID methodID, const jvalue * args) {
  1070. return functions->CallNonvirtualLongMethodA(this,obj,clazz,
  1071. methodID,args);
  1072. }
  1073. jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz,
  1074. jmethodID methodID, ...) {
  1075. va_list args;
  1076. jfloat result;
  1077. va_start(args,methodID);
  1078. result = functions->CallNonvirtualFloatMethodV(this,obj,clazz,
  1079. methodID,args);
  1080. va_end(args);
  1081. return result;
  1082. }
  1083. jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz,
  1084. jmethodID methodID,
  1085. va_list args) {
  1086. return functions->CallNonvirtualFloatMethodV(this,obj,clazz,
  1087. methodID,args);
  1088. }
  1089. jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz,
  1090. jmethodID methodID,
  1091. const jvalue * args) {
  1092. return functions->CallNonvirtualFloatMethodA(this,obj,clazz,
  1093. methodID,args);
  1094. }
  1095. jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz,
  1096. jmethodID methodID, ...) {
  1097. va_list args;
  1098. jdouble result;
  1099. va_start(args,methodID);
  1100. result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
  1101. methodID,args);
  1102. va_end(args);
  1103. return result;
  1104. }
  1105. jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz,
  1106. jmethodID methodID,
  1107. va_list args) {
  1108. return functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
  1109. methodID,args);
  1110. }
  1111. jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz,
  1112. jmethodID methodID,
  1113. const jvalue * args) {
  1114. return functions->CallNonvirtualDoubleMethodA(this,obj,clazz,
  1115. methodID,args);
  1116. }
  1117. void CallNonvirtualVoidMethod(jobject obj, jclass clazz,
  1118. jmethodID methodID, ...) {
  1119. va_list args;
  1120. va_start(args,methodID);
  1121. functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
  1122. va_end(args);
  1123. }
  1124. void CallNonvirtualVoidMethodV(jobject obj, jclass clazz,
  1125. jmethodID methodID,
  1126. va_list args) {
  1127. functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
  1128. }
  1129. void CallNonvirtualVoidMethodA(jobject obj, jclass clazz,
  1130. jmethodID methodID,
  1131. const jvalue * args) {
  1132. functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args);
  1133. }
  1134. jfieldID GetFieldID(jclass clazz, const char *name,
  1135. const char *sig) {
  1136. return functions->GetFieldID(this,clazz,name,sig);
  1137. }
  1138. jobject GetObjectField(jobject obj, jfieldID fieldID) {
  1139. return functions->GetObjectField(this,obj,fieldID);
  1140. }
  1141. jboolean GetBooleanField(jobject obj, jfieldID fieldID) {
  1142. return functions->GetBooleanField(this,obj,fieldID);
  1143. }
  1144. jbyte GetByteField(jobject obj, jfieldID fieldID) {
  1145. return functions->GetByteField(this,obj,fieldID);
  1146. }
  1147. jchar GetCharField(jobject obj, jfieldID fieldID) {
  1148. return functions->GetCharField(this,obj,fieldID);
  1149. }
  1150. jshort GetShortField(jobject obj, jfieldID fieldID) {
  1151. return functions->GetShortField(this,obj,fieldID);
  1152. }
  1153. jint GetIntField(jobject obj, jfieldID fieldID) {
  1154. return functions->GetIntField(this,obj,fieldID);
  1155. }
  1156. jlong GetLongField(jobject obj, jfieldID fieldID) {
  1157. return functions->GetLongField(this,obj,fieldID);
  1158. }
  1159. jfloat GetFloatField(jobject obj, jfieldID fieldID) {
  1160. return functions->GetFloatField(this,obj,fieldID);
  1161. }
  1162. jdouble GetDoubleField(jobject obj, jfieldID fieldID) {
  1163. return functions->GetDoubleField(this,obj,fieldID);
  1164. }
  1165. void SetObjectField(jobject obj, jfieldID fieldID, jobject val) {
  1166. functions->SetObjectField(this,obj,fieldID,val);
  1167. }
  1168. void SetBooleanField(jobject obj, jfieldID fieldID,
  1169. jboolean val) {
  1170. functions->SetBooleanField(this,obj,fieldID,val);
  1171. }
  1172. void SetByteField(jobject obj, jfieldID fieldID,
  1173. jbyte val) {
  1174. functions->SetByteField(this,obj,fieldID,val);
  1175. }
  1176. void SetCharField(jobject obj, jfieldID fieldID,
  1177. jchar val) {
  1178. functions->SetCharField(this,obj,fieldID,val);
  1179. }
  1180. void SetShortField(jobject obj, jfieldID fieldID,
  1181. jshort val) {
  1182. functions->SetShortField(this,obj,fieldID,val);
  1183. }
  1184. void SetIntField(jobject obj, jfieldID fieldID,
  1185. jint val) {
  1186. functions->SetIntField(this,obj,fieldID,val);
  1187. }
  1188. void SetLongField(jobject obj, jfieldID fieldID,
  1189. jlong val) {
  1190. functions->SetLongField(this,obj,fieldID,val);
  1191. }
  1192. void SetFloatField(jobject obj, jfieldID fieldID,
  1193. jfloat val) {
  1194. functions->SetFloatField(this,obj,fieldID,val);
  1195. }
  1196. void SetDoubleField(jobject obj, jfieldID fieldID,
  1197. jdouble val) {
  1198. functions->SetDoubleField(this,obj,fieldID,val);
  1199. }
  1200. jmethodID GetStaticMethodID(jclass clazz, const char *name,
  1201. const char *sig) {
  1202. return functions->GetStaticMethodID(this,clazz,name,sig);
  1203. }
  1204. jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID,
  1205. ...) {
  1206. va_list args;
  1207. jobject result;
  1208. va_start(args,methodID);
  1209. result = functions->CallStaticObjectMethodV(this,clazz,methodID,args);
  1210. va_end(args);
  1211. return result;
  1212. }
  1213. jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID,
  1214. va_list args) {
  1215. return functions->CallStaticObjectMethodV(this,clazz,methodID,args);
  1216. }
  1217. jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID,
  1218. const jvalue *args) {
  1219. return functions->CallStaticObjectMethodA(this,clazz,methodID,args);
  1220. }
  1221. jboolean CallStaticBooleanMethod(jclass clazz,
  1222. jmethodID methodID, ...) {
  1223. va_list args;
  1224. jboolean result;
  1225. va_start(args,methodID);
  1226. result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
  1227. va_end(args);
  1228. return result;
  1229. }
  1230. jboolean CallStaticBooleanMethodV(jclass clazz,
  1231. jmethodID methodID, va_list args) {
  1232. return functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
  1233. }
  1234. jboolean CallStaticBooleanMethodA(jclass clazz,
  1235. jmethodID methodID, const jvalue *args) {
  1236. return functions->CallStaticBooleanMethodA(this,clazz,methodID,args);
  1237. }
  1238. jbyte CallStaticByteMethod(jclass clazz,
  1239. jmethodID methodID, ...) {
  1240. va_list args;
  1241. jbyte result;
  1242. va_start(args,methodID);
  1243. result = functions->CallStaticByteMethodV(this,clazz,methodID,args);
  1244. va_end(args);
  1245. return result;
  1246. }
  1247. jbyte CallStaticByteMethodV(jclass clazz,
  1248. jmethodID methodID, va_list args) {
  1249. return functions->CallStaticByteMethodV(this,clazz,methodID,args);
  1250. }
  1251. jbyte CallStaticByteMethodA(jclass clazz,
  1252. jmethodID methodID, const jvalue *args) {
  1253. return functions->CallStaticByteMethodA(this,clazz,methodID,args);
  1254. }
  1255. jchar CallStaticCharMethod(jclass clazz,
  1256. jmethodID methodID, ...) {
  1257. va_list args;
  1258. jchar result;
  1259. va_start(args,methodID);
  1260. result = functions->CallStaticCharMethodV(this,clazz,methodID,args);
  1261. va_end(args);
  1262. return result;
  1263. }
  1264. jchar CallStaticCharMethodV(jclass clazz,
  1265. jmethodID methodID, va_list args) {
  1266. return functions->CallStaticCharMethodV(this,clazz,methodID,args);
  1267. }
  1268. jchar CallStaticCharMethodA(jclass clazz,
  1269. jmethodID methodID, const jvalue *args) {
  1270. return functions->CallStaticCharMethodA(this,clazz,methodID,args);
  1271. }
  1272. jshort CallStaticShortMethod(jclass clazz,
  1273. jmethodID methodID, ...) {
  1274. va_list args;
  1275. jshort result;
  1276. va_start(args,methodID);
  1277. result = functions->CallStaticShortMethodV(this,clazz,methodID,args);
  1278. va_end(args);
  1279. return result;
  1280. }
  1281. jshort CallStaticShortMethodV(jclass clazz,
  1282. jmethodID methodID, va_list args) {
  1283. return functions->CallStaticShortMethodV(this,clazz,methodID,args);
  1284. }
  1285. jshort CallStaticShortMethodA(jclass clazz,
  1286. jmethodID methodID, const jvalue *args) {
  1287. return functions->CallStaticShortMethodA(this,clazz,methodID,args);
  1288. }
  1289. jint CallStaticIntMethod(jclass clazz,
  1290. jmethodID methodID, ...) {
  1291. va_list args;
  1292. jint result;
  1293. va_start(args,methodID);
  1294. result = functions->CallStaticIntMethodV(this,clazz,methodID,args);
  1295. va_end(args);
  1296. return result;
  1297. }
  1298. jint CallStaticIntMethodV(jclass clazz,
  1299. jmethodID methodID, va_list args) {
  1300. return functions->CallStaticIntMethodV(this,clazz,methodID,args);
  1301. }
  1302. jint CallStaticIntMethodA(jclass clazz,
  1303. jmethodID methodID, const jvalue *args) {
  1304. return functions->CallStaticIntMethodA(this,clazz,methodID,args);
  1305. }
  1306. jlong CallStaticLongMethod(jclass clazz,
  1307. jmethodID methodID, ...) {
  1308. va_list args;
  1309. jlong result;
  1310. va_start(args,methodID);
  1311. result = functions->CallStaticLongMethodV(this,clazz,methodID,args);
  1312. va_end(args);
  1313. return result;
  1314. }
  1315. jlong CallStaticLongMethodV(jclass clazz,
  1316. jmethodID methodID, va_list args) {
  1317. return functions->CallStaticLongMethodV(this,clazz,methodID,args);
  1318. }
  1319. jlong CallStaticLongMethodA(jclass clazz,
  1320. jmethodID methodID, const jvalue *args) {
  1321. return functions->CallStaticLongMethodA(this,clazz,methodID,args);
  1322. }
  1323. jfloat CallStaticFloatMethod(jclass clazz,
  1324. jmethodID methodID, ...) {
  1325. va_list args;
  1326. jfloat result;
  1327. va_start(args,methodID);
  1328. result = functions->CallStaticFloatMethodV(this,clazz,methodID,args);
  1329. va_end(args);
  1330. return result;
  1331. }
  1332. jfloat CallStaticFloatMethodV(jclass clazz,
  1333. jmethodID methodID, va_list args) {
  1334. return functions->CallStaticFloatMethodV(this,clazz,methodID,args);
  1335. }
  1336. jfloat CallStaticFloatMethodA(jclass clazz,
  1337. jmethodID methodID, const jvalue *args) {
  1338. return functions->CallStaticFloatMethodA(this,clazz,methodID,args);
  1339. }
  1340. jdouble CallStaticDoubleMethod(jclass clazz,
  1341. jmethodID methodID, ...) {
  1342. va_list args;
  1343. jdouble result;
  1344. va_start(args,methodID);
  1345. result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
  1346. va_end(args);
  1347. return result;
  1348. }
  1349. jdouble CallStaticDoubleMethodV(jclass clazz,
  1350. jmethodID methodID, va_list args) {
  1351. return functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
  1352. }
  1353. jdouble CallStaticDoubleMethodA(jclass clazz,
  1354. jmethodID methodID, const jvalue *args) {
  1355. return functions->CallStaticDoubleMethodA(this,clazz,methodID,args);
  1356. }
  1357. void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) {
  1358. va_list args;
  1359. va_start(args,methodID);
  1360. functions->CallStaticVoidMethodV(this,cls,methodID,args);
  1361. va_end(args);
  1362. }
  1363. void CallStaticVoidMethodV(jclass cls, jmethodID methodID,
  1364. va_list args) {
  1365. functions->CallStaticVoidMethodV(this,cls,methodID,args);
  1366. }
  1367. void CallStaticVoidMethodA(jclass cls, jmethodID methodID,
  1368. const jvalue * args) {
  1369. functions->CallStaticVoidMethodA(this,cls,methodID,args);
  1370. }
  1371. jfieldID GetStaticFieldID(jclass clazz, const char *name,
  1372. const char *sig) {
  1373. return functions->GetStaticFieldID(this,clazz,name,sig);
  1374. }
  1375. jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) {
  1376. return functions->GetStaticObjectField(this,clazz,fieldID);
  1377. }
  1378. jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) {
  1379. return functions->GetStaticBooleanField(this,clazz,fieldID);
  1380. }
  1381. jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) {
  1382. return functions->GetStaticByteField(this,clazz,fieldID);
  1383. }
  1384. jchar GetStaticCharField(jclass clazz, jfieldID fieldID) {
  1385. return functions->GetStaticCharField(this,clazz,fieldID);
  1386. }
  1387. jshort GetStaticShortField(jclass clazz, jfieldID fieldID) {
  1388. return functions->GetStaticShortField(this,clazz,fieldID);
  1389. }
  1390. jint GetStaticIntField(jclass clazz, jfieldID fieldID) {
  1391. return functions->GetStaticIntField(this,clazz,fieldID);
  1392. }
  1393. jlong GetStaticLongField(jclass clazz, jfieldID fieldID) {
  1394. return functions->GetStaticLongField(this,clazz,fieldID);
  1395. }
  1396. jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) {
  1397. return functions->GetStaticFloatField(this,clazz,fieldID);
  1398. }
  1399. jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) {
  1400. return functions->GetStaticDoubleField(this,clazz,fieldID);
  1401. }
  1402. void SetStaticObjectField(jclass clazz, jfieldID fieldID,
  1403. jobject value) {
  1404. functions->SetStaticObjectField(this,clazz,fieldID,value);
  1405. }
  1406. void SetStaticBooleanField(jclass clazz, jfieldID fieldID,
  1407. jboolean value) {
  1408. functions->SetStaticBooleanField(this,clazz,fieldID,value);
  1409. }
  1410. void SetStaticByteField(jclass clazz, jfieldID fieldID,
  1411. jbyte value) {
  1412. functions->SetStaticByteField(this,clazz,fieldID,value);
  1413. }
  1414. void SetStaticCharField(jclass clazz, jfieldID fieldID,
  1415. jchar value) {
  1416. functions->SetStaticCharField(this,clazz,fieldID,value);
  1417. }
  1418. void SetStaticShortField(jclass clazz, jfieldID fieldID,
  1419. jshort value) {
  1420. functions->SetStaticShortField(this,clazz,fieldID,value);
  1421. }
  1422. void SetStaticIntField(jclass clazz, jfieldID fieldID,
  1423. jint value) {
  1424. functions->SetStaticIntField(this,clazz,fieldID,value);
  1425. }
  1426. void SetStaticLongField(jclass clazz, jfieldID fieldID,
  1427. jlong value) {
  1428. functions->SetStaticLongField(this,clazz,fieldID,value);
  1429. }
  1430. void SetStaticFloatField(jclass clazz, jfieldID fieldID,
  1431. jfloat value) {
  1432. functions->SetStaticFloatField(this,clazz,fieldID,value);
  1433. }
  1434. void SetStaticDoubleField(jclass clazz, jfieldID fieldID,
  1435. jdouble value) {
  1436. functions->SetStaticDoubleField(this,clazz,fieldID,value);
  1437. }
  1438. jstring NewString(const jchar *unicode, jsize len) {
  1439. return functions->NewString(this,unicode,len);
  1440. }
  1441. jsize GetStringLength(jstring str) {
  1442. return functions->GetStringLength(this,str);
  1443. }
  1444. const jchar *GetStringChars(jstring str, jboolean *isCopy) {
  1445. return functions->GetStringChars(this,str,isCopy);
  1446. }
  1447. void ReleaseStringChars(jstring str, const jchar *chars) {
  1448. functions->ReleaseStringChars(this,str,chars);
  1449. }
  1450. jstring NewStringUTF(const char *utf) {
  1451. return functions->NewStringUTF(this,utf);
  1452. }
  1453. jsize GetStringUTFLength(jstring str) {
  1454. return functions->GetStringUTFLength(this,str);
  1455. }
  1456. const char* GetStringUTFChars(jstring str, jboolean *isCopy) {
  1457. return functions->GetStringUTFChars(this,str,isCopy);
  1458. }
  1459. void ReleaseStringUTFChars(jstring str, const char* chars) {
  1460. functions->ReleaseStringUTFChars(this,str,chars);
  1461. }
  1462. jsize GetArrayLength(jarray array) {
  1463. return functions->GetArrayLength(this,array);
  1464. }
  1465. jobjectArray NewObjectArray(jsize len, jclass clazz,
  1466. jobject init) {
  1467. return functions->NewObjectArray(this,len,clazz,init);
  1468. }
  1469. jobject GetObjectArrayElement(jobjectArray array, jsize index) {
  1470. return functions->GetObjectArrayElement(this,array,index);
  1471. }
  1472. void SetObjectArrayElement(jobjectArray array, jsize index,
  1473. jobject val) {
  1474. functions->SetObjectArrayElement(this,array,index,val);
  1475. }
  1476. jbooleanArray NewBooleanArray(jsize len) {
  1477. return functions->NewBooleanArray(this,len);
  1478. }
  1479. jbyteArray NewByteArray(jsize len) {
  1480. return functions->NewByteArray(this,len);
  1481. }
  1482. jcharArray NewCharArray(jsize len) {
  1483. return functions->NewCharArray(this,len);
  1484. }
  1485. jshortArray NewShortArray(jsize len) {
  1486. return functions->NewShortArray(this,len);
  1487. }
  1488. jintArray NewIntArray(jsize len) {
  1489. return functions->NewIntArray(this,len);
  1490. }
  1491. jlongArray NewLongArray(jsize len) {
  1492. return functions->NewLongArray(this,len);
  1493. }
  1494. jfloatArray NewFloatArray(jsize len) {
  1495. return functions->NewFloatArray(this,len);
  1496. }
  1497. jdoubleArray NewDoubleArray(jsize len) {
  1498. return functions->NewDoubleArray(this,len);
  1499. }
  1500. jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) {
  1501. return functions->GetBooleanArrayElements(this,array,isCopy);
  1502. }
  1503. jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) {
  1504. return functions->GetByteArrayElements(this,array,isCopy);
  1505. }
  1506. jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) {
  1507. return functions->GetCharArrayElements(this,array,isCopy);
  1508. }
  1509. jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) {
  1510. return functions->GetShortArrayElements(this,array,isCopy);
  1511. }
  1512. jint * GetIntArrayElements(jintArray array, jboolean *isCopy) {
  1513. return functions->GetIntArrayElements(this,array,isCopy);
  1514. }
  1515. jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) {
  1516. return functions->GetLongArrayElements(this,array,isCopy);
  1517. }
  1518. jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) {
  1519. return functions->GetFloatArrayElements(this,array,isCopy);
  1520. }
  1521. jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) {
  1522. return functions->GetDoubleArrayElements(this,array,isCopy);
  1523. }
  1524. void ReleaseBooleanArrayElements(jbooleanArray array,
  1525. jboolean *elems,
  1526. jint mode) {
  1527. functions->ReleaseBooleanArrayElements(this,array,elems,mode);
  1528. }
  1529. void ReleaseByteArrayElements(jbyteArray array,
  1530. jbyte *elems,
  1531. jint mode) {
  1532. functions->ReleaseByteArrayElements(this,array,elems,mode);
  1533. }
  1534. void ReleaseCharArrayElements(jcharArray array,
  1535. jchar *elems,
  1536. jint mode) {
  1537. functions->ReleaseCharArrayElements(this,array,elems,mode);
  1538. }
  1539. void ReleaseShortArrayElements(jshortArray array,
  1540. jshort *elems,
  1541. jint mode) {
  1542. functions->ReleaseShortArrayElements(this,array,elems,mode);
  1543. }
  1544. void ReleaseIntArrayElements(jintArray array,
  1545. jint *elems,
  1546. jint mode) {
  1547. functions->ReleaseIntArrayElements(this,array,elems,mode);
  1548. }
  1549. void ReleaseLongArrayElements(jlongArray array,
  1550. jlong *elems,
  1551. jint mode) {
  1552. functions->ReleaseLongArrayElements(this,array,elems,mode);
  1553. }
  1554. void ReleaseFloatArrayElements(jfloatArray array,
  1555. jfloat *elems,
  1556. jint mode) {
  1557. functions->ReleaseFloatArrayElements(this,array,elems,mode);
  1558. }
  1559. void ReleaseDoubleArrayElements(jdoubleArray array,
  1560. jdouble *elems,
  1561. jint mode) {
  1562. functions->ReleaseDoubleArrayElements(this,array,elems,mode);
  1563. }
  1564. void GetBooleanArrayRegion(jbooleanArray array,
  1565. jsize start, jsize len, jboolean *buf) {
  1566. functions->GetBooleanArrayRegion(this,array,start,len,buf);
  1567. }
  1568. void GetByteArrayRegion(jbyteArray array,
  1569. jsize start, jsize len, jbyte *buf) {
  1570. functions->GetByteArrayRegion(this,array,start,len,buf);
  1571. }
  1572. void GetCharArrayRegion(jcharArray array,
  1573. jsize start, jsize len, jchar *buf) {
  1574. functions->GetCharArrayRegion(this,array,start,len,buf);
  1575. }
  1576. void GetShortArrayRegion(jshortArray array,
  1577. jsize start, jsize len, jshort *buf) {
  1578. functions->GetShortArrayRegion(this,array,start,len,buf);
  1579. }
  1580. void GetIntArrayRegion(jintArray array,
  1581. jsize start, jsize len, jint *buf) {
  1582. functions->GetIntArrayRegion(this,array,start,len,buf);
  1583. }
  1584. void GetLongArrayRegion(jlongArray array,
  1585. jsize start, jsize len, jlong *buf) {
  1586. functions->GetLongArrayRegion(this,array,start,len,buf);
  1587. }
  1588. void GetFloatArrayRegion(jfloatArray array,
  1589. jsize start, jsize len, jfloat *buf) {
  1590. functions->GetFloatArrayRegion(this,array,start,len,buf);
  1591. }
  1592. void GetDoubleArrayRegion(jdoubleArray array,
  1593. jsize start, jsize len, jdouble *buf) {
  1594. functions->GetDoubleArrayRegion(this,array,start,len,buf);
  1595. }
  1596. void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len,
  1597. const jboolean *buf) {
  1598. functions->SetBooleanArrayRegion(this,array,start,len,buf);
  1599. }
  1600. void SetByteArrayRegion(jbyteArray array, jsize start, jsize len,
  1601. const jbyte *buf) {
  1602. functions->SetByteArrayRegion(this,array,start,len,buf);
  1603. }
  1604. void SetCharArrayRegion(jcharArray array, jsize start, jsize len,
  1605. const jchar *buf) {
  1606. functions->SetCharArrayRegion(this,array,start,len,buf);
  1607. }
  1608. void SetShortArrayRegion(jshortArray array, jsize start, jsize len,
  1609. const jshort *buf) {
  1610. functions->SetShortArrayRegion(this,array,start,len,buf);
  1611. }
  1612. void SetIntArrayRegion(jintArray array, jsize start, jsize len,
  1613. const jint *buf) {
  1614. functions->SetIntArrayRegion(this,array,start,len,buf);
  1615. }
  1616. void SetLongArrayRegion(jlongArray array, jsize start, jsize len,
  1617. const jlong *buf) {
  1618. functions->SetLongArrayRegion(this,array,start,len,buf);
  1619. }
  1620. void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len,
  1621. const jfloat *buf) {
  1622. functions->SetFloatArrayRegion(this,array,start,len,buf);
  1623. }
  1624. void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len,
  1625. const jdouble *buf) {
  1626. functions->SetDoubleArrayRegion(this,array,start,len,buf);
  1627. }
  1628. jint RegisterNatives(jclass clazz, const JNINativeMethod *methods,
  1629. jint nMethods) {
  1630. return functions->RegisterNatives(this,clazz,methods,nMethods);
  1631. }
  1632. jint UnregisterNatives(jclass clazz) {
  1633. return functions->UnregisterNatives(this,clazz);
  1634. }
  1635. jint MonitorEnter(jobject obj) {
  1636. return functions->MonitorEnter(this,obj);
  1637. }
  1638. jint MonitorExit(jobject obj) {
  1639. return functions->MonitorExit(this,obj);
  1640. }
  1641. jint GetJavaVM(JavaVM **vm) {
  1642. return functions->GetJavaVM(this,vm);
  1643. }
  1644. void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) {
  1645. functions->GetStringRegion(this,str,start,len,buf);
  1646. }
  1647. void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) {
  1648. functions->GetStringUTFRegion(this,str,start,len,buf);
  1649. }
  1650. void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) {
  1651. return functions->GetPrimitiveArrayCritical(this,array,isCopy);
  1652. }
  1653. void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) {
  1654. functions->ReleasePrimitiveArrayCritical(this,array,carray,mode);
  1655. }
  1656. const jchar * GetStringCritical(jstring string, jboolean *isCopy) {
  1657. return functions->GetStringCritical(this,string,isCopy);
  1658. }
  1659. void ReleaseStringCritical(jstring string, const jchar *cstring) {
  1660. functions->ReleaseStringCritical(this,string,cstring);
  1661. }
  1662. jweak NewWeakGlobalRef(jobject obj) {
  1663. return functions->NewWeakGlobalRef(this,obj);
  1664. }
  1665. void DeleteWeakGlobalRef(jweak ref) {
  1666. functions->DeleteWeakGlobalRef(this,ref);
  1667. }
  1668. jboolean ExceptionCheck() {
  1669. return functions->ExceptionCheck(this);
  1670. }
  1671. jobject NewDirectByteBuffer(void* address, jlong capacity) {
  1672. return functions->NewDirectByteBuffer(this, address, capacity);
  1673. }
  1674. void* GetDirectBufferAddress(jobject buf) {
  1675. return functions->GetDirectBufferAddress(this, buf);
  1676. }
  1677. jlong GetDirectBufferCapacity(jobject buf) {
  1678. return functions->GetDirectBufferCapacity(this, buf);
  1679. }
  1680. jobjectRefType GetObjectRefType(jobject obj) {
  1681. return functions->GetObjectRefType(this, obj);
  1682. }
  1683. /* Module Features */
  1684. jobject GetModule(jclass clazz) {
  1685. return functions->GetModule(this, clazz);
  1686. }
  1687. #endif /* __cplusplus */
  1688. };
  1689. /*
  1690. * optionString may be any option accepted by the JVM, or one of the
  1691. * following:
  1692. *
  1693. * -D<name>=<value> Set a system property.
  1694. * -verbose[:class|gc|jni] Enable verbose output, comma-separated. E.g.
  1695. * "-verbose:class" or "-verbose:gc,class"
  1696. * Standard names include: gc, class, and jni.
  1697. * All nonstandard (VM-specific) names must begin
  1698. * with "X".
  1699. * vfprintf extraInfo is a pointer to the vfprintf hook.
  1700. * exit extraInfo is a pointer to the exit hook.
  1701. * abort extraInfo is a pointer to the abort hook.
  1702. */
  1703. typedef struct JavaVMOption {
  1704. char *optionString;
  1705. void *extraInfo;
  1706. } JavaVMOption;
  1707. typedef struct JavaVMInitArgs {
  1708. jint version;
  1709. jint nOptions;
  1710. JavaVMOption *options;
  1711. jboolean ignoreUnrecognized;
  1712. } JavaVMInitArgs;
  1713. typedef struct JavaVMAttachArgs {
  1714. jint version;
  1715. char *name;
  1716. jobject group;
  1717. } JavaVMAttachArgs;
  1718. /* These will be VM-specific. */
  1719. #define JDK1_2
  1720. #define JDK1_4
  1721. /* End VM-specific. */
  1722. struct JNIInvokeInterface_ {
  1723. void *reserved0;
  1724. void *reserved1;
  1725. void *reserved2;
  1726. jint (JNICALL *DestroyJavaVM)(JavaVM *vm);
  1727. jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args);
  1728. jint (JNICALL *DetachCurrentThread)(JavaVM *vm);
  1729. jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version);
  1730. jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args);
  1731. };
  1732. struct JavaVM_ {
  1733. const struct JNIInvokeInterface_ *functions;
  1734. #ifdef __cplusplus
  1735. jint DestroyJavaVM() {
  1736. return functions->DestroyJavaVM(this);
  1737. }
  1738. jint AttachCurrentThread(void **penv, void *args) {
  1739. return functions->AttachCurrentThread(this, penv, args);
  1740. }
  1741. jint DetachCurrentThread() {
  1742. return functions->DetachCurrentThread(this);
  1743. }
  1744. jint GetEnv(void **penv, jint version) {
  1745. return functions->GetEnv(this, penv, version);
  1746. }
  1747. jint AttachCurrentThreadAsDaemon(void **penv, void *args) {
  1748. return functions->AttachCurrentThreadAsDaemon(this, penv, args);
  1749. }
  1750. #endif
  1751. };
  1752. #ifdef _JNI_IMPLEMENTATION_
  1753. #define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT
  1754. #else
  1755. #define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT
  1756. #endif
  1757. _JNI_IMPORT_OR_EXPORT_ jint JNICALL
  1758. JNI_GetDefaultJavaVMInitArgs(void *args);
  1759. _JNI_IMPORT_OR_EXPORT_ jint JNICALL
  1760. JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args);
  1761. _JNI_IMPORT_OR_EXPORT_ jint JNICALL
  1762. JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
  1763. /* Defined by native libraries. */
  1764. JNIEXPORT jint JNICALL
  1765. JNI_OnLoad(JavaVM *vm, void *reserved);
  1766. JNIEXPORT void JNICALL
  1767. JNI_OnUnload(JavaVM *vm, void *reserved);
  1768. #define JNI_VERSION_1_1 0x00010001
  1769. #define JNI_VERSION_1_2 0x00010002
  1770. #define JNI_VERSION_1_4 0x00010004
  1771. #define JNI_VERSION_1_6 0x00010006
  1772. #define JNI_VERSION_1_8 0x00010008
  1773. #define JNI_VERSION_9 0x00090000
  1774. #define JNI_VERSION_10 0x000a0000
  1775. #ifdef __cplusplus
  1776. } /* extern "C" */
  1777. #endif /* __cplusplus */
  1778. #endif /* !_JAVASOFT_JNI_H_ */