22 # error Not implemented in C++. 34 # include <stdatomic.h> 41 union {
float f; uint32_t i; } u;
43 atomic_init(var, u.i);
49 union {
float f; uint32_t i; } u;
50 u.i = atomic_load(atom);
57 union {
float f; uint32_t i; } u;
59 atomic_store(atom, u.i);
69 atomic_init(&rc->
refs, 1);
75 unsigned prev = atomic_fetch_add_explicit(&rc->
refs, 1, memory_order_relaxed);
83 unsigned prev = atomic_fetch_sub_explicit(&rc->
refs, 1, memory_order_acq_rel);
Definition: vlc_atomic.h:63
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:82
#define VLC_UNUSED(x)
Definition: vlc_common.h:1085
This file is a collection of common definitions and types.
static float vlc_atomic_load_float(vlc_atomic_float *atom)
Helper to retrieve a single precision from an atom.
Definition: vlc_atomic.h:48
const char var[sizeof("video")]
Definition: player.c:1699
#define vlc_assert(pred)
Run-time assertion.
Definition: vlc_common.h:267
static void vlc_atomic_store_float(vlc_atomic_float *atom, float f)
Helper to store a single precision into an atom.
Definition: vlc_atomic.h:56
struct vlc_atomic_rc_t vlc_atomic_rc_t
static void vlc_atomic_init_float(vlc_atomic_float *var, float f)
Definition: vlc_atomic.h:40
atomic_uint refs
Definition: vlc_atomic.h:64
static void vlc_atomic_rc_init(vlc_atomic_rc_t *rc)
Init the RC to 1.
Definition: vlc_atomic.h:68
atomic_uint_least32_t vlc_atomic_float
Definition: vlc_atomic.h:38
static void vlc_atomic_rc_inc(vlc_atomic_rc_t *rc)
Increment the RC.
Definition: vlc_atomic.h:74