]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/string.h
no message
[wxWidgets.git] / include / wx / string.h
index 58b708df2e027f6fe5a1bcb4a9814d0fec2638d3..81c856c9e3ed252dea12945e5afa012512330a23 100644 (file)
@@ -22,6 +22,9 @@
  *         stdarg.h
  *         limits.h
  */
  *         stdarg.h
  *         limits.h
  */
+#ifdef __WXMAC__
+#include <ctype.h>
+#endif
 #include <string.h>
 #include <stdio.h>
 #include <stdarg.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdarg.h>
@@ -73,6 +76,8 @@
  */
 // ---------------------------------------------------------------------------
 
  */
 // ---------------------------------------------------------------------------
 
+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; }
 
 /// checks whether the passed in pointer is NULL and if the string is empty
 inline bool WXDLLEXPORT IsEmpty(const char *p) { return !p || !*p; }
 
@@ -85,10 +90,22 @@ inline int WXDLLEXPORT Stricmp(const char *psz1, const char *psz2)
 {
 #if     defined(_MSC_VER)
   return _stricmp(psz1, psz2);
 {
 #if     defined(_MSC_VER)
   return _stricmp(psz1, psz2);
+#elif     defined(__SC__)
+  return _stricmp(psz1, psz2);
 #elif defined(__BORLANDC__)
   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(__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
 #else
   // almost all compilers/libraries provide this function (unfortunately under
   // different names), that's why we don't implement our own which will surely
@@ -303,11 +320,14 @@ public:
     char& Last()
       { wxASSERT( !IsEmpty() ); CopyBeforeWrite(); return m_pchData[Len()-1]; }
 
     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
     /// operator version of GetChar
-#if 0
     char  operator[](size_t n) const
       { ASSERT_VALID_INDEX( n ); return m_pchData[n]; }
 #endif
     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]; }
     /// operator version of GetChar
     char  operator[](int n) const
       { ASSERT_VALID_INDEX( n ); return m_pchData[n]; }
@@ -426,6 +446,11 @@ public:
       nCount (or till the end if nCount = default value)
       */
   wxString Mid(size_t nFirst, size_t nCount = STRING_MAXLEN) const;
       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
       /// get first nCount characters
   wxString Left(size_t nCount) const;
       /// get all characters before the first occurence of ch
@@ -540,6 +565,8 @@ public:
     { *this = str + *this; return *this; }
     /// same as Len
   size_t Length() const { return Len(); }
     { *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
     /// same as MakeLower
   void LowerCase() { MakeLower(); }
     /// same as MakeUpper
@@ -576,7 +603,7 @@ public:
     /** @name constructors */
     //@{
       /// take nLen chars starting at nPos
     /** @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);
       {
         wxASSERT( str.GetStringData()->IsValid() );
         InitWith(str.c_str(), nPos, nLen == npos ? 0 : nLen);
@@ -703,9 +730,11 @@ public:
           /// find first n characters of sz
           size_t find(const char* sz, size_t nStart = 0, size_t n = npos) const;
 #endif
           /// 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;
           /// 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; }
 
           // wxWin compatibility
           inline bool Contains(const wxString& str) const { return Find(str) != -1; }