- add more python stuff
[enigma2.git] / lib / base / object.h
index 744bff19e02bcddd35f53dd1e8d058abf9627d85..ddb4512c2dea94c2b775c015768fbfc23ccccda5 100644 (file)
@@ -19,10 +19,18 @@ public:
        virtual void Release()=0;
 };
 
-#define DECLARE_REF private: int ref; public: void AddRef(); void Release();
+class oRefCount
+{
+       int ref;
+public:
+       oRefCount(): ref(0) { }
+       operator int&() { return ref; }
+};
+
+#define DECLARE_REF private: oRefCount ref; public: void AddRef(); void Release();
 #ifdef OBJECT_DEBUG
 extern int object_total_remaining;
-#define DEFINE_REF(c) void c::AddRef() { ++object_total_remaining; ++ref; eDebug("OBJECT_DEBUG " #c "+%p now %d", this, ref); } void c::Release() { --object_total_remaining; eDebug("OBJECT_DEBUG " #c "-%p now %d", this, ref-1); if (!--ref) delete this; }
+#define DEFINE_REF(c) void c::AddRef() { ++object_total_remaining; ++ref; eDebug("OBJECT_DEBUG " #c "+%p now %d", this, (int)ref); } void c::Release() { --object_total_remaining; eDebug("OBJECT_DEBUG " #c "-%p now %d", this, ref-1); if (!--ref) delete this; }
 #else
 #define DEFINE_REF(c) void c::AddRef() { ++ref; } void c::Release() { if (!--ref) delete this; }
 #endif