1 #ifndef VolViz_AtomicWrapper_h
2 #define VolViz_AtomicWrapper_h
7 #pragma clang diagnostic ignored "-Wpadded"
14 inline void set(T &dest, T
const &
src)
const noexcept { dest =
src; }
15 inline void set(T &dest, T &&
src) const noexcept { dest = std::move(
src); }
32 template <
class Arg>
inline void set(T &dest, Arg &&
src) const noexcept {
47 template <
class T,
template <
class>
class SetPolicy = DefaultSetPolicy>
62 std::lock_guard<std::mutex> lock(
mutex_);
69 std::lock_guard<std::mutex> lock(
mutex_);
71 SetPol::set(
obj_, rhs);
78 std::lock_guard<std::mutex> lock(
mutex_);
80 SetPol::set(
obj_, std::move(rhs));
95 #endif // VolViz_AtomicWrapper_h
Definition: AtomicWrapper.h:48
AtomicWrapper & operator=(AtomicWrapper const &)=delete
T obj_
Thre wrapped object.
Definition: AtomicWrapper.h:87
void set(T &dest, T const &src) const noexcept
Definition: AtomicWrapper.h:14
void set(T &dest, T &&src) const noexcept
Definition: AtomicWrapper.h:15
GLenum src
Definition: glad.h:3261
std::mutex mutex_
Mutex preventing simultaneous access.
Definition: AtomicWrapper.h:90
std::function< void(T const &)> afterAction
Definition: AtomicWrapper.h:29
std::function< void(T const &)> beforeAction
Definition: AtomicWrapper.h:25
Default set policy for AtomicWrapper class, justs sets dest to src.
Definition: AtomicWrapper.h:12
GLhandleARB obj
Definition: glad.h:8790
void set(T &dest, Arg &&src) const noexcept
Definition: AtomicWrapper.h:32
AtomicWrapper & operator=(T &&rhs)
Reassign the wrapped object in a thread safe manner (move version).
Definition: AtomicWrapper.h:77
Definition: AtomicWrapper.h:21
AtomicWrapper(T const &obj)
Initialized the wrapper with an object.
Definition: AtomicWrapper.h:53
AtomicWrapper(T &&obj)
Initialized the wrapper with an object (move constructor)
Definition: AtomicWrapper.h:55
AtomicWrapper & operator=(T const &rhs)
Reassign the wrapped object in a thread safe manner.
Definition: AtomicWrapper.h:68