Warning, file /include/QtCore/qscopedvaluerollback.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004 #ifndef QSCOPEDVALUEROLLBACK_H
0005 #define QSCOPEDVALUEROLLBACK_H
0006
0007 #include <QtCore/qglobal.h>
0008
0009 #include <QtCore/q20utility.h>
0010
0011 QT_BEGIN_NAMESPACE
0012
0013 template <typename T>
0014 class QScopedValueRollback
0015 {
0016 public:
0017 Q_NODISCARD_CTOR
0018 explicit constexpr QScopedValueRollback(T &var)
0019 : varRef(var), oldValue(var)
0020 {
0021 }
0022
0023 Q_NODISCARD_CTOR
0024 explicit constexpr QScopedValueRollback(T &var, T value)
0025 : varRef(var), oldValue(q20::exchange(var, std::move(value)))
0026 {
0027 }
0028
0029 Q_DECL_CONSTEXPR_DTOR
0030 ~QScopedValueRollback()
0031 {
0032 varRef = std::move(oldValue);
0033 }
0034
0035 constexpr void commit()
0036 {
0037 oldValue = varRef;
0038 }
0039
0040 private:
0041 T &varRef;
0042 T oldValue;
0043
0044 Q_DISABLE_COPY_MOVE(QScopedValueRollback)
0045 };
0046
0047 QT_END_NAMESPACE
0048
0049 #endif