diff options
author | Oz Linden <oz@lindenlab.com> | 2013-10-23 13:05:59 -0400 |
---|---|---|
committer | Oz Linden <oz@lindenlab.com> | 2013-10-23 13:05:59 -0400 |
commit | c9775dde6249582f0e8976be15e72bfebc4ac3fc (patch) | |
tree | 83407157dae234db649dfff763e68f6e3c843335 /indra/llcommon/llapr.h | |
parent | 1a72325ef1e8c798066d8ef7f82acd08d60fb68c (diff) | |
parent | ea1e1b0925b386cf83178539b8eae9e25c573548 (diff) |
merge up to 3.6.9-release
Diffstat (limited to 'indra/llcommon/llapr.h')
-rwxr-xr-x | indra/llcommon/llapr.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h index 752574c65d..1fe7d98472 100755 --- a/indra/llcommon/llapr.h +++ b/indra/llcommon/llapr.h @@ -164,14 +164,20 @@ public: ~LLAtomic32<Type>() {}; operator const Type() { apr_uint32_t data = apr_atomic_read32(&mData); return Type(data); } + + Type CurrentValue() const { apr_uint32_t data = apr_atomic_read32(const_cast< volatile apr_uint32_t* >(&mData)); return Type(data); } + Type operator =(const Type& x) { apr_atomic_set32(&mData, apr_uint32_t(x)); return Type(mData); } void operator -=(Type x) { apr_atomic_sub32(&mData, apr_uint32_t(x)); } void operator +=(Type x) { apr_atomic_add32(&mData, apr_uint32_t(x)); } Type operator ++(int) { return apr_atomic_inc32(&mData); } // Type++ Type operator --(int) { return apr_atomic_dec32(&mData); } // approximately --Type (0 if final is 0, non-zero otherwise) + + Type operator ++() { return apr_atomic_inc32(&mData); } // Type++ + Type operator --() { return apr_atomic_dec32(&mData); } // approximately --Type (0 if final is 0, non-zero otherwise) private: - apr_uint32_t mData; + volatile apr_uint32_t mData; }; typedef LLAtomic32<U32> LLAtomicU32; |