00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _SK_UTIL_SLOT_MIXIN_LINKCOUNTER_
00009 #define _SK_UTIL_SLOT_MIXIN_LINKCOUNTER_
00010
00011 #include <sk/util/Object.h>
00012
00013 namespace sk {
00014 namespace util {
00015 namespace slot {
00016 namespace mixin {
00017 class LinkCounter {
00018 public:
00019 LinkCounter()
00020 : _counter(0) {}
00021
00022 bool link() {
00023 return _counter++ == 0;
00024 }
00025
00026 bool unlink() {
00027 return _counter > 0 ? --_counter == 0 : true;
00028 }
00029
00030 int getCounter() const {
00031 return _counter;
00032 }
00033
00034 private:
00035 int _counter;
00036 };
00037 }
00038 }
00039 }
00040 }
00041
00042 #endif