]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/string.h
attempt to fix a report about compile problems in generic treectrl
[wxWidgets.git] / include / wx / string.h
index 9afef648588648b0a926d5de11ce9f34c9c232d5..94964e5a6a4154cb3170b06e0cae31bae1622964 100644 (file)
@@ -87,6 +87,8 @@ inline int WXDLLEXPORT Stricmp(const char *psz1, const char *psz2)
   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);
 #else
@@ -106,11 +108,6 @@ inline int WXDLLEXPORT Stricmp(const char *psz1, const char *psz2)
   #error  "Please define string case-insensitive compare for your OS/compiler"
 #endif  // OS/compiler
 }
-wxString WXDLLEXPORT operator+(const wxString& string1,  const wxString& string2);
-wxString WXDLLEXPORT operator+(const wxString& string, char ch);
-wxString WXDLLEXPORT operator+(char ch, const wxString& string);
-wxString WXDLLEXPORT operator+(const wxString& string, const char *psz);
-wxString WXDLLEXPORT operator+(const char *psz, const wxString& string);
 
 // ----------------------------------------------------------------------------
 // global data
@@ -262,14 +259,23 @@ public:
   size_t Len() const { return GetStringData()->nDataLength; }
     /// string contains any characters?
   bool IsEmpty() const { return Len() == 0; }
-    /// reinitialize string (and free memory)
+    /// empty string contents
   void Empty()
   {
     if ( !IsEmpty() )
       Reinit();
 
+    // should be empty
     wxASSERT( GetStringData()->nDataLength == 0 );
-    wxASSERT( GetStringData()->nAllocLength == 0 );
+  }
+    /// empty the string and free memory
+  void Clear()
+  {
+    if ( !GetStringData()->IsEmpty() )
+      Reinit();
+
+    wxASSERT( GetStringData()->nDataLength == 0 );  // should be empty
+    wxASSERT( GetStringData()->nAllocLength == 0 ); // and not own any memory
   }
 
     /// Is an ascii value
@@ -299,9 +305,14 @@ public:
     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
     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]; }
@@ -377,6 +388,16 @@ public:
     //@}
   //@}
 
+  /** @name stream-like functions */
+  //@{
+        /// insert an int into string
+    wxString& operator<<(int i);
+        /// insert a float into string
+    wxString& operator<<(float f);
+        /// insert a double into string
+    wxString& operator<<(double d);
+  //@}
+  
   /** @name string comparison */
   //@{
     /**
@@ -691,7 +712,7 @@ public:
           size_t find(char ch, size_t nStart = 0) const;
 
           // wxWin compatibility
-          inline bool Contains(const wxString& str) { return Find(str) != -1; }
+          inline bool Contains(const wxString& str) const { return Find(str) != -1; }
 
         //@}
 
@@ -914,6 +935,11 @@ inline bool operator>=(const wxString& s1, const char  * s2) { return s1.Cmp(s2)
 ///
 inline bool operator>=(const char  * s1, const wxString& s2) { return s2.Cmp(s1) <= 0; }
 //@}
+wxString WXDLLEXPORT operator+(const wxString& string1,  const wxString& string2);
+wxString WXDLLEXPORT operator+(const wxString& string, char ch);
+wxString WXDLLEXPORT operator+(char ch, const wxString& string);
+wxString WXDLLEXPORT operator+(const wxString& string, const char *psz);
+wxString WXDLLEXPORT operator+(const char *psz, const wxString& string);
 
 // ---------------------------------------------------------------------------
 /** @name Global functions complementing standard C string library
@@ -937,7 +963,7 @@ inline bool operator>=(const char  * s1, const wxString& s2) { return s2.Cmp(s1)
 #  endif
 #endif
 
-istream& WXDLLEXPORT operator>>(istream& is, wxString& str);
+WXDLLEXPORT istream& operator>>(istream& is, wxString& str);
 
 #endif  //std::string compatibility