// ----------------------------------------------------------------------------
// global pointer to empty string
-WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
+extern WXDLLIMPEXP_DATA_BASE(const wxChar*) wxEmptyString;
// ---------------------------------------------------------------------------
// global functions complementing standard C string library replacements for
}
// return an empty wxString
-class WXDLLEXPORT wxString; // not yet defined
+class WXDLLIMPEXP_BASE wxString; // not yet defined
inline const wxString& wxGetEmptyString() { return *(wxString *)&wxEmptyString; }
// ---------------------------------------------------------------------------
// is never used directly (but had to be put here to allow inlining)
// ---------------------------------------------------------------------------
-struct WXDLLEXPORT wxStringData
+struct WXDLLIMPEXP_BASE wxStringData
{
int nRefs; // reference count
size_t nDataLength, // actual string length
// we must not inline deallocation since allocation is not inlined
void Free();
#else
- void Unlock() { if ( !IsEmpty() && --nRefs == 0) free(); }
+ void Unlock() { if ( !IsEmpty() && --nRefs == 0) free(this); }
#endif
// if we had taken control over string memory (GetWriteBuf), it's
// - regular expressions support
// ---------------------------------------------------------------------------
-class WXDLLEXPORT wxString
+class WXDLLIMPEXP_BASE wxString
{
-friend class WXDLLEXPORT wxArrayString;
+friend class WXDLLIMPEXP_BASE wxArrayString;
// NB: special care was taken in arranging the member functions in such order
// that all inline functions can be effectively inlined, verify that all
// non-destructive concatenation
//
- friend wxString WXDLLEXPORT operator+(const wxString& string1, const wxString& string2);
+ friend wxString WXDLLIMPEXP_BASE operator+(const wxString& string1, const wxString& string2);
//
- friend wxString WXDLLEXPORT operator+(const wxString& string, wxChar ch);
+ friend wxString WXDLLIMPEXP_BASE operator+(const wxString& string, wxChar ch);
//
- friend wxString WXDLLEXPORT operator+(wxChar ch, const wxString& string);
+ friend wxString WXDLLIMPEXP_BASE operator+(wxChar ch, const wxString& string);
//
- friend wxString WXDLLEXPORT operator+(const wxString& string, const wxChar *psz);
+ friend wxString WXDLLIMPEXP_BASE operator+(const wxString& string, const wxChar *psz);
//
- friend wxString WXDLLEXPORT operator+(const wxChar *psz, const wxString& string);
+ friend wxString WXDLLIMPEXP_BASE operator+(const wxChar *psz, const wxString& string);
// stream-like functions
// insert an int into string
// from the array (operator[] or Item() method), a reference is returned.
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxArrayString
+int WXDLLIMPEXP_BASE wxStringSortAscending(wxString*, wxString*);
+int WXDLLIMPEXP_BASE wxStringSortDescending(wxString*, wxString*);
+
+class WXDLLIMPEXP_BASE wxArrayString
{
public:
// type of function used by wxArrayString::Sort()
typedef int (*CompareFunction)(const wxString& first,
const wxString& second);
+ // type of function used by wxArrayString::Sort(), for compatibility with
+ // wxArray
+ typedef int (*CompareFunction2)(wxString* first,
+ wxString* second);
// constructors and destructor
// default ctor
return Item(Count() - 1);
}
+#if WXWIN_COMPATIBILITY_2_4
// return a wxString[], useful for the controls which
// take one in their ctor. You must delete[] it yourself
// once you are done with it. Will return NULL if the
// ArrayString was empty.
wxString* GetStringArray() const;
+#endif
// item management
// Search the element in the array, starting from the beginning if
// remove first item matching this value
void Remove(const wxChar *sz);
// remove item by index
- void Remove(size_t nIndex, size_t nRemove = 1);
- void RemoveAt(size_t nIndex, size_t nRemove = 1) { Remove(nIndex, nRemove); }
+#if WXWIN_COMPATIBILITY_2_4
+ void Remove(size_t nIndex, size_t nRemove = 1) { RemoveAt(nIndex, nRemove); }
+#endif
+ void RemoveAt(size_t nIndex, size_t nRemove = 1);
// sorting
// sort array elements in alphabetical order (or reversed alphabetical
void Sort(bool reverseOrder = FALSE);
// sort array elements using specified comparaison function
void Sort(CompareFunction compareFunction);
+ void Sort(CompareFunction2 compareFunction);
// comparison
// compare two arrays case sensitively
bool m_autoSort; // if TRUE, keep the array always sorted
};
-class WXDLLEXPORT wxSortedArrayString : public wxArrayString
+class WXDLLIMPEXP_BASE wxSortedArrayString : public wxArrayString
{
public:
wxSortedArrayString() : wxArrayString(TRUE)
// wxStringBuffer: a tiny class allowing to get a writable pointer into string
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxStringBuffer
+class WXDLLIMPEXP_BASE wxStringBuffer
{
public:
wxStringBuffer(wxString& str, size_t lenWanted = 1024)
{ return (s2.Cmp((const char *)s1) != 0); }
#endif // wxUSE_UNICODE/!wxUSE_UNICODE
-wxString WXDLLEXPORT operator+(const wxString& string1, const wxString& string2);
-wxString WXDLLEXPORT operator+(const wxString& string, wxChar ch);
-wxString WXDLLEXPORT operator+(wxChar ch, const wxString& string);
-wxString WXDLLEXPORT operator+(const wxString& string, const wxChar *psz);
-wxString WXDLLEXPORT operator+(const wxChar *psz, const wxString& string);
+wxString WXDLLIMPEXP_BASE operator+(const wxString& string1, const wxString& string2);
+wxString WXDLLIMPEXP_BASE operator+(const wxString& string, wxChar ch);
+wxString WXDLLIMPEXP_BASE operator+(wxChar ch, const wxString& string);
+wxString WXDLLIMPEXP_BASE operator+(const wxString& string, const wxChar *psz);
+wxString WXDLLIMPEXP_BASE operator+(const wxChar *psz, const wxString& string);
#if wxUSE_UNICODE
inline wxString operator+(const wxString& string, const wxWCharBuffer& buf)
{ return string + (const wchar_t *)buf; }
#include "wx/iosfwrap.h"
-WXDLLEXPORT wxSTD istream& operator>>(wxSTD istream&, wxString&);
-WXDLLEXPORT wxSTD ostream& operator<<(wxSTD ostream&, const wxString&);
+WXDLLIMPEXP_BASE wxSTD istream& operator>>(wxSTD istream&, wxString&);
+WXDLLIMPEXP_BASE wxSTD ostream& operator<<(wxSTD ostream&, const wxString&);
#endif // wxSTD_STRING_COMPATIBILITY