From: Stefan Csomor Date: Sun, 6 Nov 2005 07:19:18 +0000 (+0000) Subject: added CFRef holder templated class X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/18b94824f5b3a4971bd94386fffde6005f00fe46?ds=inline added CFRef holder templated class git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36094 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index a78ba80150..60872bdf36 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -375,6 +375,55 @@ private : typedef wxMacUPP wxMacNMUPP ; +template class wxMacCFRefHolder +{ +public : + wxMacCFRefHolder() + : m_ref(NULL) , m_release(false) + { + } + + wxMacCFRefHolder( refType ref , bool release = true ) + : m_ref(ref) , m_release(release) + { + } + + ~wxMacCFRefHolder() + { + CFRelease( m_ref ) ; + } + + void Release() + { + if ( m_release && m_ref != NULL ) + CFRelease( m_ref ) ; + m_ref = NULL ; + } + + refType Detach() + { + refType val = m_ref ; + m_release = false ; + m_ref = NULL ; + return val ; + } + + void Set( refType ref , bool release = true ) + { + Release() ; + m_release = release ; + m_ref = ref ; + } + + operator refType () const { return m_ref; } + +private : + refType m_ref ; + bool m_release ; + + DECLARE_NO_COPY_CLASS( wxMacCFRefHolder ) +} ; + #if wxUSE_GUI /* GWorldPtr wxMacCreateGWorld( int width , int height , int depth ) ;