#ifdef HAVE_STRINGS_H
#include <strings.h> // for strcasecmp()
-#endif // AIX
+#endif // HAVE_STRINGS_H
#include "wx/defs.h" // everybody should include this
#include "wx/wxchar.h" // for wxChar
return stricmp(psz1, psz2);
#elif defined(__WATCOMC__)
return stricmp(psz1, psz2);
+#elif defined(__DJGPP__)
+ return stricmp(psz1, psz2);
#elif defined(__EMX__)
return stricmp(psz1, psz2);
#elif defined(__WXPM__)
#if wxUSE_WCHAR_T
// from wide (Unicode) string
- wxString(const wchar_t *pwz, wxMBConv& conv = wxConvLibc);
+ wxString(const wchar_t *pwz, wxMBConv& conv = wxConvLibc, size_t nLength = wxSTRING_MAXLEN);
#endif // !wxUSE_WCHAR_T
// from wxCharBuffer
const wxString& second);
// constructors and destructor
- // default ctor: if autoSort is TRUE, the array is always sorted (in
- // alphabetical order)
- wxArrayString(bool autoSort = FALSE);
+ // default ctor
+ wxArrayString() { Init(FALSE); }
+ // if autoSort is TRUE, the array is always sorted (in alphabetical order)
+ //
+ // 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); }
// copy ctor
wxArrayString(const wxArrayString& array);
// assignment operator
// get last item
wxString& Last() const { wxASSERT( !IsEmpty() ); return Item(Count() - 1); }
+ // 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;
+
// item management
// Search the element in the array, starting from the beginning if
// bFromEnd is FALSE or from end otherwise. If bCase, comparison is case
size_t Add(const wxString& str);
// add new element at given position
void Insert(const wxString& str, size_t uiIndex);
+ // expand the array to have count elements
+ void SetCount(size_t count);
// remove first item matching this value
void Remove(const wxChar *sz);
// remove item by index
bool operator!=(const wxArrayString& a) const { return !(*this == a); }
protected:
+ void Init(bool autoSort); // common part of all ctors
void Copy(const wxArrayString& src); // copies the contents of another array
private:
{ Copy(array); }
};
+// ----------------------------------------------------------------------------
+// wxStringBuffer: a tiny class allowing to get a writable pointer into string
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxStringBuffer
+{
+public:
+ wxStringBuffer(wxString& str, size_t lenWanted = 1024)
+ : m_str(str) { m_buf = m_str.GetWriteBuf(lenWanted); }
+
+ ~wxStringBuffer() { m_str.UngetWriteBuf(); }
+
+ operator wxChar*() const { return m_buf; }
+
+private:
+ wxString& m_str;
+ wxChar *m_buf;
+};
+
// ---------------------------------------------------------------------------
// wxString comparison functions: operator versions are always case sensitive
// ---------------------------------------------------------------------------