18 #ifndef RAUL_ATOMIC_INT_HPP
19 #define RAUL_ATOMIC_INT_HPP
32 { g_atomic_int_set(static_cast<volatile gint*>(&_val), val); }
35 { g_atomic_int_set(static_cast<volatile gint*>(&_val), copy.get()); }
37 inline int get()
const
38 {
return g_atomic_int_get(static_cast<volatile gint*>(&_val)); }
40 inline void operator=(
int val)
41 { g_atomic_int_set(static_cast<volatile gint*>(&_val), val); }
43 inline void operator+=(
int val)
44 { g_atomic_int_add(static_cast<volatile gint*>(&_val), val); }
46 inline void operator-=(
int val)
47 { g_atomic_int_add(static_cast<volatile gint*>(&_val), -val); }
49 inline bool operator==(
int val)
const
50 {
return get() == val; }
52 inline int operator+(
int val)
const
53 {
return get() + val; }
56 { g_atomic_int_inc(static_cast<volatile gint*>(&_val));
return *
this; }
59 { g_atomic_int_add(static_cast<volatile gint*>(&_val), -1);
return *
this; }
65 {
return g_atomic_int_compare_and_exchange(static_cast<volatile gint*>(&_val), old, val); }
71 {
return g_atomic_int_exchange_and_add(static_cast<volatile gint*>(&_val), val); }
77 {
return g_atomic_int_dec_and_test(static_cast<volatile gint*>(&_val)); }
80 volatile mutable int _val;
86 #endif // RAUL_ATOMIC_INT_HPP