Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_shared.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef _KIS_SHARED_H_
8#define _KIS_SHARED_H_
9
10#include <QAtomicInt>
11#include "kritaglobal_export.h"
12
13class KRITAGLOBAL_EXPORT KisShared
14{
15private:
18protected:
19 KisShared();
20 ~KisShared();
21public:
22 int refCount() {
23 return _ref;
24 }
25 bool ref() {
26 return _ref.ref();
27 }
28 bool deref() {
29 Q_ASSERT(_ref > 0);
30 return _ref.deref();
31 }
32
33 // see note in kis_shared.cpp
34 QAtomicInt* sharedWeakReference() {
35 if(!_sharedWeakReference) {
36 _sharedWeakReference = new QAtomicInt();
37 _sharedWeakReference->ref();
38 }
39
40 return _sharedWeakReference;
41 }
42
43private:
44 QAtomicInt _ref;
46};
47
48#endif
QAtomicInt * _sharedWeakReference
Definition kis_shared.h:45
bool deref()
Definition kis_shared.h:28
bool ref()
Definition kis_shared.h:25
QAtomicInt * sharedWeakReference()
Definition kis_shared.h:34
KisShared(const KisShared &)
QAtomicInt _ref
Definition kis_shared.h:44
int refCount()
Definition kis_shared.h:22
KisShared & operator=(const KisShared &)