}
int Index(const wxString& str, bool bCase = true, bool bFromEnd = false) const;
+
+private:
+ void Insert()
+ {
+ wxFAIL_MSG( "wxSortedArrayString::Insert() is not to be used" );
+ }
+
+ void Sort()
+ {
+ wxFAIL_MSG( "wxSortedArrayString::Sort() is not to be used" );
+ }
};
#else // if !wxUSE_STL
+// this shouldn't be defined for compilers not supporting template methods or
+// without std::distance()
+//
+// FIXME-VC6: currently it's only not defined for VC6 in DLL build as it
+// doesn't export template methods from DLL correctly so even though
+// it compiles them fine, we get link errors when using wxArrayString
+#if !defined(__VISUALC6__) || !(defined(WXMAKINGDLL) || defined(WXUSINGDLL))
+ #define wxHAS_VECTOR_TEMPLATE_ASSIGN
+#endif
+
+#ifdef wxHAS_VECTOR_TEMPLATE_ASSIGN
+ #include "wx/beforestd.h"
+ #include <iterator>
+ #include "wx/afterstd.h"
+#endif // wxHAS_VECTOR_TEMPLATE_ASSIGN
+
class WXDLLIMPEXP_BASE wxArrayString
{
public:
wxString& Item(size_t nIndex) const
{
wxASSERT_MSG( nIndex < m_nCount,
- _T("wxArrayString: index out of bounds") );
+ wxT("wxArrayString: index out of bounds") );
return m_pItems[nIndex];
}
wxString& Last() const
{
wxASSERT_MSG( !IsEmpty(),
- _T("wxArrayString: index out of bounds") );
+ wxT("wxArrayString: index out of bounds") );
return Item(GetCount() - 1);
}
wxArrayString(const_iterator first, const_iterator last)
{ Init(false); assign(first, last); }
wxArrayString(size_type n, const_reference v) { Init(false); assign(n, v); }
- void assign(const_iterator first, const_iterator last);
+
+#ifdef wxHAS_VECTOR_TEMPLATE_ASSIGN
+ template <class Iterator>
+ void assign(Iterator first, Iterator last)
+ {
+ clear();
+ reserve(std::distance(first, last));
+ for(; first != last; ++first)
+ push_back(*first);
+ }
+#else // !wxHAS_VECTOR_TEMPLATE_ASSIGN
+ void assign(const_iterator first, const_iterator last)
+ {
+ clear();
+ reserve(last - first);
+ for(; first != last; ++first)
+ push_back(*first);
+ }
+#endif // wxHAS_VECTOR_TEMPLATE_ASSIGN/!wxHAS_VECTOR_TEMPLATE_ASSIGN
+
void assign(size_type n, const_reference v)
{ clear(); Add(v, n); }
reference back() { return *(end() - 1); }