00001 #ifndef _posix_ScopedIncrement_h
00002 #define _posix_ScopedIncrement_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <boost/noncopyable.hpp>
00023
00024 namespace qpid {
00025 namespace sys {
00026
00028 template <class T>
00029 class ScopedIncrement : boost::noncopyable
00030 {
00031 public:
00032 ScopedIncrement(T& c) : count(c) { ++count; }
00033 ~ScopedIncrement() { --count; }
00034 private:
00035 T& count;
00036 };
00037
00038
00040 template <class T>
00041 class ScopedDecrement : boost::noncopyable
00042 {
00043 public:
00044 ScopedDecrement(T& c) : count(c) { value = --count; }
00045 ~ScopedDecrement() { ++count; }
00046
00048 operator long() { return value; }
00049
00050 private:
00051 T& count;
00052 long value;
00053 };
00054
00055
00056 }}
00057
00058
00059 #endif // _posix_ScopedIncrement_h