From e8b3e37c5a626742df29db3373aa42408c1aa771 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Mon, 6 May 2024 13:13:02 +0200 Subject: [PATCH] JNI: Mark tech preview API as such Retrofit the QT_TECH_PREVIEW_API macro into the JNI classes and helper constructs that are not yet documented, and which can only become publicly documented once the full JNI type system with the type registration infrastructure is documented. We can remove the tagging in dev once we have documentation and are ready to move this functionality out of TP, presumably for Qt 6.8. Change-Id: I235e57b8e57c2d04be72b4c842131d99a5f83d9e Reviewed-by: Assam Boudjelthia (cherry picked from commit 5b41046813d21d565904a6b37bef4b75268fc8f5) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/kernel/qjniarray.h | 6 +++--- src/corelib/kernel/qjnienvironment.h | 1 + src/corelib/kernel/qjniobject.h | 4 ++-- src/corelib/kernel/qjnitypes.h | 9 +++++++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/corelib/kernel/qjniarray.h b/src/corelib/kernel/qjniarray.h index f2f4dba92e7..8f292e491d5 100644 --- a/src/corelib/kernel/qjniarray.h +++ b/src/corelib/kernel/qjniarray.h @@ -17,7 +17,7 @@ QT_BEGIN_NAMESPACE template class QJniArray; template -struct QJniArrayIterator +struct QT_TECH_PREVIEW_API QJniArrayIterator { QJniArrayIterator() = default; @@ -85,7 +85,7 @@ private: {} }; -class QJniArrayBase +class QT_TECH_PREVIEW_API QJniArrayBase { // for SFINAE'ing out the fromContainer named constructor template struct CanConvertHelper : std::false_type {}; @@ -190,7 +190,7 @@ private: }; template -class QJniArray : public QJniArrayBase +class QT_TECH_PREVIEW_API QJniArray : public QJniArrayBase { friend struct QJniArrayIterator; public: diff --git a/src/corelib/kernel/qjnienvironment.h b/src/corelib/kernel/qjnienvironment.h index dda8dc0950c..09f7ec7948e 100644 --- a/src/corelib/kernel/qjnienvironment.h +++ b/src/corelib/kernel/qjnienvironment.h @@ -69,6 +69,7 @@ public: , std::enable_if_t(), bool> = true #endif > + QT_TECH_PREVIEW_API bool registerNativeMethods(std::initializer_list methods) { return registerNativeMethods(QtJniTypes::Traits::className().data(), methods); diff --git a/src/corelib/kernel/qjniobject.h b/src/corelib/kernel/qjniobject.h index ecce99433fb..180a1da5f04 100644 --- a/src/corelib/kernel/qjniobject.h +++ b/src/corelib/kernel/qjniobject.h @@ -668,7 +668,7 @@ inline bool operator!=(const QJniObject &obj1, const QJniObject &obj2) } namespace QtJniTypes { -struct JObjectBase +struct QT_TECH_PREVIEW_API JObjectBase { operator QJniObject() const { return m_object; } @@ -693,7 +693,7 @@ protected: }; template -class JObject : public JObjectBase +class QT_TECH_PREVIEW_API JObject : public JObjectBase { public: using Class = Type; diff --git a/src/corelib/kernel/qjnitypes.h b/src/corelib/kernel/qjnitypes.h index 978b0f0e8fb..4317f75fdba 100644 --- a/src/corelib/kernel/qjnitypes.h +++ b/src/corelib/kernel/qjnitypes.h @@ -11,6 +11,7 @@ QT_BEGIN_NAMESPACE +// QT_TECH_PREVIEW_API #define Q_DECLARE_JNI_TYPE_HELPER(Type) \ namespace QtJniTypes { \ struct Type : JObject \ @@ -19,7 +20,7 @@ struct Type : JObject \ }; \ } \ - +// QT_TECH_PREVIEW_API #define Q_DECLARE_JNI_TYPE(Type, Signature) \ Q_DECLARE_JNI_TYPE_HELPER(Type) \ template<> \ @@ -35,6 +36,7 @@ struct QtJniTypes::Traits { \ } \ }; \ +// QT_TECH_PREVIEW_API #define Q_DECLARE_JNI_CLASS(Type, Signature) \ Q_DECLARE_JNI_TYPE_HELPER(Type) \ template<> \ @@ -149,7 +151,7 @@ va_##Method(JNIEnv *env, jclass thiz, ...) }, argTuple); \ } \ - +// QT_TECH_PREVIEW_API #define Q_DECLARE_JNI_NATIVE_METHOD(...) \ QT_OVERLOADED_MACRO(QT_DECLARE_JNI_NATIVE_METHOD, __VA_ARGS__) \ @@ -167,8 +169,10 @@ static const JNINativeMethod Method##_method = { \ #define QT_DECLARE_JNI_NATIVE_METHOD_1(Method) \ QT_DECLARE_JNI_NATIVE_METHOD_2(Method, Method) \ +// QT_TECH_PREVIEW_API #define Q_JNI_NATIVE_METHOD(Method) QtJniMethods::Method##_method +// QT_TECH_PREVIEW_API #define Q_DECLARE_JNI_NATIVE_METHOD_IN_CURRENT_SCOPE(...) \ QT_OVERLOADED_MACRO(QT_DECLARE_JNI_NATIVE_METHOD_IN_CURRENT_SCOPE, __VA_ARGS__) \ @@ -182,6 +186,7 @@ static const JNINativeMethod Method##_method = { \ #define QT_DECLARE_JNI_NATIVE_METHOD_IN_CURRENT_SCOPE_1(Method) \ QT_DECLARE_JNI_NATIVE_METHOD_IN_CURRENT_SCOPE_2(Method, Method) \ +// QT_TECH_PREVIEW_API #define Q_JNI_NATIVE_SCOPED_METHOD(Method, Scope) Scope::Method##_method QT_END_NAMESPACE