summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2023-01-11 14:07:20 +0100
committerMarc Mutz <marc.mutz@qt.io>2023-01-12 18:14:10 +0100
commitceb4140b59428a805d11c036ef223f46d83653ef (patch)
tree0e88e071ca2762e08d5f2250f2e84054158f10c3 /src
parent49cdfb0c61521f843046e473d759149ab4878ce3 (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.h36
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) \
}; \