]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed compilation if wxUSE_STL=1
authorVáclav Slavík <vslavik@fastmail.fm>
Mon, 19 Mar 2007 19:23:33 +0000 (19:23 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Mon, 19 Mar 2007 19:23:33 +0000 (19:23 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44959 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/string.h
src/common/string.cpp

index 71d0b84807dd4198c9c4a934db2063c6dcca2129..3b9bb155f976385a2e66e0b02824f6ca357cb2f2 100644 (file)
@@ -177,8 +177,18 @@ inline int Stricmp(const char *psz1, const char *psz2)
 // deal with STL/non-STL/non-STL-but-wxUSE_STD_STRING
 // ----------------------------------------------------------------------------
 
+// FIXME-UTF8: using std::string as wxString base class is currently broken,
+//             so we use the standard wxString with std::string conversion
+//             enabled, this is API-compatible.
+#define wxUSE_STL_BASED_WXSTRING 0
+#if wxUSE_STL
+    #undef wxUSE_STD_STRING
+    #define wxUSE_STD_STRING 1
+#endif
+//#define wxUSE_STL_BASED_WXSTRING  wxUSE_STL
+
 // in both cases we need to define wxStdString
-#if wxUSE_STL || wxUSE_STD_STRING
+#if wxUSE_STL_BASED_WXSTRING || wxUSE_STD_STRING
 
 #include "wx/beforestd.h"
 #include <string>
@@ -196,7 +206,7 @@ inline int Stricmp(const char *psz1, const char *psz2)
 
 #endif // need <string>
 
-#if wxUSE_STL
+#if wxUSE_STL_BASED_WXSTRING
 
     // we don't need an extra ctor from std::string when copy ctor already does
     // the work
@@ -209,10 +219,10 @@ inline int Stricmp(const char *psz1, const char *psz2)
     #endif
 
     typedef wxStdString wxStringBase;
-#else // if !wxUSE_STL
+#else // if !wxUSE_STL_BASED_WXSTRING
 
 #if !defined(HAVE_STD_STRING_COMPARE) && \
-    (!defined(__WX_SETUP_H__) || wxUSE_STL == 0)
+    (!defined(__WX_SETUP_H__) || wxUSE_STL_BASED_WXSTRING == 0)
     #define HAVE_STD_STRING_COMPARE
 #endif
 
@@ -751,7 +761,7 @@ public:
   wxStringBase& operator+=(wchar_t ch) { return append(1, ch); }
 };
 
-#endif // !wxUSE_STL
+#endif // !wxUSE_STL_BASED_WXSTRING
 
 // ----------------------------------------------------------------------------
 // wxCStrData
@@ -1163,7 +1173,7 @@ public:
     { return (wxString&)wxStringBase::operator=(wxUniChar(ch)); }
     // from a C string - STL probably will crash on NULL,
     // so we need to compensate in that case
-#if wxUSE_STL
+#if wxUSE_STL_BASED_WXSTRING
   wxString& operator=(const wxChar *psz)
     { if(psz) wxStringBase::operator=(psz); else Clear(); return *this; }
 #else
@@ -1663,7 +1673,7 @@ public:
   wxString& operator+=(wchar_t ch) { return *this += wxUniChar(ch); }
 
 private:
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
   // helpers for wxStringBuffer and wxStringBufferLength
   wxChar *DoGetWriteBuf(size_t nLen);
   void DoUngetWriteBuf();
@@ -1708,22 +1718,22 @@ inline wxString operator+(wchar_t ch, const wxString& string)
     { return wxUniChar(ch) + string; }
 
 
-#if wxUSE_STL
+#if wxUSE_STL_BASED_WXSTRING
     // return an empty wxString (not very useful with wxUSE_STL == 1)
     inline const wxString wxGetEmptyString() { return wxString(); }
-#else // !wxUSE_STL
+#else // !wxUSE_STL_BASED_WXSTRING
     // return an empty wxString (more efficient than wxString() here)
     inline const wxString& wxGetEmptyString()
     {
         return *(wxString *)&wxEmptyString;
     }
-#endif // wxUSE_STL/!wxUSE_STL
+#endif // wxUSE_STL_BASED_WXSTRING/!wxUSE_STL_BASED_WXSTRING
 
 // ----------------------------------------------------------------------------
 // wxStringBuffer: a tiny class allowing to get a writable pointer into string
 // ----------------------------------------------------------------------------
 
-#if wxUSE_STL
+#if wxUSE_STL_BASED_WXSTRING
 
 class WXDLLIMPEXP_BASE wxStringBuffer
 {
@@ -1776,7 +1786,7 @@ private:
     DECLARE_NO_COPY_CLASS(wxStringBufferLength)
 };
 
-#else // if !wxUSE_STL
+#else // if !wxUSE_STL_BASED_WXSTRING
 
 class WXDLLIMPEXP_BASE wxStringBuffer
 {
@@ -1824,16 +1834,16 @@ private:
     DECLARE_NO_COPY_CLASS(wxStringBufferLength)
 };
 
-#endif // !wxUSE_STL
+#endif // !wxUSE_STL_BASED_WXSTRING
 
 // ---------------------------------------------------------------------------
 // wxString comparison functions: operator versions are always case sensitive
 // ---------------------------------------------------------------------------
 
-// note that when wxUSE_STL == 1 the comparison operators taking std::string
-// are used and defining them also for wxString would only result in
-// compilation ambiguities when comparing std::string and wxString
-#if !wxUSE_STL
+// note that when wxUSE_STL_BASED_WXSTRING == 1 the comparison operators taking
+// std::string are used and defining them also for wxString would only result
+// in compilation ambiguities when comparing std::string and wxString
+#if !wxUSE_STL_BASED_WXSTRING
 
 inline bool operator==(const wxString& s1, const wxString& s2)
     { return (s1.Len() == s2.Len()) && (s1.Cmp(s2) == 0); }
@@ -1904,7 +1914,7 @@ inline wxString operator+(const wxCharBuffer& buf, const wxString& string)
     { return (const char *)buf + string; }
 #endif // wxUSE_UNICODE/!wxUSE_UNICODE
 
-#endif // !wxUSE_STL
+#endif // !wxUSE_STL_BASED_WXSTRING
 
 // comparison with char (those are not defined by std::[w]string and so should
 // be always available)
index 68da706c984229ffd6a5c1e85577b3b4d3126505..9c8122f952d1dda3f4d8b50d752fae8249372813 100644 (file)
@@ -56,7 +56,7 @@
 // static class variables definition
 // ---------------------------------------------------------------------------
 
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
   //According to STL _must_ be a -1 size_t
   const size_t wxStringBase::npos = (size_t) -1;
 #endif
@@ -65,7 +65,7 @@
 // static data
 // ----------------------------------------------------------------------------
 
-#if wxUSE_STL
+#if wxUSE_STL_BASED_WXSTRING
 
 extern const wxChar WXDLLIMPEXP_BASE *wxEmptyString = _T("");
 
@@ -138,7 +138,7 @@ wxSTD ostream& operator<<(wxSTD ostream& os, const wxCStrData& str)
   #define STATISTICS_ADD(av, val)
 #endif // WXSTRING_STATISTICS
 
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
 
 // ===========================================================================
 // wxStringData class deallocation
@@ -911,11 +911,11 @@ bool wxStringBase::AllocCopy(wxString& dest, int nCopyLen, int nCopyIndex) const
   return true;
 }
 
