Go to the documentation of this file.
31 # include <stdatomic.h>
34 using std::atomic_uintptr_t;
35 using std::memory_order_relaxed;
36 using std::memory_order_acq_rel;
47 atomic_init(&rc->
refs, (uintptr_t)1);
53 uintptr_t prev = atomic_fetch_add_explicit(&rc->
refs, (uintptr_t)1,
54 memory_order_relaxed);
62 uintptr_t prev = atomic_fetch_sub_explicit(&rc->
refs, (uintptr_t)1,
63 memory_order_acq_rel);
73 return atomic_load_explicit(&rc->
refs, memory_order_relaxed);
static uintptr_t vlc_atomic_rc_get(const vlc_atomic_rc_t *rc)
Returns the current reference count.
Definition: vlc_atomic.h:72
struct vlc_atomic_rc_t vlc_atomic_rc_t
static bool vlc_atomic_rc_dec(vlc_atomic_rc_t *rc)
Decrement the RC and return true if it reaches 0.
Definition: vlc_atomic.h:61
static void vlc_atomic_rc_inc(vlc_atomic_rc_t *rc)
Increment the RC.
Definition: vlc_atomic.h:52
atomic_uintptr_t refs
Definition: vlc_atomic.h:42
#define VLC_UNUSED(x)
Definition: vlc_common.h:1105
#define vlc_assert(pred)
Run-time assertion.
Definition: vlc_common.h:271
static void vlc_atomic_rc_init(vlc_atomic_rc_t *rc)
Init the RC to 1.
Definition: vlc_atomic.h:46
Definition: vlc_atomic.h:41