summaryrefslogtreecommitdiffstats
path: root/src/widgets/dialogs/qdialog_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/dialogs/qdialog_p.h')
-rw-r--r--src/widgets/dialogs/qdialog_p.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/widgets/dialogs/qdialog_p.h b/src/widgets/dialogs/qdialog_p.h
index 1c7c5f3c2a..ae9e3bcc93 100644
--- a/src/widgets/dialogs/qdialog_p.h
+++ b/src/widgets/dialogs/qdialog_p.h
@@ -119,6 +119,24 @@ private:
mutable bool m_platformHelperCreated;
};
+template <typename T>
+class QAutoPointer {
+ QPointer<T> o;
+ struct internal { void func() {} };
+ typedef void (internal::*RestrictedBool)();
+public:
+ explicit QAutoPointer(T *t) Q_DECL_NOTHROW : o(t) {}
+ ~QAutoPointer() { delete o; }
+
+ T *operator->() const Q_DECL_NOTHROW { return get(); }
+ T *get() const Q_DECL_NOTHROW { return o; }
+ T &operator*() const { return *get(); }
+ operator RestrictedBool() const Q_DECL_NOTHROW { return o ? &internal::func : Q_NULLPTR; }
+ bool operator!() const Q_DECL_NOTHROW { return !o; }
+private:
+ Q_DISABLE_COPY(QAutoPointer);
+};
+
QT_END_NAMESPACE
#endif // QDIALOG_P_H