]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/string.h
Replaced image
[wxWidgets.git] / include / wx / string.h
index fef44a0ca8bf9dbe3c134ca5564abe78bcda2d8f..f55ac3032bd3e5428c0793050fe81e6642e57a09 100644 (file)
@@ -164,7 +164,7 @@ inline int Stricmp(const char *psz1, const char *psz2)
 // ----------------------------------------------------------------------------
 
 // in both cases we need to define wxStdString
-#if wxUSE_STL || defined(wxUSE_STD_STRING)
+#if wxUSE_STL || wxUSE_STD_STRING
 
 #include "wx/beforestd.h"
 #include <string>
@@ -196,7 +196,8 @@ inline int Stricmp(const char *psz1, const char *psz2)
     typedef wxStdString wxStringBase;
 #else // if !wxUSE_STL
 
-#ifndef HAVE_STD_STRING_COMPARE
+#if !defined(HAVE_STD_STRING_COMPARE) && \
+    (!defined(__WX_SETUP_H__) || wxUSE_STL == 0)
     #define HAVE_STD_STRING_COMPARE
 #endif
 
@@ -512,11 +513,8 @@ public:
     // find a substring
   size_t find(const wxStringBase& str, size_t nStart = 0) const;
 
-  // VC++ 1.5 can't cope with this syntax.
-#if !defined(__VISUALC__) || defined(__WIN32__)
     // find first n characters of sz
   size_t find(const wxChar* sz, size_t nStart = 0, size_t n = npos) const;
-#endif // VC++ 1.5
 
     // find the first occurence of character ch after nStart
   size_t find(wxChar ch, size_t nStart = 0) const;
@@ -526,7 +524,6 @@ public:
     // as find, but from the end
   size_t rfind(const wxStringBase& str, size_t nStart = npos) const;
 
-  // VC++ 1.5 can't cope with this syntax.
     // as find, but from the end
   size_t rfind(const wxChar* sz, size_t nStart = npos,
                size_t n = npos) const;
@@ -661,7 +658,7 @@ public:
   // unconditionally add this ctor as it would make wx lib dependent on
   // libstdc++ on some Linux versions which is bad, so instead we ask the
   // client code to define this wxUSE_STD_STRING symbol if they need it
-#ifdef wxUSE_STD_STRING
+#if wxUSE_STD_STRING
   wxString(const wxStdString& s)
       : wxStringBase(s.c_str()) { }
 #endif // wxUSE_STD_STRING
@@ -700,7 +697,7 @@ public:
   {
     Truncate(0);
 
-    wxASSERT_MSG( IsEmpty(), _T("string not empty after call to Empty()?") );
+    wxASSERT_MSG( empty(), _T("string not empty after call to Empty()?") );
   }
     // empty the string and free memory
   void Clear()
@@ -731,7 +728,7 @@ public:
     // get last character
     wxChar  Last() const
       {
-          wxASSERT_MSG( !IsEmpty(), _T("wxString: index out of bounds") );
+          wxASSERT_MSG( !empty(), _T("wxString: index out of bounds") );
 
           return at(length() - 1);
       }
@@ -739,7 +736,7 @@ public:
     // get writable last character
     wxChar& Last()
       {
-          wxASSERT_MSG( !IsEmpty(), _T("wxString: index out of bounds") );
+          wxASSERT_MSG( !empty(), _T("wxString: index out of bounds") );
           return at(length() - 1);
       }
 
@@ -847,9 +844,16 @@ public:
     // from a character
   wxString& operator=(wxChar ch)
     { return (wxString&)wxStringBase::operator=(ch); }
-    // from a C string
+    // from a C string - STL probably will crash on NULL,
+    // so we need to compensate in that case
+#if wxUSE_STL
+  wxString& operator=(const wxChar *psz)
+    { if(psz) wxStringBase::operator=(psz); else Clear(); return *this; }
+#else
   wxString& operator=(const wxChar *psz)
     { return (wxString&)wxStringBase::operator=(psz); }
+#endif
+
 #if wxUSE_UNICODE
     // from wxWCharBuffer
   wxString& operator=(const wxWCharBuffer& psz)
@@ -906,8 +910,8 @@ public:
     // string += C string
   wxString& Append(const wxString& s)
     {
-        // test for IsEmpty() to share the string if possible
-        if ( IsEmpty() )
+        // test for empty() to share the string if possible
+        if ( empty() )
             *this = s;
         else
             append(s);
@@ -1127,8 +1131,8 @@ public:
   int Last( const wxChar ch ) const { return Find(ch, true); }
   bool Contains(const wxString& str) const { return Find(str) != wxNOT_FOUND; }
 
-    // use IsEmpty()
-  bool IsNull() const { return IsEmpty(); }
+    // use empty()
+  bool IsNull() const { return empty(); }
 
   // std::string compatibility functions
 
@@ -1181,7 +1185,7 @@ public:
     { return (wxString&)wxStringBase::assign(first, last); }
 
     // string comparison
-#ifndef HAVE_STD_STRING_COMPARE
+#if !defined(HAVE_STD_STRING_COMPARE) 
   int compare(const wxStringBase& str) const;
     // comparison with a substring
   int compare(size_t nStart, size_t nLen, const wxStringBase& str) const;