diff options
Diffstat (limited to 'ace/Atomic_Op.i')
-rw-r--r-- | ace/Atomic_Op.i | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/ace/Atomic_Op.i b/ace/Atomic_Op.i deleted file mode 100644 index 8c56bb42ba2..00000000000 --- a/ace/Atomic_Op.i +++ /dev/null @@ -1,193 +0,0 @@ -// $Id$ - -template <class ACE_LOCK, class TYPE> ACE_INLINE TYPE -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator++ (void) -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator++"); - ACE_Guard<ACE_LOCK> m (this->mutex_); - return ++this->value_; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE TYPE -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator+= (const TYPE &i) -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator+="); - ACE_Guard<ACE_LOCK> m (this->mutex_); - return this->value_ += i; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE TYPE -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator-- (void) -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator--"); - ACE_Guard<ACE_LOCK> m (this->mutex_); - return --this->value_; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE TYPE -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator-= (const TYPE &i) -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator-="); - ACE_Guard<ACE_LOCK> m (this->mutex_); - return this->value_ -= i; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE -ACE_Atomic_Op<ACE_LOCK, TYPE>::ACE_Atomic_Op (const ACE_Atomic_Op<ACE_LOCK, TYPE> &rhs) -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::ACE_Atomic_Op"); - *this = rhs; // Invoke the assignment operator. -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE TYPE -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator++ (int) -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator++"); - ACE_Guard<ACE_LOCK> m (this->mutex_); - return this->value_++; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE TYPE -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator-- (int) -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator--"); - ACE_Guard<ACE_LOCK> m (this->mutex_); - return this->value_--; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE int -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator== (const TYPE &i) const -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator=="); - ACE_Guard<ACE_LOCK> m ((ACE_LOCK &) this->mutex_); - return this->value_ == i; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE int -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator!= (const TYPE &i) const -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator!="); - return !(*this == i); -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE int -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator>= (const TYPE &i) const -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator>="); - ACE_Guard<ACE_LOCK> m ((ACE_LOCK &) this->mutex_); - return this->value_ >= i; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE int -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator> (const TYPE &rhs) const -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator>"); - ACE_Guard<ACE_LOCK> m ((ACE_LOCK &) this->mutex_); - return this->value_ > rhs; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE int -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator<= (const TYPE &rhs) const -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator<="); - ACE_Guard<ACE_LOCK> m ((ACE_LOCK &) this->mutex_); - return this->value_ <= rhs; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE int -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator< (const TYPE &rhs) const -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator<"); - ACE_Guard<ACE_LOCK> m ((ACE_LOCK &) this->mutex_); - return this->value_ < rhs; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE void -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator= (const ACE_Atomic_Op<ACE_LOCK, TYPE> &rhs) -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator="); - if (&rhs == this) - return; // Avoid deadlock... - ACE_Guard<ACE_LOCK> m (this->mutex_); - // This will call ACE_Atomic_Op::TYPE(), which will ensure the value - // of <rhs> is acquired atomically. - - this->value_ = rhs.value (); -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE TYPE -ACE_Atomic_Op<ACE_LOCK, TYPE>::value (void) const -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::value"); - ACE_Guard<ACE_LOCK> m ((ACE_LOCK &) this->mutex_); - return this->value_; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE TYPE & -ACE_Atomic_Op<ACE_LOCK, TYPE>::value_i (void) -{ - // Explicitly return <value_> (by reference). This gives the user - // full, unrestricted access to the underlying value. This method - // will usually be used in conjunction with explicit access to the - // lock. Use with care ;-) - return this->value_; -} - -template <class ACE_LOCK, class TYPE> ACE_INLINE void -ACE_Atomic_Op<ACE_LOCK, TYPE>::operator= (const TYPE &i) -{ -// ACE_TRACE ("ACE_Atomic_Op<ACE_LOCK, TYPE>::operator="); - ACE_Guard<ACE_LOCK> m (this->mutex_); - this->value_ = i; -} - -// These specializations have been added to ACE_Atomic_Op to make the -// implementation faster on Win32 that has OS support for doing this -// quickly through methods like InterlockedIncrement and -// InterlockedDecrement - -#if defined (ACE_WIN32) - -inline long -ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator++ (void) -{ - return ::InterlockedIncrement (&this->value_); -} - -inline long -ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator-- (void) -{ - return ::InterlockedDecrement (&this->value_); -} - -inline void -ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator= (const long &i) -{ - ::InterlockedExchange (&this->value_, - i); -} - -inline void -ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator= (const ACE_Atomic_Op<ACE_Thread_Mutex, long> &rhs) -{ - ::InterlockedExchange (&this->value_, - rhs.value ()); -} - -#if defined (ACE_HAS_INTERLOCKED_EXCHANGEADD) - -inline long -ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator+= (const long &i) -{ - return ::InterlockedExchangeAdd (&this->value_, i); -} - -inline long -ACE_Atomic_Op<ACE_Thread_Mutex, long>::operator-= (const long &i) -{ - return ::InterlockedExchangeAdd (&this->value_, -i); -} - -#endif /* ACE_HAS_INTERLOCKED_EXCHANGEADD */ - -#endif /* ACE_WIN32 */ |