]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/arrstr.h
define HDS_FLAT not defined in VC6 headers
[wxWidgets.git] / include / wx / arrstr.h
index 306af0c54cf1669c39a3fa3a01e78193f5c4f671..f54844459b8934d8c49c9ea2aef3a1c7350753be 100644 (file)
 #include "wx/defs.h"
 #include "wx/string.h"
 
-#if wxUSE_STL
-
-#include "wx/dynarray.h"
-
+// these functions are only used in STL build now but we define them in any
+// case for compatibility with the existing code outside of the library which
+// could be using them
 inline int wxCMPFUNC_CONV wxStringSortAscending(wxString* s1, wxString* s2)
 {
     return s1->Cmp(*s2);
@@ -29,6 +28,10 @@ inline int wxCMPFUNC_CONV wxStringSortDescending(wxString* s1, wxString* s2)
     return wxStringSortAscending(s2, s1);
 }
 
+#if wxUSE_STL
+
+#include "wx/dynarray.h"
+
 typedef int (wxCMPFUNC_CONV *CMPFUNCwxString)(wxString*, wxString*);
 typedef wxString _wxArraywxBaseArrayStringBase;
 _WX_DECLARE_BASEARRAY_2(_wxArraywxBaseArrayStringBase, wxBaseArrayStringBase,
@@ -292,12 +295,21 @@ public:
   void pop_back() { RemoveAt(GetCount() - 1); }
   void push_back(const_reference v) { Add(v); }
   reverse_iterator rbegin() { return reverse_iterator(end() - 1); }
-  const_reverse_iterator rbegin() const;
+  const_reverse_iterator rbegin() const
+    { return const_reverse_iterator(end() - 1); }
   reverse_iterator rend() { return reverse_iterator(begin() - 1); }
-  const_reverse_iterator rend() const;
+  const_reverse_iterator rend() const
+    { return const_reverse_iterator(begin() - 1); }
   void reserve(size_type n) /* base::reserve*/;
   void resize(size_type n, value_type v = value_type());
   size_type size() const { return GetCount(); }
+  void swap(wxArrayString& other)
+  {
+      wxSwap(m_nSize, other.m_nSize);
+      wxSwap(m_nCount, other.m_nCount);
+      wxSwap(m_pItems, other.m_pItems);
+      wxSwap(m_autoSort, other.m_autoSort);
+  }
 
 protected:
   void Init(bool autoSort);             // common part of all ctors
@@ -345,6 +357,14 @@ public:
             m_strings[i] = m_array[i];
         return m_strings;
     }
+
+    wxString* Release()
+    {
+        wxString *r = GetStrings();
+        m_strings = NULL;
+        return r;
+    }
+
 private:
     const wxArrayString& m_array;
     wxString* m_strings;