* stdarg.h
* limits.h
*/
+#ifdef __WXMAC__
+#include <ctype.h>
+#endif
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
*/
// ---------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
+
/// checks whether the passed in pointer is NULL and if the string is empty
inline bool WXDLLEXPORT IsEmpty(const char *p) { return !p || !*p; }
{
#if defined(_MSC_VER)
return _stricmp(psz1, psz2);
+#elif defined(__SC__)
+ return _stricmp(psz1, psz2);
#elif defined(__BORLANDC__)
return stricmp(psz1, psz2);
+#elif defined(__WATCOMC__)
+ return stricmp(psz1, psz2);
#elif defined(__UNIX__) || defined(__GNUWIN32__)
return strcasecmp(psz1, psz2);
+#elif defined(__MWERKS__) && !defined(_MSC_VER)
+ register char c1, c2;
+ do {
+ c1 = tolower(*psz1++);
+ c2 = tolower(*psz2++);
+ } while ( c1 && (c1 == c2) );
+
+ return c1 - c2;
#else
// almost all compilers/libraries provide this function (unfortunately under
// different names), that's why we don't implement our own which will surely
char& Last()
{ wxASSERT( !IsEmpty() ); CopyBeforeWrite(); return m_pchData[Len()-1]; }
+ // on alpha-linux this gives overload problems:
+ // Also on Solaris, so removing for now (JACS)
+#if ! defined(__ALPHA__)
/// operator version of GetChar
-#if 0
char operator[](size_t n) const
{ ASSERT_VALID_INDEX( n ); return m_pchData[n]; }
#endif
+
/// operator version of GetChar
char operator[](int n) const
{ ASSERT_VALID_INDEX( n ); return m_pchData[n]; }
nCount (or till the end if nCount = default value)
*/
wxString Mid(size_t nFirst, size_t nCount = STRING_MAXLEN) const;
+ /// Compatibility with wxWindows 1.xx
+ wxString SubString(size_t from, size_t to) const
+ {
+ return Mid(from, (to - from + 1));
+ }
/// get first nCount characters
wxString Left(size_t nCount) const;
/// get all characters before the first occurence of ch
{ *this = str + *this; return *this; }
/// same as Len
size_t Length() const { return Len(); }
+ /// Count the number of characters
+ int Freq(char ch) const;
/// same as MakeLower
void LowerCase() { MakeLower(); }
/// same as MakeUpper
/** @name constructors */
//@{
/// take nLen chars starting at nPos
- wxString(const wxString& str, size_t nPos, size_t nLen = npos)
+ wxString(const wxString& str, size_t nPos, size_t nLen)
{
wxASSERT( str.GetStringData()->IsValid() );
InitWith(str.c_str(), nPos, nLen == npos ? 0 : nLen);
/// find first n characters of sz
size_t find(const char* sz, size_t nStart = 0, size_t n = npos) const;
#endif
+ // Gives a duplicate symbol (presumably a case-insensitivity problem)
+#if !defined(__BORLANDC__)
/// find the first occurence of character ch after nStart
size_t find(char ch, size_t nStart = 0) const;
-
+#endif
// wxWin compatibility
inline bool Contains(const wxString& str) const { return Find(str) != -1; }