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;
Atomic integer.
Definition: AtomicInt.hpp:29
int exchange_and_add(int val)
Add val to value.
Definition: AtomicInt.hpp:70
bool compare_and_exchange(int old, int val)
Set value to val iff current value is old.
Definition: AtomicInt.hpp:64
bool decrement_and_test()
Decrement value.
Definition: AtomicInt.hpp:76