]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/scopedptr.h
The object size page now has full position attribute editing.
[wxWidgets.git] / include / wx / scopedptr.h
index a27b8dbd6b703c8093197d4200518ba5ff7a9fc7..f31a4ef036da529fe5399029fae1d0085b5c1e39 100644 (file)
@@ -43,11 +43,17 @@ public:
 
     wxEXPLICIT wxScopedPtr(T * ptr = NULL) : m_ptr(ptr) { }
 
-    ~wxScopedPtr() { delete m_ptr; }
+    ~wxScopedPtr() { wxCHECKED_DELETE(m_ptr); }
 
     // test for pointer validity: defining conversion to unspecified_bool_type
     // and not more obvious bool to avoid implicit conversions to integer types
+#ifdef __BORLANDC__
+    // this compiler is too dumb to use unspecified_bool_type operator in tests
+    // of the form "if ( !ptr )"
+    typedef bool unspecified_bool_type;
+#else
     typedef T *(wxScopedPtr<T>::*unspecified_bool_type)() const;
+#endif // __BORLANDC__
     operator unspecified_bool_type() const
     {
         return m_ptr ? &wxScopedPtr<T>::get : NULL;
@@ -57,7 +63,7 @@ public:
     {
         if ( ptr != m_ptr )
         {
-            delete m_ptr;
+            wxCHECKED_DELETE(m_ptr);
             m_ptr = ptr;
         }
     }
@@ -123,14 +129,7 @@ public:                             \
                                     \
     ~name();                        \
                                     \
-    void reset(T * ptr = NULL)      \
-    {                               \
-        if (m_ptr != ptr)           \
-        {                           \
-            delete m_ptr;           \
-            m_ptr = ptr;            \
-        }                           \
-    }                               \
+    void reset(T * ptr = NULL);     \
                                     \
     T *release()                    \
     {                               \
@@ -165,6 +164,14 @@ public:                             \
 };
 
 #define wxDEFINE_SCOPED_PTR(T, name)\
+void name::reset(T * ptr)           \
+{                                   \
+    if (m_ptr != ptr)               \
+    {                               \
+        wxCHECKED_DELETE(m_ptr);    \
+        m_ptr = ptr;                \
+    }                               \
+}                                   \
 name::~name()                       \
 {                                   \
     wxCHECKED_DELETE(m_ptr);        \