diff options
Diffstat (limited to 'AK/Weakable.h')
-rw-r--r-- | AK/Weakable.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/AK/Weakable.h b/AK/Weakable.h index c9590c2be1..d5b55050d3 100644 --- a/AK/Weakable.h +++ b/AK/Weakable.h @@ -1,23 +1,29 @@ #pragma once #include "Assertions.h" -#include "Retainable.h" #include "RetainPtr.h" +#include "Retainable.h" namespace AK { -template<typename T> class Weakable; -template<typename T> class WeakPtr; +template<typename T> +class Weakable; +template<typename T> +class WeakPtr; template<typename T> class WeakLink : public Retainable<WeakLink<T>> { friend class Weakable<T>; + public: T* ptr() { return static_cast<T*>(m_ptr); } const T* ptr() const { return static_cast<const T*>(m_ptr); } private: - explicit WeakLink(T& weakable) : m_ptr(&weakable) { } + explicit WeakLink(T& weakable) + : m_ptr(&weakable) + { + } T* m_ptr; }; @@ -25,11 +31,12 @@ template<typename T> class Weakable { private: class Link; + public: WeakPtr<T> make_weak_ptr(); protected: - Weakable() { } + Weakable() {} ~Weakable() { |