Add common internal macros to request jni objects
There are multiple macros used to get/check and return with error in case the requested object is not valid. These macros are defined in multiple places and duplicated. This patch defines them in one place and then they can be reused. This macro expects a "char m_qtTag[]" variable to be defined in the scope where the macro is used. That variable is used as a tag for the error message printed when an error occur. Another consecutive patch use the new macros over qtbase code. Pick-to: 6.2 Change-Id: Ibb8558d1229cec6dad9ec9da6e2635ea54fd18d6 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
This commit is contained in:
parent
dab8f64b6d
commit
01d30e2d53
@ -139,6 +139,45 @@ namespace QtAndroidPrivate
|
||||
Q_CORE_EXPORT jobject callOnBindListener(jobject intent);
|
||||
}
|
||||
|
||||
#define Q_JNI_FIND_AND_CHECK_CLASS(CLASS_NAME) \
|
||||
clazz = env.findClass(CLASS_NAME); \
|
||||
if (!clazz) { \
|
||||
__android_log_print(ANDROID_LOG_FATAL, m_qtTag, QtAndroid::classErrorMsgFmt(), CLASS_NAME);\
|
||||
return JNI_FALSE; \
|
||||
}
|
||||
|
||||
#define Q_JNI_GET_AND_CHECK_METHOD(ID, CLASS, METHOD_NAME, METHOD_SIGNATURE) \
|
||||
ID = env.findMethod(CLASS, METHOD_NAME, METHOD_SIGNATURE); \
|
||||
if (!ID) { \
|
||||
__android_log_print(ANDROID_LOG_FATAL, m_qtTag, QtAndroid::methodErrorMsgFmt(), \
|
||||
METHOD_NAME, METHOD_SIGNATURE); \
|
||||
return JNI_FALSE; \
|
||||
}
|
||||
|
||||
#define Q_JNI_GET_AND_CHECK_STATIC_METHOD(ID, CLASS, METHOD_NAME, METHOD_SIGNATURE) \
|
||||
ID = env.findStaticMethod(CLASS, METHOD_NAME, METHOD_SIGNATURE); \
|
||||
if (!ID) { \
|
||||
__android_log_print(ANDROID_LOG_FATAL, m_qtTag, QtAndroid::methodErrorMsgFmt(), \
|
||||
METHOD_NAME, METHOD_SIGNATURE); \
|
||||
return JNI_FALSE; \
|
||||
}
|
||||
|
||||
#define Q_JNI_GET_AND_CHECK_FIELD(ID, CLASS, FIELD_NAME, FIELD_SIGNATURE) \
|
||||
ID = env.findField(CLASS, FIELD_NAME, FIELD_SIGNATURE); \
|
||||
if (!ID) { \
|
||||
__android_log_print(ANDROID_LOG_FATAL, m_qtTag, QtAndroid::fieldErrorMsgFmt(), \
|
||||
FIELD_NAME, FIELD_SIGNATURE); \
|
||||
return JNI_FALSE; \
|
||||
}
|
||||
|
||||
#define Q_JNI_GET_AND_CHECK_STATIC_FIELD(ID, CLASS, FIELD_NAME, FIELD_SIGNATURE) \
|
||||
ID = env.findStaticField(CLASS, FIELD_NAME, FIELD_SIGNATURE); \
|
||||
if (!ID) { \
|
||||
__android_log_print(ANDROID_LOG_FATAL, m_qtTag, QtAndroid::fieldErrorMsgFmt(), \
|
||||
FIELD_NAME, FIELD_SIGNATURE); \
|
||||
return JNI_FALSE; \
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QJNIHELPERS_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user