6 #ifndef EASTL_ATOMIC_INTERNAL_MACROS_BASE_H
7 #define EASTL_ATOMIC_INTERNAL_MACROS_BASE_H
9 #if defined(EA_PRAGMA_ONCE_SUPPORTED)
14 #define EASTL_ATOMIC_INTERNAL_COMPILER_AVAILABLE(op) \
15 EA_PREPROCESSOR_JOIN(EA_PREPROCESSOR_JOIN(EASTL_COMPILER_, op), _AVAILABLE)
17 #define EASTL_ATOMIC_INTERNAL_ARCH_AVAILABLE(op) \
18 EA_PREPROCESSOR_JOIN(EA_PREPROCESSOR_JOIN(EASTL_ARCH_, op), _AVAILABLE)
20 #define EASTL_ATOMIC_INTERNAL_NOT_IMPLEMENTED_ERROR(...) \
21 static_assert(false, "eastl::atomic<T> atomic macro not implemented!")
25 #define EASTL_ATOMIC_INTERNAL_OP_PATTERN_00(op) \
26 EASTL_ATOMIC_INTERNAL_NOT_IMPLEMENTED_ERROR
29 #define EASTL_ATOMIC_INTERNAL_OP_PATTERN_01(op) \
30 EA_PREPROCESSOR_JOIN(EASTL_ARCH_, op)
33 #define EASTL_ATOMIC_INTERNAL_OP_PATTERN_10(op) \
34 EA_PREPROCESSOR_JOIN(EASTL_COMPILER_, op)
37 #define EASTL_ATOMIC_INTERNAL_OP_PATTERN_11(op) \
38 EA_PREPROCESSOR_JOIN(EASTL_ARCH_, op)
42 #define EASTL_ATOMIC_INTERNAL_OP_HELPER1(compiler, arch, op) \
43 EA_PREPROCESSOR_JOIN(EASTL_ATOMIC_INTERNAL_OP_PATTERN_, EA_PREPROCESSOR_JOIN(compiler, arch))(op)
57 #define EASTL_ATOMIC_CHOOSE_OP_IMPL(op) \
58 EASTL_ATOMIC_INTERNAL_OP_HELPER1( \
59 EASTL_ATOMIC_INTERNAL_COMPILER_AVAILABLE(op), \
60 EASTL_ATOMIC_INTERNAL_ARCH_AVAILABLE(op), \