File indexing completed on 2024-05-12 15:56:58
0001 /* 0002 * SPDX-FileCopyrightText: 2006 Cyrille Berger <cberger@cberger.net> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef _KIS_SHARED_H_ 0008 #define _KIS_SHARED_H_ 0009 0010 #include <QAtomicInt> 0011 #include "kritaglobal_export.h" 0012 0013 class KRITAGLOBAL_EXPORT KisShared 0014 { 0015 private: 0016 KisShared(const KisShared& ); 0017 KisShared& operator=(const KisShared& ); 0018 protected: 0019 KisShared(); 0020 ~KisShared(); 0021 public: 0022 int refCount() { 0023 return _ref; 0024 } 0025 bool ref() { 0026 return _ref.ref(); 0027 } 0028 bool deref() { 0029 Q_ASSERT(_ref > 0); 0030 return _ref.deref(); 0031 } 0032 0033 // see note in kis_shared.cpp 0034 QAtomicInt* sharedWeakReference() { 0035 if(!_sharedWeakReference) { 0036 _sharedWeakReference = new QAtomicInt(); 0037 _sharedWeakReference->ref(); 0038 } 0039 0040 return _sharedWeakReference; 0041 } 0042 0043 private: 0044 QAtomicInt _ref; 0045 QAtomicInt *_sharedWeakReference; 0046 }; 0047 0048 #endif