| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: interface/wx/windowptr.h
- // Purpose: wxWindowPtr<T> class documentation.
- // Author: Vaclav Slavik
- // Created: 2013-09-02
- // Copyright: (c) 2013 Vaclav Slavik <vslavik@fastmail.fm>
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- /**
- A reference-counted smart pointer for holding wxWindow instances.
- This specialization of wxSharedPtr<T> is useful for holding
- wxWindow-derived objects. Unlike wxSharedPtr<T> 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<T>
- */
- template<typename T>
- class wxWindowPtr<T> : public wxSharedPtr<T>
- {
- 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<typename Deleter>
- explicit wxWindowPtr(T* ptr, Deleter d);
- /// Copy constructor.
- wxWindowPtr(const wxWindowPtr<T>& tocopy);
- /**
- Assignment operator.
- Releases any previously held pointer and creates a reference to @a ptr.
- */
- wxWindowPtr<T>& operator=(T* ptr);
- /**
- Assignment operator.
- Releases any previously held pointer and creates a reference to the
- same object as @a topcopy.
- */
- wxWindowPtr<T>& operator=(const wxWindowPtr<T>& 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);
- };
|