4#ifndef QATOMICSCOPEDVALUEROLLBACK_P_H
5#define QATOMICSCOPEDVALUEROLLBACK_P_H
18#include <QtCore/qglobal.h>
19#include <QtCore/qatomic.h>
28 std::atomic<T> &m_atomic;
30 std::memory_order m_mo;
34 constexpr std::memory_order store_part(std::memory_order
mo)
noexcept
37 case std::memory_order_relaxed:
38 case std::memory_order_consume:
39 case std::memory_order_acquire:
return std::memory_order_relaxed;
40 case std::memory_order_release:
41 case std::memory_order_acq_rel:
return std::memory_order_release;
42 case std::memory_order_seq_cst:
return std::memory_order_seq_cst;
45#if !defined(Q_CC_GNU_ONLY) || (Q_CC_GNU >= 900)
49 return std::memory_order_seq_cst;
58 std::memory_order
mo = std::memory_order_seq_cst)
64 std::memory_order
mo = std::memory_order_seq_cst)
73 std::memory_order
mo = std::memory_order_seq_cst)
79 std::memory_order
mo = std::memory_order_seq_cst)
88 std::memory_order
mo = std::memory_order_seq_cst)
94 std::memory_order
mo = std::memory_order_seq_cst)
97#if __cpp_constexpr >= 201907L
102 m_atomic.store(m_value, store_part(m_mo));
107 m_value = m_atomic.load(m_mo);
Q_NODISCARD_CTOR constexpr QAtomicScopedValueRollback(QBasicAtomicPointer< std::remove_pointer_t< T > > &var, T value, std::memory_order mo=std::memory_order_seq_cst)
Q_NODISCARD_CTOR constexpr QAtomicScopedValueRollback(std::atomic< T > &var, T value, std::memory_order mo=std::memory_order_seq_cst)
Q_NODISCARD_CTOR constexpr QAtomicScopedValueRollback(QBasicAtomicInteger< T > &var, std::memory_order mo=std::memory_order_seq_cst)
~QAtomicScopedValueRollback()
Q_NODISCARD_CTOR constexpr QAtomicScopedValueRollback(std::atomic< T > &var, std::memory_order mo=std::memory_order_seq_cst)
Q_NODISCARD_CTOR constexpr QAtomicScopedValueRollback(QBasicAtomicInteger< T > &var, T value, std::memory_order mo=std::memory_order_seq_cst)
Q_NODISCARD_CTOR constexpr QAtomicScopedValueRollback(QBasicAtomicPointer< std::remove_pointer_t< T > > &var, std::memory_order mo=std::memory_order_seq_cst)
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]