]> git.saurik.com Git - wxWidgets.git/blob - interface/wx/sharedptr.h
Fix bug with wxStopWatch::Start() not resuming paused stopwatch any more.
[wxWidgets.git] / interface / wx / sharedptr.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: sharedptr.h
3 // Purpose: interface of wxSharedPtr<T>
4 // Author: wxWidgets team
5 // RCS-ID: $Id$
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
8
9 /**
10 A smart pointer with non-intrusive reference counting.
11
12 It is modeled after @c boost::shared_ptr<> and can be used with STL
13 containers and wxVector<T> unlike @c std::auto_ptr<> and wxScopedPtr<T>.
14
15 @library{wxbase}
16 @category{smartpointers}
17
18 @see wxScopedPtr<T>, wxWeakRef<T>, wxObjectDataPtr<T>
19 */
20 template<typename T>
21 class wxSharedPtr<T>
22 {
23 public:
24 /**
25 Constructor.
26
27 Creates shared pointer from the raw pointer @a ptr and takes ownership
28 of it.
29 */
30 wxEXPLICIT wxSharedPtr(T* ptr = NULL);
31
32 /**
33 Copy constructor.
34 */
35 wxSharedPtr(const wxSharedPtr<T>& tocopy);
36
37 /**
38 Destructor.
39 */
40 ~wxSharedPtr();
41
42 /**
43 Returns pointer to its object or @NULL.
44 */
45 T* get() const;
46
47 /**
48 Conversion to a boolean expression (in a variant which is not
49 convertible to anything but a boolean expression).
50
51 If this class contains a valid pointer it will return @true, if it contains
52 a @NULL pointer it will return @false.
53 */
54 operator unspecified_bool_type() const;
55
56 /**
57 Returns a reference to the object.
58
59 If the internal pointer is @NULL this method will cause an assert in debug mode.
60 */
61 T operator*() const;
62
63 /**
64 Smart pointer member access. Returns pointer to its object.
65
66 If the internal pointer is @NULL this method will cause an assert in debug mode.
67 */
68 T* operator->() const;
69
70 /**
71 Assignment operator.
72
73 Releases any previously held pointer and creates a reference to @a ptr.
74 */
75 wxSharedPtr<T>& operator=(T* ptr);
76
77 /**
78 Assignment operator.
79
80 Releases any previously held pointer and creates a reference to the
81 same object as @a topcopy.
82 */
83 wxSharedPtr<T>& operator=(const wxSharedPtr<T>& tocopy);
84
85 /**
86 Reset pointer to @a ptr.
87
88 If the reference count of the previously owned pointer was 1 it will be deleted.
89 */
90 void reset(T* ptr = NULL);
91
92 /**
93 Returns @true if this is the only pointer pointing to its object.
94 */
95 bool unique() const;
96
97 /**
98 Returns the number of pointers pointing to its object.
99 */
100 long use_count() const;
101 };
102