Krita Source Code Documentation
Loading...
Searching...
No Matches
Atomic< T > Class Template Reference

#include <atomic.h>

+ Inheritance diagram for Atomic< T >:

Public Member Functions

 Atomic ()
 
 Atomic (const Atomic &other)
 
 Atomic (T value)
 
T compareExchange (T expected, T desired, MemoryOrder memoryOrder)
 
bool compareExchangeStrong (T &expected, T desired, MemoryOrder memoryOrder)
 
bool compareExchangeWeak (T &expected, T desired, MemoryOrder success, MemoryOrder failure)
 
T exchange (T desired, MemoryOrder memoryOrder)
 
T fetchAdd (T operand, MemoryOrder memoryOrder)
 
T fetchAnd (T operand, MemoryOrder memoryOrder)
 
T fetchOr (T operand, MemoryOrder memoryOrder)
 
T fetchSub (T operand, MemoryOrder memoryOrder)
 
T load (MemoryOrder memoryOrder) const
 
T loadNonatomic () const
 
void store (T value, MemoryOrder memoryOrder)
 
void storeNonatomic (T value)
 

Private Member Functions

T operator= (T value)
 

Detailed Description

template<typename T>
class Atomic< T >

Definition at line 66 of file atomic.h.

Constructor & Destructor Documentation

◆ Atomic() [1/3]

template<typename T >
Atomic< T >::Atomic ( )
inline

Definition at line 72 of file atomic.h.

73 {
74 }

◆ Atomic() [2/3]

template<typename T >
Atomic< T >::Atomic ( T value)
inline

Definition at line 76 of file atomic.h.

76 : std::atomic<T>(value)
77 {
78 }
float value(const T *src, size_t ch)

◆ Atomic() [3/3]

template<typename T >
Atomic< T >::Atomic ( const Atomic< T > & other)
inline

Definition at line 80 of file atomic.h.

80 : std::atomic<T>(other.loadNonatomic())
81 {
82 }
T loadNonatomic() const
Definition atomic.h:84

Member Function Documentation

◆ compareExchange()

template<typename T >
T Atomic< T >::compareExchange ( T expected,
T desired,
MemoryOrder memoryOrder )
inline

Definition at line 104 of file atomic.h.

105 {
106 std::atomic<T>::compare_exchange_strong(expected, desired, (std::memory_order) memoryOrder);
107 return expected; // modified by reference by compare_exchange_strong
108 }

◆ compareExchangeStrong()

template<typename T >
bool Atomic< T >::compareExchangeStrong ( T & expected,
T desired,
MemoryOrder memoryOrder )
inline

Definition at line 110 of file atomic.h.

111 {
112 return std::atomic<T>::compare_exchange_strong(expected, desired, (std::memory_order) memoryOrder);
113 }

◆ compareExchangeWeak()

template<typename T >
bool Atomic< T >::compareExchangeWeak ( T & expected,
T desired,
MemoryOrder success,
MemoryOrder failure )
inline

Definition at line 115 of file atomic.h.

116 {
117 return std::atomic<T>::compare_exchange_weak(expected, desired, (std::memory_order) success, (std::memory_order) failure);
118 }

◆ exchange()

template<typename T >
T Atomic< T >::exchange ( T desired,
MemoryOrder memoryOrder )
inline

Definition at line 120 of file atomic.h.

121 {
122 return std::atomic<T>::exchange(desired, (std::memory_order) memoryOrder);
123 }

◆ fetchAdd()

template<typename T >
T Atomic< T >::fetchAdd ( T operand,
MemoryOrder memoryOrder )
inline

Definition at line 125 of file atomic.h.

126 {
127 return std::atomic<T>::fetch_add(operand, (std::memory_order) memoryOrder);
128 }

◆ fetchAnd()

template<typename T >
T Atomic< T >::fetchAnd ( T operand,
MemoryOrder memoryOrder )
inline

Definition at line 135 of file atomic.h.

136 {
137 return std::atomic<T>::fetch_and(operand, (std::memory_order) memoryOrder);
138 }

◆ fetchOr()

template<typename T >
T Atomic< T >::fetchOr ( T operand,
MemoryOrder memoryOrder )
inline

Definition at line 140 of file atomic.h.

141 {
142 return std::atomic<T>::fetch_or(operand, (std::memory_order) memoryOrder);
143 }

◆ fetchSub()

template<typename T >
T Atomic< T >::fetchSub ( T operand,
MemoryOrder memoryOrder )
inline

Definition at line 130 of file atomic.h.

131 {
132 return std::atomic<T>::fetch_sub(operand, (std::memory_order) memoryOrder);
133 }

◆ load()

template<typename T >
T Atomic< T >::load ( MemoryOrder memoryOrder) const
inline

Definition at line 89 of file atomic.h.

90 {
91 return std::atomic<T>::load((std::memory_order) memoryOrder);
92 }

◆ loadNonatomic()

template<typename T >
T Atomic< T >::loadNonatomic ( ) const
inline

Definition at line 84 of file atomic.h.

85 {
86 return std::atomic<T>::load(std::memory_order_relaxed);
87 }

◆ operator=()

template<typename T >
T Atomic< T >::operator= ( T value)
private

◆ store()

template<typename T >
void Atomic< T >::store ( T value,
MemoryOrder memoryOrder )
inline

Definition at line 99 of file atomic.h.

100 {
101 return std::atomic<T>::store(value, (std::memory_order) memoryOrder);
102 }

References value().

◆ storeNonatomic()

template<typename T >
void Atomic< T >::storeNonatomic ( T value)
inline

Definition at line 94 of file atomic.h.

95 {
96 return std::atomic<T>::store(value, std::memory_order_relaxed);
97 }

References value().


The documentation for this class was generated from the following file: