23 #if defined (_MSC_VER) 31 #if defined (_MSC_VER) 44 typedef char Integral;
55 volatile Atomic* atomic,
59 *(
volatile Integral*)atomic;
72 volatile Atomic* atomic,
84 _InterlockedExchangeAdd8
86 (
volatile Integral*)atomic,
102 volatile Atomic* atomic,
103 Subtrahend* subtrahend)
114 _InterlockedExchangeAdd8
116 (
volatile Integral*)atomic,
132 volatile Atomic* atomic,
135 _InterlockedExchange8
137 (
volatile Integral*)atomic,
138 *(
const Integral*)value
150 volatile Atomic* atomic,
154 _InterlockedExchange8
156 (
volatile Integral*)atomic,
157 *
static_cast<Integral*
>(
value)
170 volatile Atomic* atomic,
171 Comparand* comparand,
177 *(Integral*)comparand;
179 const Integral previous =
180 _InterlockedCompareExchange8
182 (
volatile Integral*)atomic,
183 *(
const Integral*)value,
193 *(Integral*)value = previous;
204 typedef short Integral;
215 volatile Atomic* atomic,
219 *(
volatile Integral*)atomic;
232 volatile Atomic* atomic,
244 _InterlockedExchangeAdd16
246 (
volatile Integral*)atomic,
262 volatile Atomic* atomic,
263 Subtrahend* subtrahend)
274 _InterlockedExchangeAdd16
276 (
volatile Integral*)atomic,
292 volatile Atomic* atomic,
295 _InterlockedExchange16
297 (
volatile Integral*)atomic,
298 *(
const Integral*)value
310 volatile Atomic* atomic,
314 _InterlockedExchange16
316 (
volatile Integral*)atomic,
317 *
static_cast<Integral*
>(
value)
330 volatile Atomic* atomic,
331 Comparand* comparand,
337 *(Integral*)comparand;
339 const Integral previous =
340 _InterlockedCompareExchange16
342 (
volatile Integral*)atomic,
343 *(
const Integral*)value,
353 *(Integral*)value = previous;
364 typedef long Integral;
375 volatile Atomic* atomic,
379 *(
volatile Integral*)atomic;
392 volatile Atomic* atomic,
404 _InterlockedExchangeAdd
406 (
volatile Integral*)atomic,
422 volatile Atomic* atomic,
423 Subtrahend* subtrahend)
434 _InterlockedExchangeAdd
436 (
volatile Integral*)atomic,
452 volatile Atomic* atomic,
457 (
volatile Integral*)atomic,
458 *(
const Integral*)value
470 volatile Atomic* atomic,
476 (
volatile Integral*)atomic,
477 *
static_cast<Integral*
>(
value)
490 volatile Atomic* atomic,
491 Comparand* comparand,
497 *(Integral*)comparand;
499 const Integral previous =
500 _InterlockedCompareExchange
502 (
volatile Integral*)atomic,
503 *(
const Integral*)value,
513 *(Integral*)value = previous;
524 typedef long long Integral;
535 volatile Atomic* atomic,
539 *(
volatile Integral*)atomic;
552 volatile Atomic* atomic,
564 _InterlockedExchangeAdd64
566 (
volatile Integral*)atomic,
582 volatile Atomic* atomic,
583 Subtrahend* subtrahend)
594 _InterlockedExchangeAdd64
596 (
volatile Integral*)atomic,
612 volatile Atomic* atomic,
615 _InterlockedExchange64
617 (
volatile Integral*)atomic,
618 *(
const Integral*)value
630 volatile Atomic* atomic,
634 _InterlockedExchange64
636 (
volatile Integral*)atomic,
637 *
static_cast<Integral*
>(
value)
650 volatile Atomic* atomic,
651 Comparand* comparand,
657 *(Integral*)comparand;
659 const Integral previous =
660 _InterlockedCompareExchange64
662 (
volatile Integral*)atomic,
663 *(
const Integral*)value,
673 *(Integral*)value = previous;
690 volatile Type& atomic)
706 volatile Type& atomic,
719 volatile Type& atomic,
732 volatile Type& atomic,
748 volatile Type& atomic,
762 #elif defined (__GNUC__) 773 volatile Type& atomic)
775 const Type value = atomic;
777 __sync_synchronize();
785 volatile Type& atomic,
790 __sync_lock_test_and_set
801 volatile Type& atomic,
805 __sync_lock_test_and_set
815 volatile Type& atomic,
820 __sync_bool_compare_and_swap
831 volatile Type& atomic,
838 __sync_val_compare_and_swap
845 if (oldValue == comparand)
854 #endif // Toolset selector. 864 volatile Type& variable_;
875 volatile Type& variable)
876 : variable_(variable)
#define ONIXS_CONFLATEDUDP_NAMESPACE_END
AtomicScopedStore(volatile Type &variable)
bool value(Number &number, const MultiContainer &container, Tag tag)
#define ONIXS_CONFLATEDUDP_NAMESPACE_BEGIN