8 #define BAtomicCount_H 1 17 return __sync_fetch_and_add(&ovalue, 0);
20 return __sync_fetch_and_add(&ovalue, value) + value;
23 return __sync_fetch_and_add(&ovalue, 1);
26 return __sync_fetch_and_add(&ovalue, 1) + 1;
29 return __sync_fetch_and_add(&ovalue, -1);
32 return __sync_fetch_and_add(&ovalue, -1) - 1;
34 operator long()
const {
41 #if __GNUC__ >= 5 || __GNUC_MINOR__ >= 4 42 #include <ext/atomicity.h> 44 #include <bits/atomicity.h> 53 return __gnu_cxx::__exchange_and_add(&ovalue, 0);
56 return __gnu_cxx::__exchange_and_add(&ovalue, value) + value;
59 return __gnu_cxx::__exchange_and_add(&ovalue, 1);
62 return __gnu_cxx::__exchange_and_add(&ovalue, 1) + 1;
65 return __gnu_cxx::__exchange_and_add(&ovalue, -1);
68 return __gnu_cxx::__exchange_and_add(&ovalue, -1) - 1;
70 operator long()
const {
74 mutable _Atomic_word ovalue;
long operator--()
Definition: BAtomicCount.h:67
BAtomicCount(long value=0)
Definition: BAtomicCount.h:50
long operator++(int)
Definition: BAtomicCount.h:58
long operator++()
Definition: BAtomicCount.h:61
BAtomicCount class.
Definition: BAtomicCount.h:48
long add(long value)
Definition: BAtomicCount.h:55
long getValue() const
Definition: BAtomicCount.h:52
long operator--(int)
Definition: BAtomicCount.h:64