64 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // 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;
 | |
| 
 | |
|     explicit 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_
 |