33#define _RWSTD_NO_LONG_ATOMIC_OPS
34#define _RWSTD_NO_LLONG_ATOMIC_OPS
38extern "C" long __cdecl _InterlockedIncrement (
volatile long*);
39extern "C" long __cdecl _InterlockedDecrement (
volatile long*);
40extern "C" long __cdecl _InterlockedExchange (
volatile long*,
long);
42# pragma intrinsic (_InterlockedIncrement)
43# pragma intrinsic (_InterlockedDecrement)
44# pragma intrinsic (_InterlockedExchange)
47# if defined (_RWSTD_MSVC) && _RWSTD_MSVC >= 1400
48extern "C" short __cdecl _InterlockedIncrement16 (
volatile short*);
49extern "C" short __cdecl _InterlockedDecrement16 (
volatile short*);
50# pragma intrinsic (_InterlockedIncrement16)
51# pragma intrinsic (_InterlockedDecrement16)
54#elif defined (_RWSTD_INTERLOCKED_T)
59InterlockedIncrement (_RWSTD_INTERLOCKED_T*);
62InterlockedDecrement (_RWSTD_INTERLOCKED_T*);
65InterlockedExchange (_RWSTD_INTERLOCKED_T*,
long);
69inline long _InterlockedIncrement (
volatile long *__x)
71 return InterlockedIncrement (
75inline long _InterlockedDecrement (
volatile long *__x)
77 return InterlockedDecrement (
81inline long _InterlockedExchange (
volatile long *__x,
long __y)
83 return InterlockedExchange (
106__rw_atomic_preincrement (
char &__x,
bool)
109 return __rw_atomic_add8 (&__x, +1);
114__rw_atomic_preincrement (
signed char &__x,
bool)
122__rw_atomic_preincrement (
unsigned char &__x,
bool)
130__rw_atomic_preincrement (
short &__x,
bool)
134#if defined (_RWSTD_MSVC) && _RWSTD_MSVC >= 1400
135 return _InterlockedIncrement16 (&__x);
137 return __rw_atomic_add16 (&__x, +1);
143__rw_atomic_preincrement (
unsigned short &__x,
bool)
147#if defined (_RWSTD_MSVC) && _RWSTD_MSVC >= 1400
156__rw_atomic_preincrement (
int &__x,
bool)
163 return __rw_atomic_add32 (&__x, 1);
169__rw_atomic_preincrement (
unsigned int &__x,
bool)
182__rw_atomic_predecrement (
char &__x,
bool)
185 return __rw_atomic_add8 (&__x, -1);
190__rw_atomic_predecrement (
signed char &__x,
bool)
198__rw_atomic_predecrement (
unsigned char &__x,
bool)
206__rw_atomic_predecrement (
short &__x,
bool)
210#if defined (_RWSTD_MSVC) && _RWSTD_MSVC >= 1400
211 return _InterlockedDecrement16 (&__x);
213 return __rw_atomic_add16 (&__x, -1);
219__rw_atomic_predecrement (
unsigned short &__x,
bool)
223#if defined (_RWSTD_MSVC) && _RWSTD_MSVC >= 1400
232__rw_atomic_predecrement (
int &__x,
bool)
239 return __rw_atomic_add32 (&__x, -1);
245__rw_atomic_predecrement (
unsigned int &__x,
bool)
258__rw_atomic_exchange (
char &__x,
char __y,
bool)
261 return __rw_atomic_xchg8 (&__x, __y);
266__rw_atomic_exchange (
signed char &__x,
signed char __y,
bool)
275__rw_atomic_exchange (
unsigned char &__x,
unsigned char __y,
bool)
284__rw_atomic_exchange (
short &__x,
short __y,
bool)
287 return __rw_atomic_xchg16 (&__x, __y);
292__rw_atomic_exchange (
unsigned short &__x,
unsigned short __y,
bool)
301__rw_atomic_exchange (
int &__x,
int __y,
bool)
309 return __rw_atomic_xchg32 (&__x, __y);
315__rw_atomic_exchange (
unsigned int &__x,
unsigned int __y,
bool)
#define _RWSTD_REINTERPRET_CAST(T, x)
#define _RWSTD_STATIC_CAST(T, x)
#define _RWSTD_NAMESPACE(name)
#define _RWSTD_COMPILE_ASSERT(const_expr)
#define _RWSTD_CONST_CAST(T, x)
__declspec(dllimport) void __stdcall InitializeCriticalSection(_RWSTD_CRITICAL_SECTION *)