27#ifndef ZYCORE_ATOMIC_MSVC_H
28#define ZYCORE_ATOMIC_MSVC_H
67#elif defined(ZYAN_X64)
86# error "Unsupported architecture detected"
96 return (
ZyanU32)(_InterlockedCompareExchange((
volatile LONG*)&(destination->
value),
97 (LONG)value, (LONG)comparand));
102 return (
ZyanU32)(_InterlockedIncrement((
volatile LONG*)&(destination->
value)));
107 return (
ZyanU32)(_InterlockedDecrement((
volatile LONG*)&(destination->
value)));
117 return (
ZyanU64)(_InterlockedCompareExchange64((
volatile LONG64*)&(destination->
value),
118 (LONG64)value, (LONG64)comparand));
123 return (
ZyanU64)(_InterlockedIncrement64((
volatile LONG64*)&(destination->
value)));
128 return (
ZyanU64)(_InterlockedDecrement64((
volatile LONG64*)&(destination->
value)));
struct ZyanAtomicPointer_ ZyanAtomicPointer
struct ZyanAtomic64_ ZyanAtomic64
struct ZyanAtomic32_ ZyanAtomic32
General helper and platform detection macros.
#define ZYAN_INLINE
Definition Defines.h:356
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
ZyanU32 volatile value
Definition Atomic.h:51
ZyanU64 volatile value
Definition Atomic.h:59