ZFFramework
 
Loading...
Searching...
No Matches
JNIUtil_MethodWrapper.h
Go to the documentation of this file.
1
5
6#ifndef _JNIUtil_MethodWrapper_h_
7#define _JNIUtil_MethodWrapper_h_
8
9#include "JNIUtil.h"
10
11#if NEED_JNIUTIL
12
13// debug
14// #define JNIUtilWrap_Enable 1
15#if JNIUtilWrap_Enable
16 #ifndef _JNIUtilWrapPrint
17 #include <jni.h>
18 #include <android/log.h>
19 #define _JNIUtilWrapPrint(fmt, ...) \
20 ((void)__android_log_print(ANDROID_LOG_ERROR, "JNILog", fmt, ##__VA_ARGS__))
21 #endif
22
23 inline const char *_JNIUtilMacro_fileToName(const char *callerFile) {
24 for(const char *p = callerFile; *p; ++p) {
25 if(*p == '/' || *p == '\\') {
26 callerFile = p + 1;
27 }
28 }
29 return callerFile;
30 }
31
32 template<typename T>
33 T const &_JNIUtilWrap_Created(T const &obj, const char *callerFile, const char *callerFunction, int callerLine, const char *actionName) {
34 _JNIUtilWrapPrint("JNI Created : %p [%s %s %d] %s", obj, _JNIUtilMacro_fileToName(callerFile), callerFunction, callerLine, actionName);
35 return obj;
36 }
37 template<typename T>
38 T const &_JNIUtilWrap_Released(T const &obj, const char *callerFile, const char *callerFunction, int callerLine, const char *actionName) {
39 _JNIUtilWrapPrint("JNI Released : %p [%s %s %d] %s", obj, _JNIUtilMacro_fileToName(callerFile), callerFunction, callerLine, actionName);
40 return obj;
41 }
42 inline void _JNIUtilWrap_FuncCalled(const char *callerFile, const char *callerFunction, int callerLine, const char *actionName) {
43 _JNIUtilWrapPrint("JNI FuncCalled: [%s %s %d] %s", _JNIUtilMacro_fileToName(callerFile), callerFunction, callerLine, actionName);
44 }
45 inline void _JNIUtilWrap_CallbackCalled(const char *callerFile, const char *callerFunction, int callerLine, const char *actionName) {
46 _JNIUtilWrapPrint("JNI Callback : [%s %s %d] %s", _JNIUtilMacro_fileToName(callerFile), callerFunction, callerLine, actionName);
47 }
48
49 #define JNIUtilWrap_Created(obj, callerFile, callerFunction, callerLine, actionName) \
50 _JNIUtilWrap_Created(obj, callerFile, callerFunction, callerLine, actionName)
51 #define JNIUtilWrap_Released(obj, callerFile, callerFunction, callerLine, actionName) \
52 _JNIUtilWrap_Released(obj, callerFile, callerFunction, callerLine, actionName)
53 #define JNIUtilWrap_FuncCalled(callerFile, callerFunction, callerLine, actionName) \
54 _JNIUtilWrap_FuncCalled(callerFile, callerFunction, callerLine, actionName)
55 #define JNIUtilWrap_CallbackCalled(callerFile, callerFunction, callerLine, actionName) \
56 _JNIUtilWrap_CallbackCalled(callerFile, callerFunction, callerLine, actionName)
57#endif
58
59namespace JNIUtil {
60
61// ============================================================
62// expand actions
63#ifndef JNIUtilWrap_Created
64 #define JNIUtilWrap_Created(obj, callerFile, callerFunction, callerLine, actionName) obj
65#endif
66#ifndef JNIUtilWrap_Released
67 #define JNIUtilWrap_Released(obj, callerFile, callerFunction, callerLine, actionName) obj
68#endif
69#ifndef JNIUtilWrap_FuncCalled
70 #define JNIUtilWrap_FuncCalled(callerFile, callerFunction, callerLine, actionName) NULL
71#endif
72#ifndef JNIUtilWrap_CallbackCalled
73 #define JNIUtilWrap_CallbackCalled(callerFile, callerFunction, callerLine, actionName)
74#endif
75
76// ============================================================
77#if JNIUtilWrap_Enable
78#undef JNI_METHOD_DECLARE_BEGIN
79#define JNI_METHOD_DECLARE_BEGIN(OwnerClassId, ReturnType, MethodName, ...) \
80 _JNI_METHOD_DECLARE_BEGIN(OwnerClassId, ReturnType, MethodName, ##__VA_ARGS__) { \
81 JNIUtilWrap_CallbackCalled(__FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(OwnerClassId) "::" _JNIUtilMacro_toString(MethodName));
82#undef JNI_METHOD_DECLARE_END
83#define JNI_METHOD_DECLARE_END() \
84 }
85
86#if !JNIPointerUseLong
87 #undef JNIConvertPointerToJNIType
88 #define JNIConvertPointerToJNIType(jniEnv, p) JNIUtilWrap_Created(_JNIConvertPointerToJNIType(jniEnv, p), __FILE__, __FUNCTION__, __LINE__, "JNIConvertPointerToJNIType")
89#endif
90
92namespace JNIUtilMethodWrapperPrivate {
93 class _JNI_EXPORT LocalRefDel {
94 public:
95 LocalRefDel(jobject obj,
96 const char *callerFile,
97 const char *callerFunction,
98 int callerLine)
99 : objSaved(obj)
100 , callerFile(callerFile)
101 , callerFunction(callerFunction)
102 , callerLine(callerLine)
103 {
104 }
105 ~LocalRefDel(void) {
106 if(this->objSaved) {
107 JNIUtilWrap_Released(this->objSaved, this->callerFile, this->callerFunction, this->callerLine, "DeleteLocalRef");
108 JNIGetJNIEnv()->DeleteLocalRef(this->objSaved);
109 }
110 }
111 public:
112 jobject objSaved;
113 const char *callerFile;
114 const char *callerFunction;
115 int callerLine;
116 };
117 class _JNI_EXPORT GlobalRefDel {
118 public:
119 GlobalRefDel(jobject obj,
120 const char *callerFile,
121 const char *callerFunction,
122 int callerLine)
123 : objSaved(obj)
124 , callerFile(callerFile)
125 , callerFunction(callerFunction)
126 , callerLine(callerLine)
127 {
128 }
129 ~GlobalRefDel(void) {
130 if(this->objSaved) {
131 JNIUtilWrap_Released(this->objSaved, this->callerFile, this->callerFunction, this->callerLine, "DeleteGlobalRef");
132 JNIGetJNIEnv()->DeleteGlobalRef(this->objSaved);
133 }
134 }
135 public:
136 jobject objSaved;
137 const char *callerFile;
138 const char *callerFunction;
139 int callerLine;
140 };
141} // namespace JNIUtilMethodWrapperPrivate
143
144#undef JNILineDeleteLocalRef
145#define JNILineDeleteLocalRef(obj_) \
146 (JNIUtilMethodWrapperPrivate::LocalRefDel(obj_, __FILE__, __FUNCTION__, __LINE__).objSaved)
147#undef JNILineDeleteGlobalRef
148#define JNILineDeleteGlobalRef(obj_) \
149 (JNIUtilMethodWrapperPrivate::GlobalRefDel(obj_, __FILE__, __FUNCTION__, __LINE__).objSaved)
150
151#undef JNIBlockedDeleteLocalRef
152#define JNIBlockedDeleteLocalRef(obj_) \
153 JNIUtilMethodWrapperPrivate::LocalRefDel _JNIUtil_uniqueName(jniRef)(obj_, __FILE__, __FUNCTION__, __LINE__)
154#undef JNIBlockedDeleteGlobalRef
155#define JNIBlockedDeleteGlobalRef(obj_) \
156 JNIUtilMethodWrapperPrivate::GlobalRefDel _JNIUtil_uniqueName(jniRef)(obj_, __FILE__, __FUNCTION__, __LINE__)
157#endif // #if JNIUtilWrap_Enable
158
159// ============================================================
160#define _JNIUtilMacro_toString(e) #e
161#define _JNIUtilWrapMacro_Created(func, jniEnv, ...) \
162 JNIUtilWrap_Created( \
163 (JNIUtilWrap_FuncCalled(__FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(func)), \
164 (jniEnv)->func(__VA_ARGS__)), \
165 __FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(func))
166#define _JNIUtilWrapMacro_Released_0(func, jniEnv, obj, ...) \
167 (JNIUtilWrap_FuncCalled(__FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(func)), \
168 (jniEnv)->func( \
169 JNIUtilWrap_Released(obj, __FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(func)), \
170 ##__VA_ARGS__))
171#define _JNIUtilWrapMacro_Released_1(func, jniEnv, param0, obj, ...) \
172 (JNIUtilWrap_FuncCalled(__FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(func)), \
173 (jniEnv)->func( \
174 param0, \
175 JNIUtilWrap_Released(obj, __FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(func)), \
176 ##__VA_ARGS__))
177#define _JNIUtilWrapMacro_Released_2(func, jniEnv, param0, param1, obj, ...) \
178 (JNIUtilWrap_FuncCalled(__FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(func)), \
179 (jniEnv)->func( \
180 param0, param1, \
181 JNIUtilWrap_Released(obj, __FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(func)), \
182 ##__VA_ARGS__))
183#define _JNIUtilWrapMacro_FuncCalled(func, jniEnv, ...) \
184 (JNIUtilWrap_FuncCalled(__FILE__, __FUNCTION__, __LINE__, _JNIUtilMacro_toString(func)), \
185 (jniEnv)->func(__VA_ARGS__))
186
187// ============================================================
188// wrapper methods
189#ifndef JNIUtilGetVersion
190#define JNIUtilGetVersion(jniEnv) \
191 _JNIUtilWrapMacro_FuncCalled(GetVersion, jniEnv)
192#endif
193
194#ifndef JNIUtilDefineClass
195#define JNIUtilDefineClass(jniEnv, name, loader, buf, bufLen) \
196 _JNIUtilWrapMacro_Created(DefineClass, jniEnv, name, loader, buf, bufLen)
197#endif
198
199#ifndef JNIUtilFindClass
200#define JNIUtilFindClass(jniEnv, name) \
201 _JNIUtilWrapMacro_Created(FindClass, jniEnv, name)
202#endif
203
204#ifndef JNIUtilFromReflectedMethod
205#define JNIUtilFromReflectedMethod(jniEnv, method) \
206 _JNIUtilWrapMacro_FuncCalled(FromReflectedMethod, jniEnv, method)
207#endif
208
209#ifndef JNIUtilFromReflectedField
210#define JNIUtilFromReflectedField(jniEnv, field) \
211 _JNIUtilWrapMacro_FuncCalled(FromReflectedMethod, jniEnv, field)
212#endif
213
214#ifndef JNIUtilToReflectedMethod
215#define JNIUtilToReflectedMethod(jniEnv, cls, methodID, isStatic) \
216 _JNIUtilWrapMacro_Created(ToReflectMethod, jniEnv, cls, methodID, isStatic)
217#endif
218
219#ifndef JNIUtilGetSuperclass
220#define JNIUtilGetSuperclass(jniEnv, clazz) \
221 _JNIUtilWrapMacro_Created(GetSuperclass, jniEnv, clazz)
222#endif
223
224#ifndef JNIUtilIsAssignableFrom
225#define JNIUtilIsAssignableFrom(jniEnv, clazz1, clazz2) \
226 _JNIUtilWrapMacro_FuncCalled(IsAssignableFrom, jniEnv, clazz1, clazz2)
227#endif
228
229#ifndef JNIUtilToReflectedField
230#define JNIUtilToReflectedField(jniEnv, cls, fieldID, isStatic) \
231 _JNIUtilWrapMacro_Created(ToReflectedField, jniEnv, cls, fieldID, isStatic)
232#endif
233
234#ifndef JNIUtilThrow
235#define JNIUtilThrow(jniEnv, obj) \
236 _JNIUtilWrapMacro_FuncCalled(Throw, jniEnv, obj)
237#endif
238
239#ifndef JNIUtilThrowNew
240#define JNIUtilThrowNew(jniEnv, clazz, message) \
241 _JNIUtilWrapMacro_FuncCalled(ThrowNew, jniEnv, clazz, message)
242#endif
243
244#ifndef JNIUtilExceptionOccurred
245#define JNIUtilExceptionOccurred(jniEnv) \
246 _JNIUtilWrapMacro_FuncCalled(ExceptionOccurred, jniEnv)
247#endif
248
249#ifndef JNIUtilExceptionDescribe
250#define JNIUtilExceptionDescribe(jniEnv) \
251 _JNIUtilWrapMacro_FuncCalled(ExceptionDescribe, jniEnv)
252#endif
253
254#ifndef JNIUtilExceptionClear
255#define JNIUtilExceptionClear(jniEnv) \
256 _JNIUtilWrapMacro_FuncCalled(ExceptionClear, jniEnv)
257#endif
258
259#ifndef JNIUtilFatalError
260#define JNIUtilFatalError(jniEnv, msg) \
261 _JNIUtilWrapMacro_FuncCalled(FatalError, jniEnv, msg)
262#endif
263
264#ifndef JNIUtilPushLocalFrame
265#define JNIUtilPushLocalFrame(jniEnv, capacity) \
266 _JNIUtilWrapMacro_FuncCalled(PushLocalFrame, jniEnv, capacity)
267#endif
268
269#ifndef JNIUtilPopLocalFrame
270#define JNIUtilPopLocalFrame(jniEnv, result) \
271 _JNIUtilWrapMacro_Created(PopLocalFrame, jniEnv, result)
272#endif
273
274#ifndef JNIUtilNewGlobalRef
275#define JNIUtilNewGlobalRef(jniEnv, obj) \
276 _JNIUtilWrapMacro_Created(NewGlobalRef, jniEnv, obj)
277#endif
278
279#ifndef JNIUtilDeleteGlobalRef
280#define JNIUtilDeleteGlobalRef(jniEnv, globalRef) \
281 _JNIUtilWrapMacro_Released_0(DeleteGlobalRef, jniEnv, globalRef)
282#endif
283
284#ifndef JNIUtilDeleteLocalRef
285#define JNIUtilDeleteLocalRef(jniEnv, localRef) \
286 _JNIUtilWrapMacro_Released_0(DeleteLocalRef, jniEnv, localRef)
287#endif
288
289#ifndef JNIUtilIsSameObject
290#define JNIUtilIsSameObject(jniEnv, ref1, ref2) \
291 _JNIUtilWrapMacro_FuncCalled(IsSameObject, jniEnv, ref1, ref2)
292#endif
293
294#ifndef JNIUtilNewLocalRef
295#define JNIUtilNewLocalRef(jniEnv, ref) \
296 _JNIUtilWrapMacro_Created(NewLocalRef, jniEnv, ref)
297#endif
298
299#ifndef JNIUtilEnsureLocalCapacity
300#define JNIUtilEnsureLocalCapacity(jniEnv, capacity) \
301 _JNIUtilWrapMacro_FuncCalled(EnsureLocalCapacity, jniEnv, capacity)
302#endif
303
304#ifndef JNIUtilAllocObject
305#define JNIUtilAllocObject(jniEnv, clazz) \
306 _JNIUtilWrapMacro_Created(AllocObject, jniEnv, clazz)
307#endif
308
309#ifndef JNIUtilNewObject
310#define JNIUtilNewObject(jniEnv, clazz, methodID, ...) \
311 _JNIUtilWrapMacro_Created(NewObject, jniEnv, clazz, methodID, ##__VA_ARGS__)
312#endif
313
314#ifndef JNIUtilNewObjectV
315#define JNIUtilNewObjectV(jniEnv, clazz, methodID, args) \
316 _JNIUtilWrapMacro_Created(NewObjectV, jniEnv, clazz, methodID, args)
317#endif
318
319#ifndef JNIUtilNewObjectA
320#define JNIUtilNewObjectA(jniEnv, clazz, methodID, args) \
321 _JNIUtilWrapMacro_Created(NewObjectA, jniEnv, clazz, methodID, args)
322#endif
323
324#ifndef JNIUtilGetObjectClass
325#define JNIUtilGetObjectClass(jniEnv, obj) \
326 _JNIUtilWrapMacro_Created(GetObjectClass, jniEnv, obj)
327#endif
328
329#ifndef JNIUtilIsInstanceOf
330#define JNIUtilIsInstanceOf(jniEnv, obj, clazz) \
331 _JNIUtilWrapMacro_FuncCalled(IsInstanceOf, jniEnv, obj, clazz)
332#endif
333
334#ifndef JNIUtilGetMethodID
335#define JNIUtilGetMethodID(jniEnv, clazz, name, sig) \
336 _JNIUtilWrapMacro_FuncCalled(GetMethodID, jniEnv, clazz, name, sig)
337#endif
338
339#ifndef JNIUtilCallObjectMethod
340#define JNIUtilCallObjectMethod(jniEnv, obj, methodID, ...) \
341 _JNIUtilWrapMacro_Created(CallObjectMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
342#endif
343
344#ifndef JNIUtilCallObjectMethodV
345#define JNIUtilCallObjectMethodV(jniEnv, obj, methodID, args) \
346 _JNIUtilWrapMacro_Created(CallObjectMethodV, jniEnv, obj, methodID, args)
347#endif
348
349#ifndef JNIUtilCallObjectMethodA
350#define JNIUtilCallObjectMethodA(jniEnv, obj, methodID, args) \
351 _JNIUtilWrapMacro_Created(CallObjectMethodA, jniEnv, obj, methodID, args)
352#endif
353
354#ifndef JNIUtilCallBooleanMethod
355#define JNIUtilCallBooleanMethod(jniEnv, obj, methodID, ...) \
356 _JNIUtilWrapMacro_FuncCalled(CallBooleanMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
357#endif
358
359#ifndef JNIUtilCallBooleanMethodV
360#define JNIUtilCallBooleanMethodV(jniEnv, obj, methodID, args) \
361 _JNIUtilWrapMacro_FuncCalled(CallBooleanMethodV, jniEnv, obj, methodID, args)
362#endif
363
364#ifndef JNIUtilCallBooleanMethodA
365#define JNIUtilCallBooleanMethodA(jniEnv, obj, methodID, args) \
366 _JNIUtilWrapMacro_FuncCalled(CallBooleanMethodA, jniEnv, obj, methodID, args)
367#endif
368
369#ifndef JNIUtilCallByteMethod
370#define JNIUtilCallByteMethod(jniEnv, obj, methodID, ...) \
371 _JNIUtilWrapMacro_FuncCalled(CallByteMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
372#endif
373
374#ifndef JNIUtilCallByteMethodV
375#define JNIUtilCallByteMethodV(jniEnv, obj, methodID, args) \
376 _JNIUtilWrapMacro_FuncCalled(CallByteMethodV, jniEnv, obj, methodID, args)
377#endif
378
379#ifndef JNIUtilCallByteMethodA
380#define JNIUtilCallByteMethodA(jniEnv, obj, methodID, args) \
381 _JNIUtilWrapMacro_FuncCalled(CallByteMethodA, jniEnv, obj, methodID, args)
382#endif
383
384#ifndef JNIUtilCallCharMethod
385#define JNIUtilCallCharMethod(jniEnv, obj, methodID, ...) \
386 _JNIUtilWrapMacro_FuncCalled(CallCharMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
387#endif
388
389#ifndef JNIUtilCallCharMethodV
390#define JNIUtilCallCharMethodV(jniEnv, obj, methodID, args) \
391 _JNIUtilWrapMacro_FuncCalled(CallCharMethodV, jniEnv, obj, methodID, args)
392#endif
393
394#ifndef JNIUtilCallCharMethodA
395#define JNIUtilCallCharMethodA(jniEnv, obj, methodID, args) \
396 _JNIUtilWrapMacro_FuncCalled(CallCharMethodA, jniEnv, obj, methodID, args)
397#endif
398
399#ifndef JNIUtilCallShortMethod
400#define JNIUtilCallShortMethod(jniEnv, obj, methodID, ...) \
401 _JNIUtilWrapMacro_FuncCalled(CallShortMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
402#endif
403
404#ifndef JNIUtilCallShortMethodV
405#define JNIUtilCallShortMethodV(jniEnv, obj, methodID, args) \
406 _JNIUtilWrapMacro_FuncCalled(CallShortMethodV, jniEnv, obj, methodID, args)
407#endif
408
409#ifndef JNIUtilCallShortMethodA
410#define JNIUtilCallShortMethodA(jniEnv, obj, methodID, args) \
411 _JNIUtilWrapMacro_FuncCalled(CallShortMethodA, jniEnv, obj, methodID, args)
412#endif
413
414#ifndef JNIUtilCallIntMethod
415#define JNIUtilCallIntMethod(jniEnv, obj, methodID, ...) \
416 _JNIUtilWrapMacro_FuncCalled(CallIntMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
417#endif
418
419#ifndef JNIUtilCallIntMethodV
420#define JNIUtilCallIntMethodV(jniEnv, obj, methodID, args) \
421 _JNIUtilWrapMacro_FuncCalled(CallIntMethodV, jniEnv, obj, methodId, args)
422#endif
423
424#ifndef JNIUtilCallIntMethodA
425#define JNIUtilCallIntMethodA(jniEnv, obj, methodID, args) \
426 _JNIUtilWrapMacro_FuncCalled(CallIntMethodA, jniEnv, obj, methodID, args)
427#endif
428
429#ifndef JNIUtilCallLongMethod
430#define JNIUtilCallLongMethod(jniEnv, obj, methodID, ...) \
431 _JNIUtilWrapMacro_FuncCalled(CallLongMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
432#endif
433
434#ifndef JNIUtilCallLongMethodV
435#define JNIUtilCallLongMethodV(jniEnv, obj, methodID, args) \
436 _JNIUtilWrapMacro_FuncCalled(CallLongMethodV, jniEnv, obj, methodID, args)
437#endif
438
439#ifndef JNIUtilCallLongMethodA
440#define JNIUtilCallLongMethodA(jniEnv, obj, methodID, args) \
441 _JNIUtilWrapMacro_FuncCalled(CallLongMethodA, jniEnv, obj, methodID, args)
442#endif
443
444#ifndef JNIUtilCallFloatMethod
445#define JNIUtilCallFloatMethod(jniEnv, obj, methodID, ...) \
446 _JNIUtilWrapMacro_FuncCalled(CallFloatMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
447#endif
448
449#ifndef JNIUtilCallFloatMethodV
450#define JNIUtilCallFloatMethodV(jniEnv, obj, methodID, args) \
451 _JNIUtilWrapMacro_FuncCalled(CallFloatMethodV, jniEnv, obj, methodID, args)
452#endif
453
454#ifndef JNIUtilCallFloatMethodA
455#define JNIUtilCallFloatMethodA(jniEnv, obj, methodID, args) \
456 _JNIUtilWrapMacro_FuncCalled(CallFloatMethodA, jniEnv, obj, methodID, args)
457#endif
458
459#ifndef JNIUtilCallDoubleMethod
460#define JNIUtilCallDoubleMethod(jniEnv, obj, methodID, ...) \
461 _JNIUtilWrapMacro_FuncCalled(CallDoubleMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
462#endif
463
464#ifndef JNIUtilCallDoubleMethodV
465#define JNIUtilCallDoubleMethodV(jniEnv, obj, methodID, args) \
466 _JNIUtilWrapMacro_FuncCalled(CallDoubleMethodV, jniEnv, obj, methodID, args)
467#endif
468
469#ifndef JNIUtilCallDoubleMethodA
470#define JNIUtilCallDoubleMethodA(jniEnv, obj, methodID, args) \
471 _JNIUtilWrapMacro_FuncCalled(CallDoubleMethodA, jniEnv, obj, methodID, args)
472#endif
473
474#ifndef JNIUtilCallVoidMethod
475#define JNIUtilCallVoidMethod(jniEnv, obj, methodID, ...) \
476 _JNIUtilWrapMacro_FuncCalled(CallVoidMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
477#endif
478
479#ifndef JNIUtilCallVoidMethodV
480#define JNIUtilCallVoidMethodV(jniEnv, obj, methodID, args) \
481 _JNIUtilWrapMacro_FuncCalled(CallVoidMethodV, jniEnv, obj, methodID, args)
482#endif
483
484#ifndef JNIUtilCallVoidMethodA
485#define JNIUtilCallVoidMethodA(jniEnv, obj, methodID, args) \
486 _JNIUtilWrapMacro_FuncCalled(CallVoidMethodA, jniEnv, obj, methodID, args)
487#endif
488
489#ifndef JNIUtilCallNonvirtualObjectMethod
490#define JNIUtilCallNonvirtualObjectMethod(jniEnv, obj, methodID, ...) \
491 _JNIUtilWrapMacro_Created(CallNonvirtualObjectMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
492#endif
493
494#ifndef JNIUtilCallNonvirtualObjectMethodV
495#define JNIUtilCallNonvirtualObjectMethodV(jniEnv, obj, methodID, args) \
496 _JNIUtilWrapMacro_Created(CallNonvirtualObjectMethodV, jniEnv, obj, methodID, args)
497#endif
498
499#ifndef JNIUtilCallNonvirtualObjectMethodA
500#define JNIUtilCallNonvirtualObjectMethodA(jniEnv, obj, methodID, args) \
501 _JNIUtilWrapMacro_Created(CallNonvirtualObjectMethodA, jniEnv, obj, methodID, args)
502#endif
503
504#ifndef JNIUtilCallNonvirtualBooleanMethod
505#define JNIUtilCallNonvirtualBooleanMethod(jniEnv, obj, methodID, ...) \
506 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualBooleanMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
507#endif
508
509#ifndef JNIUtilCallNonvirtualBooleanMethodV
510#define JNIUtilCallNonvirtualBooleanMethodV(jniEnv, obj, methodID, args) \
511 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualBooleanMethodV, jniEnv, obj, methodID, args)
512#endif
513
514#ifndef JNIUtilCallNonvirtualBooleanMethodA
515#define JNIUtilCallNonvirtualBooleanMethodA(jniEnv, obj, methodID, args) \
516 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualBooleanMethodA, jniEnv, obj, methodID, args)
517#endif
518
519#ifndef JNIUtilCallNonvirtualByteMethod
520#define JNIUtilCallNonvirtualByteMethod(jniEnv, obj, methodID, ...) \
521 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualByteMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
522#endif
523
524#ifndef JNIUtilCallNonvirtualByteMethodV
525#define JNIUtilCallNonvirtualByteMethodV(jniEnv, obj, methodID, args) \
526 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualByteMethodV, jniEnv, obj, methodID, args)
527#endif
528
529#ifndef JNIUtilCallNonvirtualByteMethodA
530#define JNIUtilCallNonvirtualByteMethodA(jniEnv, obj, methodID, args) \
531 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualByteMethodA, jniEnv, obj, methodID, args)
532#endif
533
534#ifndef JNIUtilCallNonvirtualCharMethod
535#define JNIUtilCallNonvirtualCharMethod(jniEnv, obj, methodID, ...) \
536 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualCharMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
537#endif
538
539#ifndef JNIUtilCallNonvirtualCharMethodV
540#define JNIUtilCallNonvirtualCharMethodV(jniEnv, obj, methodID, args) \
541 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualCharMethodV, jniEnv, obj, methodID, args)
542#endif
543
544#ifndef JNIUtilCallNonvirtualCharMethodA
545#define JNIUtilCallNonvirtualCharMethodA(jniEnv, obj, methodID, args) \
546 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualCharMethodA, jniEnv, obj, methodID, args)
547#endif
548
549#ifndef JNIUtilCallNonvirtualShortMethod
550#define JNIUtilCallNonvirtualShortMethod(jniEnv, obj, methodID, ...) \
551 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualShortMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
552#endif
553
554#ifndef JNIUtilCallNonvirtualShortMethodV
555#define JNIUtilCallNonvirtualShortMethodV(jniEnv, obj, methodID, args) \
556 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualShortMethodV, jniEnv, obj, methodID, args)
557#endif
558
559#ifndef JNIUtilCallNonvirtualShortMethodA
560#define JNIUtilCallNonvirtualShortMethodA(jniEnv, obj, methodID, args) \
561 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualShortMethodA, jniEnv, obj, methodID, args)
562#endif
563
564#ifndef JNIUtilCallNonvirtualIntMethod
565#define JNIUtilCallNonvirtualIntMethod(jniEnv, obj, methodID, ...) \
566 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualIntMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
567#endif
568
569#ifndef JNIUtilCallNonvirtualIntMethodV
570#define JNIUtilCallNonvirtualIntMethodV(jniEnv, obj, methodID, args) \
571 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualIntMethodV, jniEnv, obj, methodID, args)
572#endif
573
574#ifndef JNIUtilCallNonvirtualIntMethodA
575#define JNIUtilCallNonvirtualIntMethodA(jniEnv, obj, methodID, args) \
576 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualIntMethodA, jniEnv, obj, methodID, args)
577#endif
578
579#ifndef JNIUtilCallNonvirtualLongMethod
580#define JNIUtilCallNonvirtualLongMethod(jniEnv, obj, methodID, ...) \
581 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualLongMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
582#endif
583
584#ifndef JNIUtilCallNonvirtualLongMethodV
585#define JNIUtilCallNonvirtualLongMethodV(jniEnv, obj, methodID, args) \
586 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualLongMethodV, jniEnv, obj, methodID, args)
587#endif
588
589#ifndef JNIUtilCallNonvirtualLongMethodA
590#define JNIUtilCallNonvirtualLongMethodA(jniEnv, obj, methodID, args) \
591 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualLongMethodA, jniEnv, obj, methodID, args)
592#endif
593
594#ifndef JNIUtilCallNonvirtualFloatMethod
595#define JNIUtilCallNonvirtualFloatMethod(jniEnv, obj, methodID, ...) \
596 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualFloatMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
597#endif
598
599#ifndef JNIUtilCallNonvirtualFloatMethodV
600#define JNIUtilCallNonvirtualFloatMethodV(jniEnv, obj, methodID, args) \
601 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualFloatMethodV, jniEnv, obj, methodID, args)
602#endif
603
604#ifndef JNIUtilCallNonvirtualFloatMethodA
605#define JNIUtilCallNonvirtualFloatMethodA(jniEnv, obj, methodID, args) \
606 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualFloatMethodA, jniEnv, obj, methodID, args)
607#endif
608
609#ifndef JNIUtilCallNonvirtualDoubleMethod
610#define JNIUtilCallNonvirtualDoubleMethod(jniEnv, obj, methodID, ...) \
611 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualDoubleMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
612#endif
613
614#ifndef JNIUtilCallNonvirtualDoubleMethodV
615#define JNIUtilCallNonvirtualDoubleMethodV(jniEnv, obj, methodID, args) \
616 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualDoubleMethodV, jniEnv, obj, methodID, args)
617#endif
618
619#ifndef JNIUtilCallNonvirtualDoubleMethodA
620#define JNIUtilCallNonvirtualDoubleMethodA(jniEnv, obj, methodID, args) \
621 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualDoubleMethodA, jniEnv, obj, methodID, args)
622#endif
623
624#ifndef JNIUtilCallNonvirtualVoidMethod
625#define JNIUtilCallNonvirtualVoidMethod(jniEnv, obj, methodID, ...) \
626 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualVoidMethod, jniEnv, obj, methodID, ##__VA_ARGS__)
627#endif
628
629#ifndef JNIUtilCallNonvirtualVoidMethodV
630#define JNIUtilCallNonvirtualVoidMethodV(jniEnv, obj, methodID, args) \
631 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualVoidMethodV, jniEnv, obj, methodID, args)
632#endif
633
634#ifndef JNIUtilCallNonvirtualVoidMethodA
635#define JNIUtilCallNonvirtualVoidMethodA(jniEnv, obj, methodID, args) \
636 _JNIUtilWrapMacro_FuncCalled(CallNonvirtualVoidMethodA, jniEnv, obj, methodID, args)
637#endif
638
639#ifndef JNIUtilGetFieldID
640#define JNIUtilGetFieldID(jniEnv, clazz, name, sig) \
641 _JNIUtilWrapMacro_FuncCalled(GetFieldID, jniEnv, clazz, name, sig)
642#endif
643
644#ifndef JNIUtilGetObjectField
645#define JNIUtilGetObjectField(jniEnv, obj, fieldID) \
646 _JNIUtilWrapMacro_Created(GetObjectField, jniEnv, obj, fieldID)
647#endif
648
649#ifndef JNIUtilGetBooleanField
650#define JNIUtilGetBooleanField(jniEnv, obj, fieldID) \
651 _JNIUtilWrapMacro_FuncCalled(GetBooleanField, jniEnv, obj, fieldID)
652#endif
653
654#ifndef JNIUtilGetByteField
655#define JNIUtilGetByteField(jniEnv, obj, fieldID) \
656 _JNIUtilWrapMacro_FuncCalled(GetByteField, jniEnv, obj, fieldID)
657#endif
658
659#ifndef JNIUtilGetCharField
660#define JNIUtilGetCharField(jniEnv, obj, fieldID) \
661 _JNIUtilWrapMacro_FuncCalled(GetCharField, jniEnv, obj, fieldID)
662#endif
663
664#ifndef JNIUtilGetShortField
665#define JNIUtilGetShortField(jniEnv, obj, fieldID) \
666 _JNIUtilWrapMacro_FuncCalled(GetShortField, jniEnv, obj, fieldID)
667#endif
668
669#ifndef JNIUtilGetIntField
670#define JNIUtilGetIntField(jniEnv, obj, fieldID) \
671 _JNIUtilWrapMacro_FuncCalled(GetIntField, jniEnv, obj, fieldID)
672#endif
673
674#ifndef JNIUtilGetLongField
675#define JNIUtilGetLongField(jniEnv, obj, fieldID) \
676 _JNIUtilWrapMacro_FuncCalled(GetLongField, jniEnv, obj, fieldID)
677#endif
678
679#ifndef JNIUtilGetFloatField
680#define JNIUtilGetFloatField(jniEnv, obj, fieldID) \
681 _JNIUtilWrapMacro_FuncCalled(GetFloatField, jniEnv, obj, fieldID)
682#endif
683
684#ifndef JNIUtilGetDoubleField
685#define JNIUtilGetDoubleField(jniEnv, obj, fieldID) \
686 _JNIUtilWrapMacro_FuncCalled(GetDoubleField, jniEnv, obj, fieldID)
687#endif
688
689#ifndef JNIUtilSetObjectField
690#define JNIUtilSetObjectField(jniEnv, obj, fieldID, value) \
691 _JNIUtilWrapMacro_FuncCalled(SetObjectField, jniEnv, obj, fieldID, value)
692#endif
693
694#ifndef JNIUtilSetBooleanField
695#define JNIUtilSetBooleanField(jniEnv, obj, fieldID, value) \
696 _JNIUtilWrapMacro_FuncCalled(SetBooleanField, jniEnv, obj, fieldID, value)
697#endif
698
699#ifndef JNIUtilSetByteField
700#define JNIUtilSetByteField(jniEnv, obj, fieldID, value) \
701 _JNIUtilWrapMacro_FuncCalled(SetByteField, jniEnv, obj, fieldID, value)
702#endif
703
704#ifndef JNIUtilSetCharField
705#define JNIUtilSetCharField(jniEnv, obj, fieldID, value) \
706 _JNIUtilWrapMacro_FuncCalled(SetCharField, jniEnv, obj, fieldID, value)
707#endif
708
709#ifndef JNIUtilSetShortField
710#define JNIUtilSetShortField(jniEnv, obj, fieldID, value) \
711 _JNIUtilWrapMacro_FuncCalled(SetShortField, jniEnv, obj, fieldID, value)
712#endif
713
714#ifndef JNIUtilSetIntField
715#define JNIUtilSetIntField(jniEnv, obj, fieldID, value) \
716 _JNIUtilWrapMacro_FuncCalled(SetIntField, jniEnv, obj, fieldID, value)
717#endif
718
719#ifndef JNIUtilSetLongField
720#define JNIUtilSetLongField(jniEnv, obj, fieldID, value) \
721 _JNIUtilWrapMacro_FuncCalled(SetLongField, jniEnv, obj, fieldID, value)
722#endif
723
724#ifndef JNIUtilSetFloatField
725#define JNIUtilSetFloatField(jniEnv, obj, fieldID, value) \
726 _JNIUtilWrapMacro_FuncCalled(SetFloatField, jniEnv, obj, fieldID, value)
727#endif
728
729#ifndef JNIUtilSetDoubleField
730#define JNIUtilSetDoubleField(jniEnv, obj, fieldID, value) \
731 _JNIUtilWrapMacro_FuncCalled(SetDoubleField, jniEnv, obj, fieldID, value)
732#endif
733
734#ifndef JNIUtilGetStaticMethodID
735#define JNIUtilGetStaticMethodID(jniEnv, clazz, name, sig) \
736 _JNIUtilWrapMacro_FuncCalled(GetStaticMethodID, jniEnv, clazz, name, sig)
737#endif
738
739#ifndef JNIUtilCallStaticObjectMethod
740#define JNIUtilCallStaticObjectMethod(jniEnv, clazz, methodID, ...) \
741 _JNIUtilWrapMacro_Created(CallStaticObjectMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
742#endif
743
744#ifndef JNIUtilCallStaticObjectMethodV
745#define JNIUtilCallStaticObjectMethodV(jniEnv, clazz, methodID, args) \
746 _JNIUtilWrapMacro_Created(CallStaticObjectMethodV, jniEnv, clazz, methodID, args)
747#endif
748
749#ifndef JNIUtilCallStaticObjectMethodA
750#define JNIUtilCallStaticObjectMethodA(jniEnv, clazz, methodID, args) \
751 _JNIUtilWrapMacro_Created(CallStaticObjectMethodA, jniEnv, clazz, methodID, args)
752#endif
753
754#ifndef JNIUtilCallStaticBooleanMethod
755#define JNIUtilCallStaticBooleanMethod(jniEnv, clazz, methodID, ...) \
756 _JNIUtilWrapMacro_FuncCalled(CallStaticBooleanMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
757#endif
758
759#ifndef JNIUtilCallStaticBooleanMethodV
760#define JNIUtilCallStaticBooleanMethodV(jniEnv, clazz, methodID, args) \
761 _JNIUtilWrapMacro_FuncCalled(CallStaticBooleanMethodV, jniEnv, clazz, methodID, args)
762#endif
763
764#ifndef JNIUtilCallStaticBooleanMethodA
765#define JNIUtilCallStaticBooleanMethodA(jniEnv, clazz, methodID, args) \
766 _JNIUtilWrapMacro_FuncCalled(CallStaticBooleanMethodA, jniEnv, clazz, methodID, args)
767#endif
768
769#ifndef JNIUtilCallStaticByteMethod
770#define JNIUtilCallStaticByteMethod(jniEnv, clazz, methodID, ...) \
771 _JNIUtilWrapMacro_FuncCalled(CallStaticByteMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
772#endif
773
774#ifndef JNIUtilCallStaticByteMethodV
775#define JNIUtilCallStaticByteMethodV(jniEnv, clazz, methodID, args) \
776 _JNIUtilWrapMacro_FuncCalled(CallStaticByteMethodV, jniEnv, clazz, methodID, args)
777#endif
778
779#ifndef JNIUtilCallStaticByteMethodA
780#define JNIUtilCallStaticByteMethodA(jniEnv, clazz, methodID, args) \
781 _JNIUtilWrapMacro_FuncCalled(CallStaticByteMethodA, jniEnv, clazz, methodID, args)
782#endif
783
784#ifndef JNIUtilCallStaticCharMethod
785#define JNIUtilCallStaticCharMethod(jniEnv, clazz, methodID, ...) \
786 _JNIUtilWrapMacro_FuncCalled(CallStaticCharMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
787#endif
788
789#ifndef JNIUtilCallStaticCharMethodV
790#define JNIUtilCallStaticCharMethodV(jniEnv, clazz, methodID, args) \
791 _JNIUtilWrapMacro_FuncCalled(CallStaticCharMethodV, jniEnv, clazz, methodID, args)
792#endif
793
794#ifndef JNIUtilCallStaticCharMethodA
795#define JNIUtilCallStaticCharMethodA(jniEnv, clazz, methodID, args) \
796 _JNIUtilWrapMacro_FuncCalled(CallStaticCharMethodA, jniEnv, clazz, methodID, args)
797#endif
798
799#ifndef JNIUtilCallStaticShortMethod
800#define JNIUtilCallStaticShortMethod(jniEnv, clazz, methodID, ...) \
801 _JNIUtilWrapMacro_FuncCalled(CallStaticShortMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
802#endif
803
804#ifndef JNIUtilCallStaticShortMethodV
805#define JNIUtilCallStaticShortMethodV(jniEnv, clazz, methodID, args) \
806 _JNIUtilWrapMacro_FuncCalled(CallStaticShortMethodV, jniEnv, clazz, methodID, args)
807#endif
808
809#ifndef JNIUtilCallStaticShortMethodA
810#define JNIUtilCallStaticShortMethodA(jniEnv, clazz, methodID, args) \
811 _JNIUtilWrapMacro_FuncCalled(CallStaticShortMethodA, jniEnv, clazz, methodID, args)
812#endif
813
814#ifndef JNIUtilCallStaticIntMethod
815#define JNIUtilCallStaticIntMethod(jniEnv, clazz, methodID, ...) \
816 _JNIUtilWrapMacro_FuncCalled(CallStaticIntMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
817#endif
818
819#ifndef JNIUtilCallStaticIntMethodV
820#define JNIUtilCallStaticIntMethodV(jniEnv, clazz, methodID, args) \
821 _JNIUtilWrapMacro_FuncCalled(CallStaticIntMethodV, jniEnv, clazz, methodID, args)
822#endif
823
824#ifndef JNIUtilCallStaticIntMethodA
825#define JNIUtilCallStaticIntMethodA(jniEnv, clazz, methodID, args) \
826 _JNIUtilWrapMacro_FuncCalled(CallStaticIntMethodA, jniEnv, clazz, methodID, args)
827#endif
828
829#ifndef JNIUtilCallStaticLongMethod
830#define JNIUtilCallStaticLongMethod(jniEnv, clazz, methodID, ...) \
831 _JNIUtilWrapMacro_FuncCalled(CallStaticLongMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
832#endif
833
834#ifndef JNIUtilCallStaticLongMethodV
835#define JNIUtilCallStaticLongMethodV(jniEnv, clazz, methodID, args) \
836 _JNIUtilWrapMacro_FuncCalled(CallStaticLongMethodV, jniEnv, clazz, methodID, args)
837#endif
838
839#ifndef JNIUtilCallStaticLongMethodA
840#define JNIUtilCallStaticLongMethodA(jniEnv, clazz, methodID, args) \
841 _JNIUtilWrapMacro_FuncCalled(CallStaticLongMethodA, jniEnv, clazz, methodID, args)
842#endif
843
844#ifndef JNIUtilCallStaticFloatMethod
845#define JNIUtilCallStaticFloatMethod(jniEnv, clazz, methodID, ...) \
846 _JNIUtilWrapMacro_FuncCalled(CallStaticFloatMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
847#endif
848
849#ifndef JNIUtilCallStaticFloatMethodV
850#define JNIUtilCallStaticFloatMethodV(jniEnv, clazz, methodID, args) \
851 _JNIUtilWrapMacro_FuncCalled(CallStaticFloatMethodV, jniEnv, clazz, methodID, args)
852#endif
853
854#ifndef JNIUtilCallStaticFloatMethodA
855#define JNIUtilCallStaticFloatMethodA(jniEnv, clazz, methodID, args) \
856 _JNIUtilWrapMacro_FuncCalled(CallStaticFloatMethodA, jniEnv, clazz, methodID, args)
857#endif
858
859#ifndef JNIUtilCallStaticDoubleMethod
860#define JNIUtilCallStaticDoubleMethod(jniEnv, clazz, methodID, ...) \
861 _JNIUtilWrapMacro_FuncCalled(CallStaticDoubleMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
862#endif
863
864#ifndef JNIUtilCallStaticDoubleMethodV
865#define JNIUtilCallStaticDoubleMethodV(jniEnv, clazz, methodID, args) \
866 _JNIUtilWrapMacro_FuncCalled(CallStaticDoubleMethodV, jniEnv, clazz, methodID, args)
867#endif
868
869#ifndef JNIUtilCallStaticDoubleMethodA
870#define JNIUtilCallStaticDoubleMethodA(jniEnv, clazz, methodID, args) \
871 _JNIUtilWrapMacro_FuncCalled(CallStaticDoubleMethodA, jniEnv, clazz, methodID, args)
872#endif
873
874#ifndef JNIUtilCallStaticVoidMethod
875#define JNIUtilCallStaticVoidMethod(jniEnv, clazz, methodID, ...) \
876 _JNIUtilWrapMacro_FuncCalled(CallStaticVoidMethod, jniEnv, clazz, methodID, ##__VA_ARGS__)
877#endif
878
879#ifndef JNIUtilCallStaticVoidMethodV
880#define JNIUtilCallStaticVoidMethodV(jniEnv, clazz, methodID, args) \
881 _JNIUtilWrapMacro_FuncCalled(CallStaticVoidMethodV, jniEnv, clazz, methodID, args)
882#endif
883
884#ifndef JNIUtilCallStaticVoidMethodA
885#define JNIUtilCallStaticVoidMethodA(jniEnv, clazz, methodID, args) \
886 _JNIUtilWrapMacro_FuncCalled(CallStaticVoidMethodA, jniEnv, clazz, methodID, args)
887#endif
888
889#ifndef JNIUtilGetStaticFieldID
890#define JNIUtilGetStaticFieldID(jniEnv, clazz, name, sig) \
891 _JNIUtilWrapMacro_FuncCalled(GetStaticFieldID, jniEnv, clazz, name, sig)
892#endif
893
894#ifndef JNIUtilGetStaticObjectField
895#define JNIUtilGetStaticObjectField(jniEnv, clazz, fieldID) \
896 _JNIUtilWrapMacro_Created(GetStaticObjectField, jniEnv, clazz, fieldID)
897#endif
898
899#ifndef JNIUtilGetStaticBooleanField
900#define JNIUtilGetStaticBooleanField(jniEnv, clazz, fieldID) \
901 _JNIUtilWrapMacro_FuncCalled(GetStaticBooleanField, jniEnv, clazz, fieldID)
902#endif
903
904#ifndef JNIUtilGetStaticByteField
905#define JNIUtilGetStaticByteField(jniEnv, clazz, fieldID) \
906 _JNIUtilWrapMacro_FuncCalled(GetStaticByteField, jniEnv, clazz, fieldID)
907#endif
908
909#ifndef JNIUtilGetStaticCharField
910#define JNIUtilGetStaticCharField(jniEnv, clazz, fieldID) \
911 _JNIUtilWrapMacro_FuncCalled(GetStaticCharField, jniEnv, clazz, fieldID)
912#endif
913
914#ifndef JNIUtilGetStaticShortField
915#define JNIUtilGetStaticShortField(jniEnv, clazz, fieldID) \
916 _JNIUtilWrapMacro_FuncCalled(GetStaticShortField, jniEnv, clazz, fieldID)
917#endif
918
919#ifndef JNIUtilGetStaticIntField
920#define JNIUtilGetStaticIntField(jniEnv, clazz, fieldID) \
921 _JNIUtilWrapMacro_FuncCalled(GetStaticIntField, jniEnv, clazz, fieldID)
922#endif
923
924#ifndef JNIUtilGetStaticLongField
925#define JNIUtilGetStaticLongField(jniEnv, clazz, fieldID) \
926 _JNIUtilWrapMacro_FuncCalled(GetStaticLongField, jniEnv, clazz, fieldID)
927#endif
928
929#ifndef JNIUtilGetStaticFloatField
930#define JNIUtilGetStaticFloatField(jniEnv, clazz, fieldID) \
931 _JNIUtilWrapMacro_FuncCalled(GetStaticFloatField, jniEnv, clazz, fieldID)
932#endif
933
934#ifndef JNIUtilGetStaticDoubleField
935#define JNIUtilGetStaticDoubleField(jniEnv, clazz, fieldID) \
936 _JNIUtilWrapMacro_FuncCalled(GetStaticDoubleField, jniEnv, clazz, fieldID)
937#endif
938
939#ifndef JNIUtilSetStaticObjectField
940#define JNIUtilSetStaticObjectField(jniEnv, clazz, fieldID, value) \
941 _JNIUtilWrapMacro_FuncCalled(SetStaticObjectField, jniEnv, clazz, fieldID, value)
942#endif
943
944#ifndef JNIUtilSetStaticBooleanField
945#define JNIUtilSetStaticBooleanField(jniEnv, clazz, fieldID, value) \
946 _JNIUtilWrapMacro_FuncCalled(SetStaticBooleanField, jniEnv, clazz, fieldID, value)
947#endif
948
949#ifndef JNIUtilSetStaticByteField
950#define JNIUtilSetStaticByteField(jniEnv, clazz, fieldID, value) \
951 _JNIUtilWrapMacro_FuncCalled(SetStaticByteField, jniEnv, clazz, fieldID, value)
952#endif
953
954#ifndef JNIUtilSetStaticCharField
955#define JNIUtilSetStaticCharField(jniEnv, clazz, fieldID, value) \
956 _JNIUtilWrapMacro_FuncCalled(SetStaticCharField, jniEnv, clazz, fieldID, value)
957#endif
958
959#ifndef JNIUtilSetStaticShortField
960#define JNIUtilSetStaticShortField(jniEnv, clazz, fieldID, value) \
961 _JNIUtilWrapMacro_FuncCalled(SetStaticShortField, jniEnv, clazz, fieldID, value)
962#endif
963
964#ifndef JNIUtilSetStaticIntField
965#define JNIUtilSetStaticIntField(jniEnv, clazz, fieldID, value) \
966 _JNIUtilWrapMacro_FuncCalled(SetStaticIntField, jniEnv, clazz, fieldID, value)
967#endif
968
969#ifndef JNIUtilSetStaticLongField
970#define JNIUtilSetStaticLongField(jniEnv, clazz, fieldID, value) \
971 _JNIUtilWrapMacro_FuncCalled(SetStaticLongField, jniEnv, clazz, fieldID, value)
972#endif
973
974#ifndef JNIUtilSetStaticFloatField
975#define JNIUtilSetStaticFloatField(jniEnv, clazz, fieldID, value) \
976 _JNIUtilWrapMacro_FuncCalled(SetStaticFloatField, jniEnv, clazz, fieldID, value)
977#endif
978
979#ifndef JNIUtilSetStaticDoubleField
980#define JNIUtilSetStaticDoubleField(jniEnv, clazz, fieldID, value) \
981 _JNIUtilWrapMacro_FuncCalled(SetStaticDoubleField, jniEnv, clazz, fieldID, value)
982#endif
983
984#ifndef JNIUtilNewString
985#define JNIUtilNewString(jniEnv, unicodeChars, len) \
986 _JNIUtilWrapMacro_Created(NewString, jniEnv, unicodeChars, len)
987#endif
988
989#ifndef JNIUtilGetStringLength
990#define JNIUtilGetStringLength(jniEnv, string) \
991 _JNIUtilWrapMacro_FuncCalled(GetStringLength, jniEnv, string)
992#endif
993
994#ifndef JNIUtilGetStringChars
995#define JNIUtilGetStringChars(jniEnv, string, isCopy) \
996 _JNIUtilWrapMacro_Created(GetStringChars, jniEnv, string, isCopy)
997#endif
998
999#ifndef JNIUtilReleaseStringChars
1000#define JNIUtilReleaseStringChars(jniEnv, string, chars) \
1001 _JNIUtilWrapMacro_Released_1(ReleaseStringChars, jniEnv, string, chars)
1002#endif
1003
1004#ifndef JNIUtilNewStringUTF
1005#define JNIUtilNewStringUTF(jniEnv, bytes) \
1006 _JNIUtilWrapMacro_Created(NewStringUTF, jniEnv, bytes)
1007#endif
1008
1009#ifndef JNIUtilGetStringUTFLength
1010#define JNIUtilGetStringUTFLength(jniEnv, string) \
1011 _JNIUtilWrapMacro_FuncCalled(GetStringUTFLength, jniEnv, bytes)
1012#endif
1013
1014#ifndef JNIUtilGetStringUTFChars
1015#define JNIUtilGetStringUTFChars(jniEnv, string, isCopy) \
1016 _JNIUtilWrapMacro_Created(GetStringUTFChars, jniEnv, string, isCopy)
1017#endif
1018
1019#ifndef JNIUtilReleaseStringUTFChars
1020#define JNIUtilReleaseStringUTFChars(jniEnv, string, utf) \
1021 _JNIUtilWrapMacro_Released_1(ReleaseStringUTFChars, jniEnv, string, utf)
1022#endif
1023
1024#ifndef JNIUtilGetArrayLength
1025#define JNIUtilGetArrayLength(jniEnv, array) \
1026 _JNIUtilWrapMacro_FuncCalled(GetArrayLength, jniEnv, array)
1027#endif
1028
1029#ifndef JNIUtilNewObjectArray
1030#define JNIUtilNewObjectArray(jniEnv, length, elementClass, initialElement) \
1031 _JNIUtilWrapMacro_Created(NewObjectArray, jniEnv, length, elementClass, initialElement)
1032#endif
1033
1034#ifndef JNIUtilGetObjectArrayElement
1035#define JNIUtilGetObjectArrayElement(jniEnv, array, index) \
1036 _JNIUtilWrapMacro_Created(GetObjectArrayElement, jniEnv, array, index)
1037#endif
1038
1039#ifndef JNIUtilSetObjectArrayElement
1040#define JNIUtilSetObjectArrayElement(jniEnv, array, index, value) \
1041 _JNIUtilWrapMacro_FuncCalled(SetObjectArrayElement, jniEnv, array, index, value)
1042#endif
1043
1044#ifndef JNIUtilNewBooleanArray
1045#define JNIUtilNewBooleanArray(jniEnv, length) \
1046 _JNIUtilWrapMacro_Created(NewBooleanArray, jniEnv, length)
1047#endif
1048
1049#ifndef JNIUtilNewByteArray
1050#define JNIUtilNewByteArray(jniEnv, length) \
1051 _JNIUtilWrapMacro_Created(NewByteArray, jniEnv, length)
1052#endif
1053
1054#ifndef JNIUtilNewCharArray
1055#define JNIUtilNewCharArray(jniEnv, length) \
1056 _JNIUtilWrapMacro_Created(NewCharArray, jniEnv, length)
1057#endif
1058
1059#ifndef JNIUtilNewShortArray
1060#define JNIUtilNewShortArray(jniEnv, length) \
1061 _JNIUtilWrapMacro_Created(NewShortArray, jniEnv, length)
1062#endif
1063
1064#ifndef JNIUtilNewIntArray
1065#define JNIUtilNewIntArray(jniEnv, length) \
1066 _JNIUtilWrapMacro_Created(NewIntArray, jniEnv, length)
1067#endif
1068
1069#ifndef JNIUtilNewLongArray
1070#define JNIUtilNewLongArray(jniEnv, length) \
1071 _JNIUtilWrapMacro_Created(NewLongArray, jniEnv, length)
1072#endif
1073
1074#ifndef JNIUtilNewFloatArray
1075#define JNIUtilNewFloatArray(jniEnv, length) \
1076 _JNIUtilWrapMacro_Created(NewFloatArray, jniEnv, length)
1077#endif
1078
1079#ifndef JNIUtilNewDoubleArray
1080#define JNIUtilNewDoubleArray(jniEnv, length) \
1081 _JNIUtilWrapMacro_Created(NewDoubleArray, jniEnv, length)
1082#endif
1083
1084#ifndef JNIUtilGetBooleanArrayElements
1085#define JNIUtilGetBooleanArrayElements(jniEnv, array, isCopy) \
1086 _JNIUtilWrapMacro_Created(GetBooleanArrayElements, jniEnv, array, isCopy)
1087#endif
1088
1089#ifndef JNIUtilGetByteArrayElements
1090#define JNIUtilGetByteArrayElements(jniEnv, array, isCopy) \
1091 _JNIUtilWrapMacro_Created(GetByteArrayElements, jniEnv, array, isCopy)
1092#endif
1093
1094#ifndef JNIUtilGetCharArrayElements
1095#define JNIUtilGetCharArrayElements(jniEnv, array, isCopy) \
1096 _JNIUtilWrapMacro_Created(GetCharArrayElements, jniEnv, array, isCopy)
1097#endif
1098
1099#ifndef JNIUtilGetShortArrayElements
1100#define JNIUtilGetShortArrayElements(jniEnv, array, isCopy) \
1101 _JNIUtilWrapMacro_Created(GetShortArrayElements, jniEnv, array, isCopy)
1102#endif
1103
1104#ifndef JNIUtilGetIntArrayElements
1105#define JNIUtilGetIntArrayElements(jniEnv, array, isCopy) \
1106 _JNIUtilWrapMacro_Created(GetIntArrayElements, jniEnv, array, isCopy)
1107#endif
1108
1109#ifndef JNIUtilGetLongArrayElements
1110#define JNIUtilGetLongArrayElements(jniEnv, array, isCopy) \
1111 _JNIUtilWrapMacro_Created(GetLongArrayElements, jniEnv, array, isCopy)
1112#endif
1113
1114#ifndef JNIUtilGetFloatArrayElements
1115#define JNIUtilGetFloatArrayElements(jniEnv, array, isCopy) \
1116 _JNIUtilWrapMacro_Created(GetFloatArrayElements, jniEnv, array, isCopy)
1117#endif
1118
1119#ifndef JNIUtilGetDoubleArrayElements
1120#define JNIUtilGetDoubleArrayElements(jniEnv, array, isCopy) \
1121 _JNIUtilWrapMacro_Created(GetDoubleArrayElements, jniEnv, array, isCopy)
1122#endif
1123
1124#ifndef JNIUtilReleaseBooleanArrayElements
1125#define JNIUtilReleaseBooleanArrayElements(jniEnv, array, elems, mode) \
1126 _JNIUtilWrapMacro_Released_1(ReleaseBooleanArrayElements, jniEnv, array, elems, mode)
1127#endif
1128
1129#ifndef JNIUtilReleaseByteArrayElements
1130#define JNIUtilReleaseByteArrayElements(jniEnv, array, elems, mode) \
1131 _JNIUtilWrapMacro_Released_1(ReleaseByteArrayElements, jniEnv, array, elems, mode)
1132#endif
1133
1134#ifndef JNIUtilReleaseCharArrayElements
1135#define JNIUtilReleaseCharArrayElements(jniEnv, array, elems, mode) \
1136 _JNIUtilWrapMacro_Released_1(ReleaseCharArrayElements, jniEnv, array, elems, mode)
1137#endif
1138
1139#ifndef JNIUtilReleaseShortArrayElements
1140#define JNIUtilReleaseShortArrayElements(jniEnv, array, elems, mode) \
1141 _JNIUtilWrapMacro_Released_1(ReleaseShortArrayElements, jniEnv, array, elems, mode)
1142#endif
1143
1144#ifndef JNIUtilReleaseIntArrayElements
1145#define JNIUtilReleaseIntArrayElements(jniEnv, array, elems, mode) \
1146 _JNIUtilWrapMacro_Released_1(ReleaseIntArrayElements, jniEnv, array, elems, mode)
1147#endif
1148
1149#ifndef JNIUtilReleaseLongArrayElements
1150#define JNIUtilReleaseLongArrayElements(jniEnv, array, elems, mode) \
1151 _JNIUtilWrapMacro_Released_1(ReleaseLongArrayElements, jniEnv, array, elems, mode)
1152#endif
1153
1154#ifndef JNIUtilReleaseFloatArrayElements
1155#define JNIUtilReleaseFloatArrayElements(jniEnv, array, elems, mode) \
1156 _JNIUtilWrapMacro_Released_1(ReleaseFloatArrayElements, jniEnv, array, elems, mode)
1157#endif
1158
1159#ifndef JNIUtilReleaseDoubleArrayElements
1160#define JNIUtilReleaseDoubleArrayElements(jniEnv, array, elems, mode) \
1161 _JNIUtilWrapMacro_Released_1(ReleaseDoubleArrayElements, jniEnv, array, elems, mode)
1162#endif
1163
1164#ifndef JNIUtilGetBooleanArrayRegion
1165#define JNIUtilGetBooleanArrayRegion(jniEnv, array, start, len, buf) \
1166 _JNIUtilWrapMacro_FuncCalled(GetBooleanArrayRegion, jniEnv, array, start, len, buf)
1167#endif
1168
1169#ifndef JNIUtilGetByteArrayRegion
1170#define JNIUtilGetByteArrayRegion(jniEnv, array, start, len, buf) \
1171 _JNIUtilWrapMacro_FuncCalled(GetByteArrayRegion, jniEnv, array, start, len, buf)
1172#endif
1173
1174#ifndef JNIUtilGetCharArrayRegion
1175#define JNIUtilGetCharArrayRegion(jniEnv, array, start, len, buf) \
1176 _JNIUtilWrapMacro_FuncCalled(GetCharArrayRegion, jniEnv, array, start, len, buf)
1177#endif
1178
1179#ifndef JNIUtilGetShortArrayRegion
1180#define JNIUtilGetShortArrayRegion(jniEnv, array, start, len, buf) \
1181 _JNIUtilWrapMacro_FuncCalled(GetShortArrayRegion, jniEnv, array, start, len, buf)
1182#endif
1183
1184#ifndef JNIUtilGetIntArrayRegion
1185#define JNIUtilGetIntArrayRegion(jniEnv, array, start, len, buf) \
1186 _JNIUtilWrapMacro_FuncCalled(GetIntArrayRegion, jniEnv, array, start, len, buf)
1187#endif
1188
1189#ifndef JNIUtilGetLongArrayRegion
1190#define JNIUtilGetLongArrayRegion(jniEnv, array, start, len, buf) \
1191 _JNIUtilWrapMacro_FuncCalled(GetLongArrayRegion, jniEnv, array, start, len, buf)
1192#endif
1193
1194#ifndef JNIUtilGetFloatArrayRegion
1195#define JNIUtilGetFloatArrayRegion(jniEnv, array, start, len, buf) \
1196 _JNIUtilWrapMacro_FuncCalled(GetFloatArrayRegion, jniEnv, array, start, len, buf)
1197#endif
1198
1199#ifndef JNIUtilGetDoubleArrayRegion
1200#define JNIUtilGetDoubleArrayRegion(jniEnv, array, start, len, buf) \
1201 _JNIUtilWrapMacro_FuncCalled(GetDoubleArrayRegion, jniEnv, array, start, len, buf)
1202#endif
1203
1204#ifndef JNIUtilSetBooleanArrayRegion
1205#define JNIUtilSetBooleanArrayRegion(jniEnv, array, start, len, buf) \
1206 _JNIUtilWrapMacro_FuncCalled(SetBooleanArrayRegion, jniEnv, array, start, len, buf)
1207#endif
1208
1209#ifndef JNIUtilSetByteArrayRegion
1210#define JNIUtilSetByteArrayRegion(jniEnv, array, start, len, buf) \
1211 _JNIUtilWrapMacro_FuncCalled(SetByteArrayRegion, jniEnv, array, start, len, buf)
1212#endif
1213
1214#ifndef JNIUtilSetCharArrayRegion
1215#define JNIUtilSetCharArrayRegion(jniEnv, array, start, len, buf) \
1216 _JNIUtilWrapMacro_FuncCalled(SetCharArrayRegion, jniEnv, array, start, len, buf)
1217#endif
1218
1219#ifndef JNIUtilSetShortArrayRegion
1220#define JNIUtilSetShortArrayRegion(jniEnv, array, start, len, buf) \
1221 _JNIUtilWrapMacro_FuncCalled(SetShortArrayRegion, jniEnv, array, start, len, buf)
1222#endif
1223
1224#ifndef JNIUtilSetIntArrayRegion
1225#define JNIUtilSetIntArrayRegion(jniEnv, array, start, len, buf) \
1226 _JNIUtilWrapMacro_FuncCalled(SetIntArrayRegion, jniEnv, array, start, len, buf)
1227#endif
1228
1229#ifndef JNIUtilSetLongArrayRegion
1230#define JNIUtilSetLongArrayRegion(jniEnv, array, start, len, buf) \
1231 _JNIUtilWrapMacro_FuncCalled(SetLongArrayRegion, jniEnv, array, start, len, buf)
1232#endif
1233
1234#ifndef JNIUtilSetFloatArrayRegion
1235#define JNIUtilSetFloatArrayRegion(jniEnv, array, start, len, buf) \
1236 _JNIUtilWrapMacro_FuncCalled(SetFloatArrayRegion, jniEnv, array, start, len, buf)
1237#endif
1238
1239#ifndef JNIUtilSetDoubleArrayRegion
1240#define JNIUtilSetDoubleArrayRegion(jniEnv, array, start, len, buf) \
1241 _JNIUtilWrapMacro_FuncCalled(SetDoubleArrayRegion, jniEnv, array, start, len, buf)
1242#endif
1243
1244#ifndef JNIUtilRegisterNatives
1245#define JNIUtilRegisterNatives(jniEnv, clazz, methods, nMethods) \
1246 _JNIUtilWrapMacro_FuncCalled(RegisterNatives, jniEnv, clazz, methods, nMethods)
1247#endif
1248
1249#ifndef JNIUtilUnregisterNatives
1250#define JNIUtilUnregisterNatives(jniEnv, clazz) \
1251 _JNIUtilWrapMacro_FuncCalled(UnregisterNatives, jniEnv, clazz)
1252#endif
1253
1254#ifndef JNIUtilMonitorEnter
1255#define JNIUtilMonitorEnter(jniEnv, obj) \
1256 _JNIUtilWrapMacro_FuncCalled(MonitorEnter, jniEnv, obj)
1257#endif
1258
1259#ifndef JNIUtilMonitorExit
1260#define JNIUtilMonitorExit(jniEnv, obj) \
1261 _JNIUtilWrapMacro_FuncCalled(MonitorExit, jniEnv, obj)
1262#endif
1263
1264#ifndef JNIUtilGetJavaVM
1265#define JNIUtilGetJavaVM(jniEnv, vm) \
1266 _JNIUtilWrapMacro_FuncCalled(GetJavaVM, jniEnv, vm)
1267#endif
1268
1269#ifndef JNIUtilGetStringRegion
1270#define JNIUtilGetStringRegion(jniEnv, str, start, len, buf) \
1271 _JNIUtilWrapMacro_FuncCalled(GetStringRegion, jniEnv, str, start, len, buf)
1272#endif
1273
1274#ifndef JNIUtilGetStringUTFRegion
1275#define JNIUtilGetStringUTFRegion(jniEnv, str, start, len, buf) \
1276 _JNIUtilWrapMacro_FuncCalled(GetStringUTFRegion, jniEnv, str, start, len, buf)
1277#endif
1278
1279#ifndef JNIUtilGetPrimitiveArrayCritical
1280#define JNIUtilGetPrimitiveArrayCritical(jniEnv, array, isCopy) \
1281 _JNIUtilWrapMacro_Created(GetPrimitiveArrayCritical, jniEnv, array, isCopy)
1282#endif
1283
1284#ifndef JNIUtilReleasePrimitiveArrayCritical
1285#define JNIUtilReleasePrimitiveArrayCritical(jniEnv, array, carray, mode) \
1286 _JNIUtilWrapMacro_Released_1(ReleasePrimitiveArrayCritical, jniEnv, array, carray, mode)
1287#endif
1288
1289#ifndef JNIUtilGetStringCritical
1290#define JNIUtilGetStringCritical(jniEnv, string, isCopy) \
1291 _JNIUtilWrapMacro_Created(GetStringCritical, jniEnv, string, isCopy)
1292#endif
1293
1294#ifndef JNIUtilReleaseStringCritical
1295#define JNIUtilReleaseStringCritical(jniEnv, string, carray) \
1296 _JNIUtilWrapMacro_Released_1(ReleaseStringCritical, jniEnv, string, carray)
1297#endif
1298
1299#ifndef JNIUtilNewWeakGlobalRef
1300#define JNIUtilNewWeakGlobalRef(jniEnv, obj) \
1301 _JNIUtilWrapMacro_Created(NewWeakGlobalRef, jniEnv, obj)
1302#endif
1303
1304#ifndef JNIUtilDeleteWeakGlobalRef
1305#define JNIUtilDeleteWeakGlobalRef(jniEnv, obj) \
1306 _JNIUtilWrapMacro_Released_0(DeleteWeakGlobalRef, jniEnv, obj)
1307#endif
1308
1309#ifndef JNIUtilExceptionCheck
1310#define JNIUtilExceptionCheck(jniEnv) \
1311 _JNIUtilWrapMacro_FuncCalled(ExceptionCheck, jniEnv)
1312#endif
1313
1314#ifndef JNIUtilNewDirectByteBuffer
1315#define JNIUtilNewDirectByteBuffer(jniEnv, address, capacity) \
1316 _JNIUtilWrapMacro_Created(NewDirectByteBuffer, jniEnv, address, capacity)
1317#endif
1318
1319#ifndef JNIUtilGetDirectBufferAddress
1320#define JNIUtilGetDirectBufferAddress(jniEnv, buf) \
1321 _JNIUtilWrapMacro_FuncCalled(GetDirectBufferAddress, jniEnv, buf)
1322#endif
1323
1324#ifndef JNIUtilGetDirectBufferCapacity
1325#define JNIUtilGetDirectBufferCapacity(jniEnv, buf) \
1326 _JNIUtilWrapMacro_FuncCalled(GetDirectBufferCapacity, jniEnv, buf)
1327#endif
1328
1329#ifndef JNIUtilGetObjectRefType
1330#define JNIUtilGetObjectRefType(jniEnv, obj) \
1331 _JNIUtilWrapMacro_FuncCalled(GetObjectRefType, jniEnv, obj)
1332#endif
1333
1334} // namespace JNIUtil
1335
1336// ============================================================
1337// other
1338namespace JNIUtil {
1339
1341class _JNI_EXPORT JNIGlobalRef {
1342public:
1344 JNIGlobalRef(void) : _obj(NULL) {}
1346 JNIGlobalRef(jobject obj) : _obj(obj ? JNIUtilNewGlobalRef(JNIGetJNIEnv(), obj) : NULL) {}
1348 JNIGlobalRef(const JNIGlobalRef &obj) : _obj(obj ? JNIUtilNewGlobalRef(JNIGetJNIEnv(), obj) : NULL) {}
1349public:
1351 JNIGlobalRef &set(jobject obj) {
1352 JNIEnv *jniEnv = JNIGetJNIEnv();
1353 if(obj) {
1354 obj = JNIUtilNewGlobalRef(jniEnv, obj);
1355 }
1356 if(_obj) {
1357 jobject tmp = _obj;
1358 _obj = obj;
1359 JNIUtilDeleteGlobalRef(jniEnv, tmp);
1360 }
1361 else {
1362 _obj = obj;
1363 }
1364 return *this;
1365 }
1367 jobject get(void) const {
1368 return _obj;
1369 }
1370public:
1372 JNIGlobalRef &operator = (jobject obj) {
1373 this->set(obj);
1374 return *this;
1375 }
1376 JNIGlobalRef &operator = (const JNIGlobalRef &obj) {
1377 this->set(obj.get());
1378 return *this;
1379 }
1380 operator bool (void) const {
1381 return _obj != NULL;
1382 }
1383 operator jobject (void) const {
1384 return _obj;
1385 }
1386 operator jclass (void) const {
1387 return (jclass)_obj;
1388 }
1389 operator jstring (void) const {
1390 return (jstring)_obj;
1391 }
1392 operator jobjectArray (void) const {
1393 return (jobjectArray)_obj;
1394 }
1396private:
1397 jobject _obj;
1398};
1399
1400} // namespace JNIUtil
1401#endif // #if NEED_JNIUTIL
1402
1403#endif // #ifndef _JNIUtil_MethodWrapper_h_
1404
JNI utilities.
#define _JNI_EXPORT
used to export symbols
Definition JNIUtil.h:15