diff options
Diffstat (limited to 'externals/ace/Atomic_Op_T.h')
| -rw-r--r-- | externals/ace/Atomic_Op_T.h | 369 |
1 files changed, 0 insertions, 369 deletions
diff --git a/externals/ace/Atomic_Op_T.h b/externals/ace/Atomic_Op_T.h deleted file mode 100644 index 13bd7dbbf88..00000000000 --- a/externals/ace/Atomic_Op_T.h +++ /dev/null @@ -1,369 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file Atomic_Op_T.h - * - * $Id: Atomic_Op_T.h 80826 2008-03-04 14:51:23Z wotte $ - * - * @author Douglas C. Schmidt <schmidt@uci.edu> - */ -//============================================================================= - -#ifndef ACE_ATOMIC_OP_T_H -#define ACE_ATOMIC_OP_T_H -#include /**/ "ace/pre.h" - -#include /**/ "ace/config-all.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -ACE_BEGIN_VERSIONED_NAMESPACE_DECL - -template<typename TYPE> -struct ACE_Type_Traits -{ - typedef TYPE const & parameter_type; -}; - -template<> -struct ACE_Type_Traits<bool> -{ - typedef bool parameter_type; -}; - -template<> -struct ACE_Type_Traits<char> -{ - typedef char parameter_type; -}; - -template<> -struct ACE_Type_Traits<signed char> -{ - typedef signed char parameter_type; -}; - -template<> -struct ACE_Type_Traits<unsigned char> -{ - typedef unsigned char parameter_type; -}; - -template<> -struct ACE_Type_Traits<short> -{ - typedef short parameter_type; -}; - -template<> -struct ACE_Type_Traits<unsigned short> -{ - typedef unsigned short parameter_type; -}; - -template<> -struct ACE_Type_Traits<int> -{ - typedef int parameter_type; -}; - -template<> -struct ACE_Type_Traits<unsigned int> -{ - typedef unsigned int parameter_type; -}; - -template<> -struct ACE_Type_Traits<long> -{ - typedef long parameter_type; -}; - -template<> -struct ACE_Type_Traits<unsigned long> -{ - typedef unsigned long parameter_type; -}; - -#ifndef ACE_LACKS_LONGLONG_T -template<> -struct ACE_Type_Traits<long long> -{ - typedef long long parameter_type; -}; -#endif /* !ACE_LACKS_LONGLONG_T */ - -#if !defined (ACE_LACKS_LONGLONG_T) \ - && !defined (ACE_LACKS_UNSIGNEDLONGLONG_T) -template<> -struct ACE_Type_Traits<unsigned long long> -{ - typedef unsigned long long parameter_type; -}; -#endif /* !ACE_LACKS_LONGLONG_T && !ACE_LACKS_UNSIGNEDLONGLONG_T */ - -template<> -struct ACE_Type_Traits<float> -{ - typedef float parameter_type; -}; - -template<> -struct ACE_Type_Traits<double> -{ - typedef double parameter_type; -}; - -template<> -struct ACE_Type_Traits<long double> -{ - typedef long double parameter_type; -}; - -template<typename TYPE> -struct ACE_Type_Traits<TYPE*> -{ - typedef TYPE* parameter_type; -}; - -/** - * @class ACE_Atomic_Op_Ex - * - * @brief Transparently parameterizes synchronization into basic - * arithmetic operations. - * - * This class is described in an article in the July/August 1994 - * issue of the C++ Report magazine. It implements a - * templatized version of the Decorator pattern from the GoF book. - * - * ACE_Atomic_Op_Ex objects must be constructed with a reference - * to an existing lock. A single lock can be shared between - * multiple ACE_Atomic_Op_Ex objects. If you do not require this - * ability consider using the ACE_Atomic_Op class instead, which - * may be able to take advantage of platform-specific - * optimisations to provide atomic operations without requiring a - * lock. - */ -template <class ACE_LOCK, typename TYPE> -class ACE_Atomic_Op_Ex -{ -public: - - typedef typename ACE_Type_Traits<TYPE>::parameter_type arg_type; - - // = Initialization methods. - - /// Initialize @c value_ to 0. - ACE_Atomic_Op_Ex (ACE_LOCK & mtx); - - /// Initialize @c value_ to c. - ACE_Atomic_Op_Ex (ACE_LOCK & mtx, arg_type c); - - // = Accessors. - - /// Atomically pre-increment @c value_. - TYPE operator++ (void); - - /// Atomically post-increment @c value_. - TYPE operator++ (int); - - /// Atomically increment @c value_ by rhs. - TYPE operator+= (arg_type rhs); - - /// Atomically pre-decrement @c value_. - TYPE operator-- (void); - - /// Atomically post-decrement @c value_. - TYPE operator-- (int); - - /// Atomically decrement @c value_ by rhs. - TYPE operator-= (arg_type rhs); - - /// Atomically compare @c value_ with rhs. - bool operator== (arg_type rhs) const; - - /// Atomically compare @c value_ with rhs. - bool operator!= (arg_type rhs) const; - - /// Atomically check if @c value_ greater than or equal to rhs. - bool operator>= (arg_type rhs) const; - - /// Atomically check if @c value_ greater than rhs. - bool operator> (arg_type rhs) const; - - /// Atomically check if @c value_ less than or equal to rhs. - bool operator<= (arg_type rhs) const; - - /// Atomically check if @c value_ less than rhs. - bool operator< (arg_type rhs) const; - - /// Atomically assign rhs to @c value_. - ACE_Atomic_Op_Ex<ACE_LOCK, TYPE> &operator= (arg_type rhs); - - /// Atomically assign <rhs> to @c value_. - ACE_Atomic_Op_Ex<ACE_LOCK, TYPE> &operator= ( - ACE_Atomic_Op_Ex<ACE_LOCK, TYPE> const & rhs); - - /// Explicitly return @c value_. - TYPE value (void) const; - - /// Dump the state of an object. - void dump (void) const; - - // ACE_ALLOC_HOOK_DECLARE; - // Declare the dynamic allocation hooks. - - /// Manage copying... - ACE_Atomic_Op_Ex (ACE_Atomic_Op_Ex<ACE_LOCK, TYPE> const &); - - /** - * Returns a reference to the underlying <ACE_LOCK>. This makes it - * possible to acquire the lock explicitly, which can be useful in - * some cases if you instantiate the <ACE_Atomic_Op_Ex> with an - * ACE_Recursive_Mutex or ACE_Process_Mutex. @note the right - * name would be lock_, but HP/C++ will choke on that! - */ - ACE_LOCK & mutex (void); - - /** - * Explicitly return @c 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 ;-) - */ - TYPE & value_i (void); - -private: - /// Type of synchronization mechanism. - ACE_LOCK & mutex_; - - /// Current object decorated by the atomic op. - TYPE value_; -}; - -/** - * @class ACE_Atomic_Op - * - * @brief Transparently parameterizes synchronization into basic - * arithmetic operations. - * - * This class is described in an article in the July/August 1994 - * issue of the C++ Report magazine. It implements a - * templatized version of the Decorator pattern from the GoF book. - * - * Certain platforms may provide a template specialization for - * ACE_Atomic_Op <ACE_Thread_Mutex, long> that provides optimized - * atomic integer operations without actually requiring a mutex. - */ -template <class ACE_LOCK, typename TYPE> -class ACE_Atomic_Op -{ -public: - - typedef typename ACE_Type_Traits<TYPE>::parameter_type arg_type; - - /// Initialize @c value_ to 0. - ACE_Atomic_Op (void); - - /// Initialize @c value_ to c. - ACE_Atomic_Op (arg_type c); - - /// Manage copying... - ACE_Atomic_Op (ACE_Atomic_Op<ACE_LOCK, TYPE> const & c); - - /// Atomically assign rhs to @c value_. - ACE_Atomic_Op<ACE_LOCK, TYPE> & operator= (arg_type rhs); - - /// Atomically assign <rhs> to @c value_. - ACE_Atomic_Op<ACE_LOCK, TYPE> & operator= ( - ACE_Atomic_Op<ACE_LOCK, TYPE> const & rhs); - - /// Atomically pre-increment @c value_. - TYPE operator++ (void); - - /// Atomically post-increment @c value_. - TYPE operator++ (int); - - /// Atomically increment @c value_ by rhs. - TYPE operator+= (arg_type rhs); - - /// Atomically pre-decrement @c value_. - TYPE operator-- (void); - - /// Atomically post-decrement @c value_. - TYPE operator-- (int); - - /// Atomically decrement @c value_ by rhs. - TYPE operator-= (arg_type rhs); - - /// Atomically compare @c value_ with rhs. - bool operator== (arg_type rhs) const; - - /// Atomically compare @c value_ with rhs. - bool operator!= (arg_type rhs) const; - - /// Atomically check if @c value_ greater than or equal to rhs. - bool operator>= (arg_type rhs) const; - - /// Atomically check if @c value_ greater than rhs. - bool operator> (arg_type rhs) const; - - /// Atomically check if @c value_ less than or equal to rhs. - bool operator<= (arg_type rhs) const; - - /// Atomically check if @c value_ less than rhs. - bool operator< (arg_type rhs) const; - - /// Explicitly return @c value_. - TYPE value (void) const; - - /// Dump the state of an object. - void dump (void) const; - - /** - * Returns a reference to the underlying <ACE_LOCK>. This makes it - * possible to acquire the lock explicitly, which can be useful in - * some cases if you instantiate the ACE_Atomic_Op with an - * ACE_Recursive_Mutex or ACE_Process_Mutex. - * - * @deprecated This member function is deprecated and so may go away in - * the future. If you need access to the underlying mutex, consider - * using the ACE_Atomic_Op_Ex template instead. - */ - ACE_LOCK & mutex (void); - - /** - * Explicitly return @c 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 ;-) - */ - TYPE & value_i (void); - -private: - /// Type of synchronization mechanism. - ACE_LOCK own_mutex_; - - /// Underlying atomic op implementation. - ACE_Atomic_Op_Ex <ACE_LOCK, TYPE> impl_; -}; - -ACE_END_VERSIONED_NAMESPACE_DECL - -#if defined (__ACE_INLINE__) -#include "ace/Atomic_Op_T.inl" -#endif /* __ACE_INLINE__ */ - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "ace/Atomic_Op_T.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Atomic_Op_T.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#include /**/ "ace/post.h" -#endif /*ACE_ATOMIC_OP_T_H*/ |
