diff options
| -rw-r--r-- | include/al/array_typed.h | 2 | ||||
| -rw-r--r-- | include/al/atomic.h | 16 | ||||
| -rw-r--r-- | include/al/macros.h | 3 |
3 files changed, 13 insertions, 8 deletions
diff --git a/include/al/array_typed.h b/include/al/array_typed.h index 076f58f..75b9d83 100644 --- a/include/al/array_typed.h +++ b/include/al/array_typed.h @@ -7,8 +7,6 @@ #include "macros.h" -#define AL_PASTER_EVALUATOR(X, Y) X##_##Y -#define AL_PASTER(X, Y) AL_PASTER_EVALUATOR(X, Y) #define AL_EMPTY_DEFAULT_1(FUNC, T, S, ...) FUNC(T, S) #define AL_EMPTY_DEFAULT(...) AL_EMPTY_DEFAULT_1(__VA_ARGS__, , ) diff --git a/include/al/atomic.h b/include/al/atomic.h index 39b0c25..adb25c0 100644 --- a/include/al/atomic.h +++ b/include/al/atomic.h @@ -12,13 +12,16 @@ #define AL_ATOMIC_ACQ_REL c89atomic_memory_order_acq_rel #define AL_ATOMIC_SEQ_CST c89atomic_memory_order_seq_cst -#define atomic(T) _al_atomic_##T +#define AL_PASTER_EVALUATOR(X, Y) X##_##Y +#define AL_PASTER(X, Y) AL_PASTER_EVALUATOR(X, Y) -#define al_atomic_load(T) _al_atomic_load_##T -#define al_atomic_store(T) _al_atomic_store_##T -#define al_atomic_add(T) _al_atomic_add_##T -#define al_atomic_sub(T) _al_atomic_sub_##T -#define al_atomic_compare_and_swap(T) _al_atomic_compare_and_swap_##T +#define atomic(T) AL_PASTER(_al_atomic, T) + +#define al_atomic_load(T) AL_PASTER(_al_atomic_load, T) +#define al_atomic_store(T) AL_PASTER(_al_atomic_store, T) +#define al_atomic_add(T) AL_PASTER(_al_atomic_add, T) +#define al_atomic_sub(T) AL_PASTER(_al_atomic_sub, T) +#define al_atomic_compare_and_swap(T) AL_PASTER(_al_atomic_compare_and_swap, T) // Special case for pointers. #define _al_atomic_load_void(p, order) c89atomic_load_explicit_ptr((volatile void **)p, order) @@ -71,6 +74,7 @@ AL_ATOMIC_DEFINE(u8, uint8, 8); AL_ATOMIC_DEFINE(s8, int8, i8); AL_ATOMIC_DEFINE(f64, f64, f64); AL_ATOMIC_DEFINE(f32, f32, f32); +AL_ATOMIC_DEFINE(bool, bool, 8); static inline f32 _al_atomic_add_f32(atomic(f32) *a, f32 value, s32 order) { diff --git a/include/al/macros.h b/include/al/macros.h index 477eef3..81fb581 100644 --- a/include/al/macros.h +++ b/include/al/macros.h @@ -3,6 +3,9 @@ #define AL_MACRO_WRAP(c) do { c } while(0) +#define AL_PASTER_EVALUATOR(X, Y) X##_##Y +#define AL_PASTER(X, Y) AL_PASTER_EVALUATOR(X, Y) + #if defined LIKELY || defined UNLIKELY #error "Conflicting definitions for LIKELY/UNLIKELY" #endif |