32#ifndef ZYCORE_ATOMIC_H
33#define ZYCORE_ATOMIC_H
81#define ZYAN_ATOMIC_COMPARE_EXCHANGE(destination, comparand, value) \
82 ZyanAtomicCompareExchange((ZyanAtomicPointer*)&(destination), (comparand), (value))
87#define ZYAN_ATOMIC_INCREMENT(destination) \
88 ZyanAtomicIncrement((ZyanAtomicPointer*)&(destination));
93#define ZYAN_ATOMIC_DECREMENT(destination) \
94 ZyanAtomicDecrement((ZyanAtomicPointer*)&(destination));
103#define ZYAN_ATOMIC_COMPARE_EXCHANGE32(destination, comparand, value) \
104 ZyanAtomicCompareExchange32((ZyanAtomic32*)&(destination), (comparand), (value))
109#define ZYAN_ATOMIC_INCREMENT32(destination) \
110 ZyanAtomicIncrement32((ZyanAtomic32*)&(destination));
115#define ZYAN_ATOMIC_DECREMENT32(destination) \
116 ZyanAtomicDecrement32((ZyanAtomic32*)&(destination));
125#define ZYAN_ATOMIC_COMPARE_EXCHANGE64(destination, comparand, value) \
126 ZyanAtomicCompareExchange64((ZyanAtomic64*)&(destination), (comparand), (value))
131#define ZYAN_ATOMIC_INCREMENT64(destination) \
132 ZyanAtomicIncrement64((ZyanAtomic64*)&(destination));
137#define ZYAN_ATOMIC_DECREMENT64(destination) \
138 ZyanAtomicDecrement64((ZyanAtomic64*)&(destination));
224#if defined(ZYAN_CLANG) || defined(ZYAN_GCC) || defined(ZYAN_ICC)
226#elif defined(ZYAN_MSVC)
229# error "Unsupported compiler detected"
struct ZyanAtomicPointer_ ZyanAtomicPointer
struct ZyanAtomic64_ ZyanAtomic64
struct ZyanAtomic32_ ZyanAtomic32
General helper and platform detection macros.
Includes and defines some default data types.
uintptr_t ZyanUPointer
Definition Types.h:226
uint64_t ZyanU64
Definition Types.h:219
uint32_t ZyanU32
Definition Types.h:218
void * ZyanVoidPointer
Defines the ZyanVoidPointer data-type.
Definition Types.h:270
ZyanU32 volatile value
Definition Atomic.h:51
ZyanU64 volatile value
Definition Atomic.h:59
ZyanVoidPointer volatile value
Definition Atomic.h:67