X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5c6eb3a84be918dcfed2496d014549e13af0f0e9..d3ad22bdb33cdba830923932e208f030f61669b4:/include/wx/osx/core/cfref.h?ds=sidebyside diff --git a/include/wx/osx/core/cfref.h b/include/wx/osx/core/cfref.h index f5251ab1c0..404c099fa5 100644 --- a/include/wx/osx/core/cfref.h +++ b/include/wx/osx/core/cfref.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/mac/corefoundation/cfref.h +// Name: wx/osx/core/cfref.h // Purpose: wxCFRef template class // Author: David Elliott // Modified by: Stefan Csomor @@ -9,7 +9,7 @@ // Licence: wxWindows licence // Notes: See http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/index.html ///////////////////////////////////////////////////////////////////////////// -/*! @header wx/mac/corefoundation/cfref.h +/*! @header wx/osx/core/cfref.h @abstract wxCFRef template class @discussion FIXME: Convert doc tags to something less buggy with C++ */ @@ -172,7 +172,7 @@ public: @param p The raw pointer to assume ownership of. May be NULL. @discussion Like shared_ptr, it is assumed that the caller has a strong reference to p and intends to transfer ownership of that reference to this ref holder. If the object comes from - a Create or Copy method then this is the correct behavior. If the object comes from + a Create or Copy method then this is the correct behaviour. If the object comes from a Get method then you must CFRetain it yourself before passing it to this constructor. A handy way to do this is to use the non-member wxCFRefFromGet factory funcion. This method is templated and takes an otherType *p. This prevents implicit conversion @@ -234,9 +234,12 @@ public: */ wxCFRef& operator=(const wxCFRef& otherRef) { - wxCFRetain(otherRef.m_ptr); - wxCFRelease(m_ptr); - m_ptr = otherRef.m_ptr; + if (this != &otherRef) + { + wxCFRetain(otherRef.m_ptr); + wxCFRelease(m_ptr); + m_ptr = otherRef.m_ptr; + } return *this; } @@ -308,6 +311,15 @@ public: wxCFRelease(m_ptr); m_ptr = p; // Automatic conversion should occur } + + // Release the pointer, i.e. give up its ownership. + refType release() + { + refType p = m_ptr; + m_ptr = NULL; + return p; + } + protected: /*! @var m_ptr The raw pointer. */ @@ -352,7 +364,7 @@ inline wxCFWeakRef static_cfref_cast(const wxCFRef &other } /*! @function CFRelease - @abstract Overloads CFRelease so that the user is warned of bad behavior. + @abstract Overloads CFRelease so that the user is warned of bad behaviour. @discussion It is rarely appropriate to retain or release a wxCFRef. If one absolutely must do it he can explicitly get() the raw pointer Normally, this function is unimplemented resulting in a linker error if used. @@ -361,7 +373,7 @@ template inline void CFRelease(const wxCFRef & cfref) DEPRECATED_ATTRIBUTE; /*! @function CFRetain - @abstract Overloads CFRetain so that the user is warned of bad behavior. + @abstract Overloads CFRetain so that the user is warned of bad behaviour. @discussion It is rarely appropriate to retain or release a wxCFRef. If one absolutely must do it he can explicitly get() the raw pointer Normally, this function is unimplemented resulting in a linker error if used.