From 125abf502769c2ef092a2f5516d303f0333ae802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 20 Oct 2015 17:18:53 +0200 Subject: NOISSUE rename QObjectPtr to shared_qobject_ptr, introduce unique_qobject_ptr, refactor MainWindow to match --- logic/QObjectPtr.h | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'logic/QObjectPtr.h') diff --git a/logic/QObjectPtr.h b/logic/QObjectPtr.h index 32e59bd9..b81b3234 100644 --- a/logic/QObjectPtr.h +++ b/logic/QObjectPtr.h @@ -1,26 +1,43 @@ #pragma once #include +#include + +namespace details +{ +struct DeleteQObjectLater +{ + void operator()(QObject *obj) const + { + obj->deleteLater(); + } +}; +} +/** + * A unique pointer class with unique pointer semantics intended for derivates of QObject + * Calls deleteLater() instead of destroying the contained object immediately + */ +template using unique_qobject_ptr = std::unique_ptr; /** - * A pointer class with the usual shared pointer semantics intended for derivates of QObject + * A shared pointer class with shared pointer semantics intended for derivates of QObject * Calls deleteLater() instead of destroying the contained object immediately */ template -class QObjectPtr +class shared_qobject_ptr { public: - QObjectPtr(){} - QObjectPtr(T * wrap) + shared_qobject_ptr(){} + shared_qobject_ptr(T * wrap) { reset(wrap); } - QObjectPtr(const QObjectPtr& other) + shared_qobject_ptr(const shared_qobject_ptr& other) { m_ptr = other.m_ptr; } template - QObjectPtr(const QObjectPtr &other) + shared_qobject_ptr(const shared_qobject_ptr &other) { m_ptr = other.unwrap(); } -- cgit v1.2.3