MCPcopy Create free account
hub / github.com/MITK/MITK / WeakPointer

Class WeakPointer

Modules/Core/include/mitkWeakPointer.h:43–294  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41 */
42 template <class T>
43 class WeakPointer final
44 {
45 public:
46 /** \brief Callback type invoked when the observed object is deleted. */
47 using DeleteEventCallbackType = std::function<void ()>;
48
49 /** \brief Default constructor. Creates an expired weak pointer (null). */
50 WeakPointer() noexcept
51 : m_RawPointer(nullptr)
52 {
53 }
54
55 /**
56 * \brief Construct a weak pointer observing the given raw pointer.
57 *
58 * \param[in] rawPointer The object to observe. May be nullptr.
59 */
60 WeakPointer(T *rawPointer)
61 : m_RawPointer(rawPointer)
62 {
63 this->AddDeleteEventObserver();
64 }
65
66 /**
67 * \brief Copy constructor. Observes the same object as \p other.
68 *
69 * \param[in] other The weak pointer to copy from.
70 */
71 WeakPointer(const WeakPointer &other)
72 : m_RawPointer(other.m_RawPointer)
73 {
74 this->AddDeleteEventObserver();
75 }
76
77 /**
78 * \brief Move constructor. Takes over the observed object from \p other.
79 *
80 * After the move, \p other is in an expired state (null).
81 *
82 * \param[in] other The weak pointer to move from.
83 */
84 WeakPointer(WeakPointer &&other)
85 : m_RawPointer(other.m_RawPointer)
86 {
87 other.RemoveDeleteEventObserver();
88 other.m_RawPointer = nullptr;
89 this->AddDeleteEventObserver();
90 }
91
92 /** \brief Destructor. Removes the delete-event observer from the observed object. */
93 ~WeakPointer() noexcept
94 {
95 try
96 {
97 this->RemoveDeleteEventObserver();
98 }
99 catch (...)
100 {

Callers

nothing calls this directly

Calls 2

Tested by

no test coverage detected