File indexing completed on 2024-05-12 15:57:03

0001 /*
0002  *  SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KISREADWRITELOCKPOLICY_H
0008 #define KISREADWRITELOCKPOLICY_H
0009 
0010 #include <boost/utility.hpp>
0011 
0012 #include <QReadLocker>
0013 #include <QWriteLocker>
0014 #include "KisUpgradeToWriteLocker.h"
0015 
0016 struct NormalLockPolicy {
0017     typedef QReadLocker ReadLocker;
0018     typedef QWriteLocker WriteLocker;
0019 };
0020 
0021 struct UpgradeLockPolicy {
0022     struct FakeLocker : private boost::noncopyable {
0023         FakeLocker(QReadWriteLock *) {}
0024     };
0025 
0026     typedef FakeLocker ReadLocker;
0027     typedef KisUpgradeToWriteLocker WriteLocker;
0028 };
0029 
0030 struct NoLockPolicy {
0031     struct FakeLocker : private boost::noncopyable {
0032         FakeLocker(QReadWriteLock *) {}
0033     };
0034 
0035     typedef FakeLocker ReadLocker;
0036     typedef FakeLocker WriteLocker;
0037 };
0038 #endif // KISREADWRITELOCKPOLICY_H