File indexing completed on 2024-05-12 15:57:01
0001 /* 0002 * SPDX-License-Identifier: GPL-3.0-or-later 0003 */ 0004 0005 #ifndef KISDELETELATERWRAPPER_H 0006 #define KISDELETELATERWRAPPER_H 0007 0008 #include "kritaglobal_export.h" 0009 #include <QObject> 0010 0011 namespace KisDeleteLaterWrapperPrivate { 0012 KRITAGLOBAL_EXPORT void moveToGuiThread(QObject *object); 0013 } 0014 0015 template <typename T> 0016 class KisDeleteLaterWrapper : public QObject 0017 { 0018 public: 0019 KisDeleteLaterWrapper(T value) 0020 : m_value(value) 0021 { 0022 KisDeleteLaterWrapperPrivate::moveToGuiThread(this); 0023 } 0024 0025 private: 0026 T m_value; 0027 }; 0028 0029 template <typename T> 0030 class KisDeleteLaterWrapper<T*> : public QObject 0031 { 0032 public: 0033 KisDeleteLaterWrapper(T* value) 0034 : m_value(value) 0035 { 0036 KisDeleteLaterWrapperPrivate::moveToGuiThread(this); 0037 } 0038 0039 ~KisDeleteLaterWrapper() { 0040 delete m_value; 0041 } 0042 0043 private: 0044 T *m_value; 0045 }; 0046 0047 template <typename T> 0048 KisDeleteLaterWrapper<T>* makeKisDeleteLaterWrapper(T value) { 0049 return new KisDeleteLaterWrapper<T>(value); 0050 } 0051 0052 #endif // KISDELETELATERWRAPPER_H