00001 // -*- Mode: c++ -*- 00002 00003 #ifndef MYTHREFCOUNT_H_ 00004 #define MYTHREFCOUNT_H_ 00005 00006 #include <QObject> 00007 #include <QMutex> 00008 #include "mythbaseexp.h" 00009 00010 class MBASE_PUBLIC ReferenceCounter : public QObject 00011 { 00012 Q_OBJECT 00013 public: 00014 ReferenceCounter(void); 00015 ~ReferenceCounter(void) {}; 00016 00017 virtual void UpRef(void); 00018 virtual bool DownRef(void); 00019 private: 00020 QMutex m_refLock; 00021 uint m_refCount; 00022 }; 00023 00024 class MBASE_PUBLIC ReferenceLocker 00025 { 00026 public: 00027 ReferenceLocker(ReferenceCounter *counter, bool upref=true); 00028 ~ReferenceLocker(); 00029 private: 00030 ReferenceCounter *m_refObject; 00031 }; 00032 00033 #endif