]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/sharedptr.h
Make storing non-trivial data in wxThreadSpecificInfo possible.
[wxWidgets.git] / interface / wx / sharedptr.h
index f3c2131c3504490f1a53b841c54e4228c49b1080..8b7087baed8e85c0245919d63f66642cc05d2127 100644 (file)
@@ -28,6 +28,22 @@ public:
     */
     wxEXPLICIT wxSharedPtr(T* ptr = NULL);
 
     */
     wxEXPLICIT wxSharedPtr(T* ptr = NULL);
 
+    /**
+        Constructor.
+
+        Creates shared pointer from the raw pointer @a ptr and deleter @a d
+        and takes ownership of it.
+
+        @param ptr  The raw pointer.
+        @param d    Deleter - a functor that is called instead of delete to
+                    free the @a ptr raw pointer when its reference count drops to
+                    zero.
+
+        @since 3.0
+    */
+    template<typename Deleter>
+    wxEXPLICIT wxSharedPtr(T* ptr, Deleter d);
+
     /**
         Copy constructor.
     */
     /**
         Copy constructor.
     */
@@ -88,6 +104,21 @@ public:
     */
     void reset(T* ptr = NULL);
 
     */
     void reset(T* ptr = NULL);
 
+    /**
+        Reset pointer to @a ptr.
+
+        If the reference count of the previously owned pointer was 1 it will be deleted.
+
+        @param ptr  The new raw pointer.
+        @param d    Deleter - a functor that is called instead of delete to
+                    free the @a ptr raw pointer when its reference count drops to
+                    zero.
+
+        @since 3.0
+    */
+    template<typename Deleter>
+    void reset(T* ptr, Deleter d);
+
     /**
         Returns @true if this is the only pointer pointing to its object.
     */
     /**
         Returns @true if this is the only pointer pointing to its object.
     */