AtomicCounter.h++
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __ccxx_AtomicCounter_hxx
00024 #define __ccxx_AtomicCounter_hxx
00025
00026 #include <commonc++/Common.h++>
00027 #include <commonc++/Mutex.h++>
00028
00029 namespace ccxx {
00030
00036 class COMMONCPP_API AtomicCounter
00037 {
00038 public:
00039
00044 AtomicCounter(int32_t value = 0) throw();
00045
00047 ~AtomicCounter() throw();
00048
00050 AtomicCounter(const AtomicCounter& other) throw();
00051
00053 AtomicCounter& operator=(const AtomicCounter& other) throw();
00054
00056 int32_t operator++() throw();
00057
00059 int32_t operator++(int) throw();
00060
00062 int32_t operator--() throw();
00063
00065 int32_t operator--(int) throw();
00066
00068 int32_t operator+=(int32_t delta) throw();
00069
00071 int32_t operator-=(int32_t delta) throw();
00072
00074 int32_t operator+(int32_t delta) const throw();
00075
00077 int32_t operator-(int32_t delta) const throw();
00078
00080 int32_t operator=(int32_t value) throw();
00081
00083 int32_t set(int32_t value) throw();
00084
00086 int32_t swap(int32_t value) throw();
00087
00095 int32_t testAndSet(int32_t value, int32_t comparand) throw();
00096
00098 int32_t get() const throw();
00099
00101 inline operator int32_t() const throw()
00102 { return(get()); }
00103
00104 private:
00105
00106 mutable int32_t _atomic;
00107 };
00108
00109 };
00110
00111 #endif // __ccxx_AtomicCounter_hxx
00112
00113