]>
git.saurik.com Git - wxWidgets.git/blob - interface/weakref.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxWeakRefDynamic<T>
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
10 @class wxWeakRefDynamicT
13 wxWeakRefDynamicT is a template class for weak references that is used in
14 the same way as wxWeakRefT. The only difference is that wxWeakRefDynamic
15 defaults to using @c dynamic_cast for establishing the object
16 reference (while wxWeakRef defaults to @c static_cast).
18 So, wxWeakRef will detect a type mismatch during compile time and will
19 have a little better run-time performance. The role of wxWeakRefDynamic
20 is to handle objects which derived type one does not know.
22 @b Note: wxWeakRefT selects an implementation based on the static type
23 of T. If T does not have wxTrackable statically, it defaults to to a mixed-
24 mode operation, where it uses @c dynamic_cast as the last measure (if
25 available from the compiler and enabled when building wxWidgets).
27 For general cases, wxWeakRefT is the better choice.
29 For API documentation, see: wxWeakRef
34 class wxWeakRefDynamic
<T
>
46 wxWeakRef is a template class for weak references to wxWidgets objects,
47 such as wxEvtHandler, wxWindow and
48 wxObject. A weak reference behaves much like an ordinary
49 pointer, but when the object pointed is destroyed, the weak reference is
50 automatically reset to a @NULL pointer.
52 wxWeakRefT can be used whenever one must keep a pointer to an object
53 that one does not directly own, and that may be destroyed before the object
54 holding the reference.
56 wxWeakRefT is a small object and the mechanism behind it is fast
57 (@b O(1)). So the overall cost of using it is small.
62 @see wxSharedPtr, wxScopedPtr
68 Constructor. The weak reference is initialized to @e pobj.
70 wxWeakRefT(T
* pobj
= NULL
);
78 Called when the tracked object is destroyed. Be default sets
79 internal pointer to @NULL.
81 virtual void OnObjectDestroy();
84 Release currently tracked object and rests object reference.
89 Returns pointer to the tracked object or @NULL.
94 Release currently tracked object and start tracking the same object as
97 T
* operator =(wxWeakRef
<T
>& wr
);
100 Implicit conversion to T*. Returns pointer to the tracked
103 T
* operator*() const;
106 Returns a reference to the tracked object. If the internal pointer is @NULL
107 this method will cause an assert in debug mode.
112 Smart pointer member access. Returns a pointer to the
113 tracked object. If the internal pointer is @NULL this
114 method will cause an assert in debug mode.
119 Releases the currently tracked object and starts tracking @e pobj.
120 A weak reference may be reset by passing @e @NULL as @e pobj.
122 T
* operator=(T
* pobj
);