32#ifndef ZYCORE_ATOMIC_H
33#define ZYCORE_ATOMIC_H
51 ZyanU32
volatile value;
59 ZyanU64
volatile value;
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));
160 ZyanUPointer comparand, ZyanUPointer value);
187static ZyanU32 ZyanAtomicCompareExchange32(
ZyanAtomic32* destination,
188 ZyanU32 comparand, ZyanU32 value);
193static ZyanU32 ZyanAtomicIncrement32(
ZyanAtomic32* destination);
198static ZyanU32 ZyanAtomicDecrement32(
ZyanAtomic32* destination);
207static ZyanU64 ZyanAtomicCompareExchange64(
ZyanAtomic64* destination,
208 ZyanU64 comparand, ZyanU64 value);
213static ZyanU64 ZyanAtomicIncrement64(
ZyanAtomic64* destination);
218static ZyanU64 ZyanAtomicDecrement64(
ZyanAtomic64* destination);
224#if defined(ZYAN_CLANG) || defined(ZYAN_GCC) || defined(ZYAN_ICC)
225# include <Zycore/Internal/AtomicGNU.h>
226#elif defined(ZYAN_MSVC)
227# include <Zycore/Internal/AtomicMSVC.h>
229# error "Unsupported compiler detected"
void * ZyanVoidPointer
Definition Types.h:270