///////////////////////////////////////////////////////////////////////////////
-// Name: include/wx/arrstr.h
+// Name: wx/arrstr.h
// Purpose: wxArrayString class
// Author: Mattia Barbon and Vadim Zeitlin
// Modified by:
return wxStringSortAscending(s2, s1);
}
-#if wxUSE_STL
+#if wxUSE_STD_CONTAINERS
#include "wx/dynarray.h"
}
};
-#else // if !wxUSE_STL
+#else // if !wxUSE_STD_CONTAINERS
// this shouldn't be defined for compilers not supporting template methods or
// without std::distance()
//
// NB: the reason for using int and not bool is that like this we can avoid
// using this ctor for implicit conversions from "const char *" (which
- // we'd like to be implicitly converted to wxString instead!)
- //
- // of course, using explicit would be even better - if all compilers
- // supported it...
- wxArrayString(int autoSort) { Init(autoSort != 0); }
+ // we'd like to be implicitly converted to wxString instead!). This
+ // wouldn't be needed if the 'explicit' keyword was supported by all
+ // compilers, or if this was protected ctor for wxSortedArrayString,
+ // but we're stuck with it now.
+ wxEXPLICIT wxArrayString(int autoSort) { Init(autoSort != 0); }
// C string array ctor
wxArrayString(size_t sz, const char** a);
wxArrayString(size_t sz, const wchar_t** a);
// items access (range checking is done in debug version)
// get item at position uiIndex
- wxString& Item(size_t nIndex) const
+ wxString& Item(size_t nIndex)
{
wxASSERT_MSG( nIndex < m_nCount,
- _T("wxArrayString: index out of bounds") );
+ wxT("wxArrayString: index out of bounds") );
return m_pItems[nIndex];
}
+ const wxString& Item(size_t nIndex) const { return const_cast<wxArrayString*>(this)->Item(nIndex); }
// same as Item()
- wxString& operator[](size_t nIndex) const { return Item(nIndex); }
+ wxString& operator[](size_t nIndex) { return Item(nIndex); }
+ const wxString& operator[](size_t nIndex) const { return Item(nIndex); }
// get last item
- wxString& Last() const
+ wxString& Last()
{
wxASSERT_MSG( !IsEmpty(),
- _T("wxArrayString: index out of bounds") );
+ wxT("wxArrayString: index out of bounds") );
return Item(GetCount() - 1);
}
+ const wxString& Last() const { return const_cast<wxArrayString*>(this)->Last(); }
// item management
public:
pointer m_ptr;
reverse_iterator() : m_ptr(NULL) { }
- reverse_iterator(pointer ptr) : m_ptr(ptr) { }
+ wxEXPLICIT reverse_iterator(pointer ptr) : m_ptr(ptr) { }
reverse_iterator(const itor& it) : m_ptr(it.m_ptr) { }
reference operator*() const { return *m_ptr; }
pointer operator->() const { return m_ptr; }
public:
pointer m_ptr;
const_reverse_iterator() : m_ptr(NULL) { }
- const_reverse_iterator(pointer ptr) : m_ptr(ptr) { }
+ wxEXPLICIT const_reverse_iterator(pointer ptr) : m_ptr(ptr) { }
const_reverse_iterator(const itor& it) : m_ptr(it.m_ptr) { }
const_reverse_iterator(const reverse_iterator& it) : m_ptr(it.m_ptr) { }
reference operator*() const { return *m_ptr; }
{ Copy(array); }
};
-#endif // !wxUSE_STL
+#endif // !wxUSE_STD_CONTAINERS
// this class provides a temporary wxString* from a
// wxArrayString