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