-#endif // !wxUSE_STL
+#endif // !wxUSE_STL_BASED_WXSTRING
 
-#if !wxUSE_STL || !defined(HAVE_STD_STRING_COMPARE)
+#if !wxUSE_STL_BASED_WXSTRING || !defined(HAVE_STD_STRING_COMPARE)
 
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
     #define STRINGCLASS wxStringBase
 #else
     #define STRINGCLASS wxString
@@ -985,7 +985,7 @@ int STRINGCLASS::compare(size_t nStart, size_t nLen,
 
 #undef STRINGCLASS
 
-#endif // !wxUSE_STL || !defined(HAVE_STD_STRING_COMPARE)
+#endif // !wxUSE_STL_BASED_WXSTRING || !defined(HAVE_STD_STRING_COMPARE)
 
 // ===========================================================================
 // wxString class core
@@ -1064,7 +1064,7 @@ bool wxString::Shrink()
   return tmp.length() == length();
 }
 
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
 // get the pointer to writable buffer of (at least) nLen bytes
 wxChar *wxString::DoGetWriteBuf(size_t nLen)
 {
@@ -1157,7 +1157,7 @@ wxString& wxString::operator=(const wchar_t *pwz)
 
 wxString operator+(const wxString& str1, const wxString& str2)
 {
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
     wxASSERT( str1.GetStringData()->IsValid() );
     wxASSERT( str2.GetStringData()->IsValid() );
 #endif
@@ -1170,7 +1170,7 @@ wxString operator+(const wxString& str1, const wxString& str2)
 
 wxString operator+(const wxString& str, wxUniChar ch)
 {
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
     wxASSERT( str.GetStringData()->IsValid() );
 #endif
 
@@ -1182,7 +1182,7 @@ wxString operator+(const wxString& str, wxUniChar ch)
 
 wxString operator+(wxUniChar ch, const wxString& str)
 {
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
     wxASSERT( str.GetStringData()->IsValid() );
 #endif
 
@@ -1194,7 +1194,7 @@ wxString operator+(wxUniChar ch, const wxString& str)
 
 wxString operator+(const wxString& str, const wxChar *psz)
 {
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
     wxASSERT( str.GetStringData()->IsValid() );
 #endif
 
@@ -1210,7 +1210,7 @@ wxString operator+(const wxString& str, const wxChar *psz)
 
 wxString operator+(const wxChar *psz, const wxString& str)
 {
-#if !wxUSE_STL
+#if !wxUSE_STL_BASED_WXSTRING
     wxASSERT( str.GetStringData()->IsValid() );
 #endif