| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/windowptr.h
- // Purpose: smart pointer for holding wxWindow instances
- // Author: Vaclav Slavik
- // Created: 2013-09-01
- // Copyright: (c) 2013 Vaclav Slavik
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_WINDOWPTR_H_
- #define _WX_WINDOWPTR_H_
- #include "wx/sharedptr.h"
- // ----------------------------------------------------------------------------
- // wxWindowPtr: A smart pointer with correct wxWindow destruction.
- // ----------------------------------------------------------------------------
- namespace wxPrivate
- {
- struct wxWindowDeleter
- {
- void operator()(wxWindow *win)
- {
- win->Destroy();
- }
- };
- } // namespace wxPrivate
- template<typename T>
- class wxWindowPtr : public wxSharedPtr<T>
- {
- public:
- typedef T element_type;
- wxEXPLICIT wxWindowPtr(element_type* win)
- : wxSharedPtr<T>(win, wxPrivate::wxWindowDeleter())
- {
- }
- wxWindowPtr() {}
- wxWindowPtr(const wxWindowPtr& tocopy) : wxSharedPtr<T>(tocopy) {}
- wxWindowPtr& operator=(const wxWindowPtr& tocopy)
- {
- wxSharedPtr<T>::operator=(tocopy);
- return *this;
- }
- wxWindowPtr& operator=(element_type* win)
- {
- return operator=(wxWindowPtr(win));
- }
- void reset(T* ptr = NULL)
- {
- wxSharedPtr<T>::reset(ptr, wxPrivate::wxWindowDeleter());
- }
- };
- #endif // _WX_WINDOWPTR_H_
|