diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-01-11 14:07:20 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-01-12 18:14:10 +0100 |
commit | ceb4140b59428a805d11c036ef223f46d83653ef (patch) | |
tree | 0e88e071ca2762e08d5f2250f2e84054158f10c3 /src | |
parent | 49cdfb0c61521f843046e473d759149ab4878ce3 (diff) |
Q<Concrete>Permission: unexport classes
Non-polymorphic classes should not be exported wholesale, because MSVC
exports inline API in such classes, too, which has caused numerous
problems over the years.
Only export individual functions.
Pick-to: 6.5
Change-Id: I8be55c1fcdb21d143a02bb62498caeea6ebca068
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qpermissions.h | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/corelib/kernel/qpermissions.h b/src/corelib/kernel/qpermissions.h index 469403587b..4261efe50a 100644 --- a/src/corelib/kernel/qpermissions.h +++ b/src/corelib/kernel/qpermissions.h @@ -83,62 +83,62 @@ private: }; #define QT_PERMISSION(ClassName) \ - Q_GADGET \ + Q_GADGET_EXPORT(Q_CORE_EXPORT) \ using QtPermissionHelper = void; \ friend class QPermission; \ public: \ - ClassName(); \ - ClassName(const ClassName &other) noexcept; \ - ClassName(ClassName &&other) noexcept; \ - ~ClassName() noexcept; \ - ClassName &operator=(const ClassName &other) noexcept; \ + Q_CORE_EXPORT ClassName(); \ + Q_CORE_EXPORT ClassName(const ClassName &other) noexcept; \ + Q_CORE_EXPORT ClassName(ClassName &&other) noexcept; \ + Q_CORE_EXPORT ~ClassName() noexcept; \ + Q_CORE_EXPORT ClassName &operator=(const ClassName &other) noexcept; \ QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(ClassName) \ void swap(ClassName &other) noexcept { d.swap(other.d); } \ private: \ QtPrivate::QExplicitlySharedDataPointerV2<ClassName##Private> d; class QLocationPermissionPrivate; -class Q_CORE_EXPORT QLocationPermission +class QLocationPermission { QT_PERMISSION(QLocationPermission) public: enum Accuracy { Approximate, Precise }; Q_ENUM(Accuracy) - void setAccuracy(Accuracy accuracy); - Accuracy accuracy() const; + Q_CORE_EXPORT void setAccuracy(Accuracy accuracy); + Q_CORE_EXPORT Accuracy accuracy() const; enum Availability { WhenInUse, Always }; Q_ENUM(Availability) - void setAvailability(Availability availability); - Availability availability() const; + Q_CORE_EXPORT void setAvailability(Availability availability); + Q_CORE_EXPORT Availability availability() const; }; Q_DECLARE_SHARED(QLocationPermission) class QCalendarPermissionPrivate; -class Q_CORE_EXPORT QCalendarPermission +class QCalendarPermission { QT_PERMISSION(QCalendarPermission) public: - void setReadOnly(bool enable); - bool isReadOnly() const; + Q_CORE_EXPORT void setReadOnly(bool enable); + Q_CORE_EXPORT bool isReadOnly() const; }; Q_DECLARE_SHARED(QCalendarPermission) class QContactsPermissionPrivate; -class Q_CORE_EXPORT QContactsPermission +class QContactsPermission { QT_PERMISSION(QContactsPermission) public: - void setReadOnly(bool enable); - bool isReadOnly() const; + Q_CORE_EXPORT void setReadOnly(bool enable); + Q_CORE_EXPORT bool isReadOnly() const; }; Q_DECLARE_SHARED(QContactsPermission) #define Q_DECLARE_MINIMAL_PERMISSION(ClassName) \ class ClassName##Private; \ - class Q_CORE_EXPORT ClassName \ + class ClassName \ { \ QT_PERMISSION(ClassName) \ }; \ |