diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2013-02-27 17:25:45 -0800 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-16 05:12:47 +0100 |
commit | 19c70982517e76d89bb3da931e1390a6386603da (patch) | |
tree | e316ad490dd3207cf3e2552eb6c074a66cea3285 /src/corelib/thread/qatomic.h | |
parent | 634f82f1f1fda7983abf70b58e43c580b1f01df0 (diff) |
Add the rest of the non-volatile members of std::atomic to QBasicAtomic
[ChangeLog][QtCore][Atomic support]Added more operations to the atomic
classes, including operator T(), operator=(T), operator++,
operator--. For the QAtomicInteger, bit-manipulation operations are
also provided, both in operator and in fetchAndXxxYyyyyy modes.
Change-Id: I39c07be74e15e0a48f9e931f4342b182004dee1a
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/corelib/thread/qatomic.h')
-rw-r--r-- | src/corelib/thread/qatomic.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/corelib/thread/qatomic.h b/src/corelib/thread/qatomic.h index d79e168cb3..1faaa22d0f 100644 --- a/src/corelib/thread/qatomic.h +++ b/src/corelib/thread/qatomic.h @@ -89,6 +89,9 @@ public: void store(int newValue); void storeRelease(int newValue); + operator int() const; + QAtomicInteger &operator=(int); + static Q_DECL_CONSTEXPR bool isReferenceCountingNative(); static Q_DECL_CONSTEXPR bool isReferenceCountingWaitFree(); @@ -118,6 +121,36 @@ public: int fetchAndAddAcquire(int valueToAdd); int fetchAndAddRelease(int valueToAdd); int fetchAndAddOrdered(int valueToAdd); + + int fetchAndSubRelaxed(int valueToSub); + int fetchAndSubAcquire(int valueToSub); + int fetchAndSubRelease(int valueToSub); + int fetchAndSubOrdered(int valueToSub); + + int fetchAndOrRelaxed(int valueToOr); + int fetchAndOrAcquire(int valueToOr); + int fetchAndOrRelease(int valueToOr); + int fetchAndOrOrdered(int valueToOr); + + int fetchAndAndRelaxed(int valueToAnd); + int fetchAndAndAcquire(int valueToAnd); + int fetchAndAndRelease(int valueToAnd); + int fetchAndAndOrdered(int valueToAnd); + + int fetchAndXorRelaxed(int valueToXor); + int fetchAndXorAcquire(int valueToXor); + int fetchAndXorRelease(int valueToXor); + int fetchAndXorOrdered(int valueToXor); + + int operator++(); + int operator++(int); + int operator--(); + int operator--(int); + int operator+=(int value); + int operator-=(int value); + int operator|=(int value); + int operator&=(int value); + int operator^=(int value); #endif }; |