]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/osx/core/cfref.h
Fix warnings in the MSW IE backend.
[wxWidgets.git] / include / wx / osx / core / cfref.h
index f5251ab1c07ef335b0b7244e6ffcc0b14a503dd6..404c099fa5b1bf2c035bdd867eef022f3e4c545a 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        wx/mac/corefoundation/cfref.h
+// Name:        wx/osx/core/cfref.h
 // Purpose:     wxCFRef template class
 // Author:      David Elliott <dfe@cox.net>
 // 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<refType> static_cfref_cast(const wxCFRef<otherRefType> &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 <class T>
 inline void CFRelease(const wxCFRef<T*> & 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.