/////////////////////////////////////////////////////////////////////////////// // Name: interface/wx/windowptr.h // Purpose: wxWindowPtr class documentation. // Author: Vaclav Slavik // Created: 2013-09-02 // Copyright: (c) 2013 Vaclav Slavik // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// /** A reference-counted smart pointer for holding wxWindow instances. This specialization of wxSharedPtr is useful for holding wxWindow-derived objects. Unlike wxSharedPtr or @c std::shared_ptr<>, it doesn't use the delete operator to destroy the value when reference count drops to zero, but calls wxWindow::Destroy() to safely destroy the window. The template parameter T must be wxWindow or a class derived from it. @library{wxcore} @category{smartpointers} @since 3.0 @see wxSharedPtr */ template class wxWindowPtr : public wxSharedPtr { public: /// Default constructor. wxWindowPtr(); /** Constructor. Creates shared pointer from the raw pointer @a ptr and takes ownership of it. */ explicit wxWindowPtr(T* ptr); /** 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. */ template explicit wxWindowPtr(T* ptr, Deleter d); /// Copy constructor. wxWindowPtr(const wxWindowPtr& tocopy); /** Assignment operator. Releases any previously held pointer and creates a reference to @a ptr. */ wxWindowPtr& operator=(T* ptr); /** Assignment operator. Releases any previously held pointer and creates a reference to the same object as @a topcopy. */ wxWindowPtr& operator=(const wxWindowPtr& tocopy); /** Reset pointer to @a ptr. If the reference count of the previously owned pointer was 1 it will be deleted. */ void reset(T* ptr = NULL); };