diff options
Diffstat (limited to 'include/utils')
-rw-r--r-- | include/utils/RefBase.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/include/utils/RefBase.h b/include/utils/RefBase.h index c24c0db..d92cfb0 100644 --- a/include/utils/RefBase.h +++ b/include/utils/RefBase.h @@ -112,10 +112,23 @@ public: getWeakRefs()->trackMe(enable, retain); } + // used to override the RefBase destruction. + class Destroyer { + friend class RefBase; + public: + virtual ~Destroyer(); + private: + virtual void destroy(RefBase const* base) = 0; + }; + + // Make sure to never acquire a strong reference from this function. The + // same restrictions than for destructors apply. + void setDestroyer(Destroyer* destroyer); + protected: RefBase(); virtual ~RefBase(); - + //! Flags for extendObjectLifetime() enum { OBJECT_LIFETIME_WEAK = 0x0001, |