13 #define _JNI_EXPORT __declspec(dllimport)
15 #define _JNI_EXPORT __attribute__((visibility("default")))
21 #if (defined(ANDROID) || defined(__ANDROID__) || defined(JNI_VERSION_1_1) || defined(JNIEXPORT) || defined(JNICALL))
25 #define NEED_JNIUTIL 1
33#if defined(__cplusplus) || defined(c_plusplus)
34 #define _JNI_EXTERN_C extern "C"
49 JNIString(JNIString
const &ref);
50 JNIString(
const char *s);
52 JNIString &operator = (JNIString
const &ref);
53 JNIString &operator = (
const char *s);
54 const char *c_str(
void)
const;
55 jsize length(
void)
const;
56 operator const char * (void)
const;
70 JNIParamTypeContainer(
void);
71 ~JNIParamTypeContainer(
void);
73 JNIParamTypeContainer(
const JNIParamTypeContainer &ref);
74 JNIParamTypeContainer &operator = (
const JNIParamTypeContainer &ref);
77 JNIParamTypeContainer &add(
const JNIType ¶mType);
85 jsize count(
void)
const;
87 const JNIType &get(jint i)
const;
97extern _JNI_EXPORT bool JNIInit(JavaVM *javaVM, jint version = JNI_VERSION_1_1);
102typedef JNIEnv *(*JNIGetJNIEnvCallback)(void);
106extern _JNI_EXPORT bool JNIInit(JNIGetJNIEnvCallback callback);
130extern _JNI_EXPORT void JNIConvertClassNameToClassSig(JNIString &ret,
const char *className);
132inline JNIString JNIConvertClassNameToClassSig(
const char *className) {
134 JNIConvertClassNameToClassSig(ret, className);
144extern _JNI_EXPORT void JNIConvertClassNameFromClassSig(JNIString &ret,
const char *classSig);
146inline JNIString JNIConvertClassNameFromClassSig(
const char *className) {
148 JNIConvertClassNameFromClassSig(ret, className);
159extern _JNI_EXPORT void JNIConvertClassNameForFindClass(JNIString &ret,
const char *className);
161inline JNIString JNIConvertClassNameForFindClass(
const char *className) {
163 JNIConvertClassNameForFindClass(ret, className);
170#define JNIConstructorName "<init>"
206 JNIType(JNIType::Type type,
207 const char *classNameOrArrayElementTypeId = NULL);
208 JNIType(
const JNIType &ref);
209 JNIType &operator = (
const JNIType &ref);
215 void setType(JNIType::Type type,
216 const char *classNameOrArrayElementTypeId = NULL);
220 JNIType::Type getType(
void)
const;
230 const char *getId(
void)
const;
234 static const JNIType &S_boolean(
void);
236 static const JNIType &S_byte(
void);
238 static const JNIType &S_char(
void);
240 static const JNIType &S_short(
void);
242 static const JNIType &S_int(
void);
244 static const JNIType &S_long(
void);
246 static const JNIType &S_float(
void);
248 static const JNIType &S_double(
void);
250 static const JNIType &S_void(
void);
256 static inline JNIType S_object(
const char *className) {
257 return JNIType(JNIType::T_object, className);
262 static inline JNIType S_array(
const JNIType &type) {
263 return JNIType(JNIType::T_array, type.getId());
268 static const JNIType &S_object_Class(
void);
270 static const JNIType &S_object_Object(
void);
272 static const JNIType &S_object_String(
void);
275 static const JNIType &S_array_Class(
void);
277 static const JNIType &S_array_Object(
void);
279 static const JNIType &S_array_String(
void);
303 const JNIType &returnType
304 ,
const JNIParamTypeContainer ¶mTypeList
308 const JNIType &returnType
309 ,
const JNIType *paramTypeList
314#define _JNI_METHOD_DECLARE_BEGIN(OwnerClassId, ReturnType, MethodName, ...) \
315 _JNI_EXTERN_C JNIEXPORT ReturnType JNICALL Java_##OwnerClassId##_##MethodName( \
316 JNIEnv *jniEnv, jclass jniCls, ##__VA_ARGS__)
346#define JNI_METHOD_DECLARE_BEGIN(OwnerClassId, ReturnType, MethodName, ...) \
347 _JNI_METHOD_DECLARE_BEGIN(OwnerClassId, ReturnType, MethodName, ##__VA_ARGS__)
349#define JNI_METHOD_DECLARE_END()
354#define JNI_ONLOAD_ENTRY(paramJavaVM, paramReserved) \
355 _JNI_EXTERN_C JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* paramJavaVM, void* paramReserved)
362#ifndef JNIPointerUseLong
363 #define JNIPointerUseLong 1
369 #if JNIPointerUseLong
370 #define JNIPointer jlong
372 #define JNIPointer jbyteArray
378#ifndef JNIPointerInvalid
379 #if JNIPointerUseLong
380 #define JNIPointerInvalid 0
382 #define JNIPointerInvalid NULL
388#ifndef JNIPointerJNIType
389 #if JNIPointerUseLong
390 #define JNIPointerJNIType JNIType::S_long()
392 #define JNIPointerJNIType JNIType::S_array(JNIType::S_byte())
396jbyteArray _JNIConvertPointerToJNITypeAction(JNIEnv *jniEnv,
void *p);
397void *_JNIConvertPointerFromJNITypeAction(JNIEnv *jniEnv, jbyteArray d);
400 #define _JNIConvertPointerToJNIType(jniEnv, p) (JNIPointer)(p)
401 #define _JNIConvertPointerFromJNIType(jniEnv, p) (void *)(p)
403 #define _JNIConvertPointerToJNIType(jniEnv, p) _JNIConvertPointerToJNITypeAction(jniEnv, p)
404 #define _JNIConvertPointerFromJNIType(jniEnv, d) _JNIConvertPointerFromJNITypeAction(jniEnv, d)
416#ifndef JNIConvertPointerToJNIType
417 #define JNIConvertPointerToJNIType(jniEnv, p) _JNIConvertPointerToJNIType(jniEnv, p)
422#ifndef JNIConvertPointerFromJNIType
423 #define JNIConvertPointerFromJNIType(jniEnv, d) _JNIConvertPointerFromJNIType(jniEnv, d)
429namespace JNIUtilPrivate {
432 LocalRefDel(jobject obj)
438 JNIGetJNIEnv()->DeleteLocalRef(this->objSaved);
446 GlobalRefDel(jobject obj)
450 ~GlobalRefDel(
void) {
452 JNIGetJNIEnv()->DeleteGlobalRef(this->objSaved);
458 #define _JNIUtil_uniqueName(name) _JNIUtil_uniqueName2(name, __LINE__)
459 #define _JNIUtil_uniqueName2(name, line) _JNIUtil_uniqueName3(name, line)
460 #define _JNIUtil_uniqueName3(name, line) _JNIUtil_##name##_##line
465#define JNILineDeleteLocalRef(obj_) \
466 (JNIUtilPrivate::LocalRefDel(obj_).objSaved)
468#define JNILineDeleteGlobalRef(obj_) \
469 (JNIUtilPrivate::GlobalRefDel(obj_).objSaved)
472#define JNIBlockedDeleteLocalRef(obj_) \
473 JNIUtilPrivate::LocalRefDel _JNIUtil_uniqueName(jniRef)(obj_)
475#define JNIBlockedDeleteGlobalRef(obj_) \
476 JNIUtilPrivate::GlobalRefDel _JNIUtil_uniqueName(jniRef)(obj_)
#define _JNI_EXPORT
used to export symbols
Definition JNIUtil.h:15
ZFUIMargin & operator+=(ZFUIMargin &v0, const ZFUIMargin &v1)
v0 += v1
Definition ZFUITypeDef.h:325