X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/12028905135250524409f1e7b9bfa9c55e5ce16b..178a12204bcdb9d98af14cc133432c7359b1b969:/include/wx/string.h diff --git a/include/wx/string.h b/include/wx/string.h index 618b51f855..bb5144d47b 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: string.h +// Name: wx/string.h // Purpose: wxString and wxArrayString classes // Author: Vadim Zeitlin // Modified by: @@ -32,10 +32,6 @@ #include #endif -#ifdef __EMX__ - #include -#endif - #if defined(__VISAGECPP__) && __IBMCPP__ >= 400 // problem in VACPP V4 with including stdlib.h multiple times // strconv includes it anyway @@ -51,9 +47,9 @@ # include #endif -#ifdef HAVE_STRINGS_H +#ifdef HAVE_STRCASECMP_IN_STRINGS_H #include // for strcasecmp() -#endif // HAVE_STRINGS_H +#endif // HAVE_STRCASECMP_IN_STRINGS_H #include "wx/wxchar.h" // for wxChar #include "wx/buffer.h" // for wxCharBuffer @@ -138,7 +134,9 @@ inline int Stricmp(const char *psz1, const char *psz2) return stricmp(psz1, psz2); #elif defined(__WXPM__) return stricmp(psz1, psz2); -#elif defined(__UNIX__) || defined(__GNUWIN32__) +#elif defined(HAVE_STRCASECMP_IN_STRING_H) || \ + defined(HAVE_STRCASECMP_IN_STRINGS_H) || \ + defined(__GNUWIN32__) return strcasecmp(psz1, psz2); #elif defined(__MWERKS__) && !defined(__INTEL__) register char c1, c2; @@ -177,7 +175,7 @@ inline const wxString& wxGetEmptyString() { return *(wxString *)&wxEmptyString; #include "wx/afterstd.h" #if wxUSE_UNICODE - #if HAVE_STD_WSTRING + #ifdef HAVE_STD_WSTRING typedef std::wstring wxStringBase; #else typedef std::basic_string wxStringBase; @@ -187,7 +185,7 @@ inline const wxString& wxGetEmptyString() { return *(wxString *)&wxEmptyString; #endif #if (defined(__GNUG__) && (__GNUG__ < 3)) || \ - (defined(_MSC_VER) && (_MSC_VER <= 1100)) + (defined(_MSC_VER) && (_MSC_VER <= 1200)) #define wxSTRING_BASE_HASNT_CLEAR #endif @@ -335,8 +333,21 @@ public: wxStringBase(const void *pStart, const void *pEnd); // dtor is not virtual, this class must not be inherited from! - ~wxStringBase() { GetStringData()->Unlock(); } + ~wxStringBase() + { +#if defined(__VISUALC__) && (__VISUALC__ >= 1200) + //RN - according to the above VC++ does indeed inline this, + //even though it spits out two warnings + #pragma warning (disable:4714) +#endif + GetStringData()->Unlock(); + } + +#if defined(__VISUALC__) && (__VISUALC__ >= 1200) + //re-enable inlining warning + #pragma warning (default:4714) +#endif // overloaded assignment // from another wxString wxStringBase& operator=(const wxStringBase& stringSrc); @@ -443,7 +454,7 @@ public: wxStringBase& insert(size_t nPos, size_t n, wxChar ch) { return insert(nPos, wxStringBase(n, ch)); } iterator insert(iterator it, wxChar ch) - { size_t idx = it - begin(); insert(idx, 1, ch); return begin() + idx; } + { size_t idx = it - begin(); insert(idx, 1, ch); return begin() + idx; } void insert(iterator it, const_iterator first, const_iterator last) { insert(it - begin(), first, last - first); } void insert(iterator it, size_type n, wxChar ch) @@ -527,6 +538,7 @@ public: { return find_first_of(str.c_str(), nStart); } // same as above size_t find_first_of(const wxChar* sz, size_t nStart = 0) const; + size_t find_first_of(const wxChar* sz, size_t nStart, size_t n) const; // same as find(char, size_t) size_t find_first_of(wxChar c, size_t nStart = 0) const { return find(c, nStart); } @@ -535,6 +547,7 @@ public: { return find_last_of(str.c_str(), nStart); } // same as above size_t find_last_of (const wxChar* sz, size_t nStart = npos) const; + size_t find_last_of(const wxChar* sz, size_t nStart, size_t n) const; // same as above size_t find_last_of(wxChar c, size_t nStart = npos) const { return rfind(c, nStart); } @@ -546,13 +559,15 @@ public: { return find_first_not_of(str.c_str(), nStart); } // same as above size_t find_first_not_of(const wxChar* sz, size_t nStart = 0) const; + size_t find_first_not_of(const wxChar* sz, size_t nStart, size_t n) const; // same as above size_t find_first_not_of(wxChar ch, size_t nStart = 0) const; // as strcspn() size_t find_last_not_of(const wxStringBase& str, size_t nStart = npos) const - { return find_first_not_of(str.c_str(), nStart); } + { return find_last_not_of(str.c_str(), nStart); } // same as above size_t find_last_not_of(const wxChar* sz, size_t nStart = npos) const; + size_t find_last_not_of(const wxChar* sz, size_t nStart, size_t n) const; // same as above size_t find_last_not_of(wxChar ch, size_t nStart = npos) const; @@ -1136,7 +1151,7 @@ public: : wxStringBase(str, nPos, nLen) { } // take all characters from pStart to pEnd wxString(const void *pStart, const void *pEnd) - : wxStringBase((const char*)pStart, (const char*)pEnd) { } + : wxStringBase((const wxChar*)pStart, (const wxChar*)pEnd) { } #if wxUSE_STL wxString(const_iterator first, const_iterator last) : wxStringBase(first, last) { } @@ -1209,7 +1224,7 @@ public: wxString& insert(size_t nPos, size_t n, wxChar ch) { return (wxString&)wxStringBase::insert(nPos, n, ch); } iterator insert(iterator it, wxChar ch) - { return wxStringBase::insert(it, ch); } + { return wxStringBase::insert(it, ch); } void insert(iterator it, const_iterator first, const_iterator last) { wxStringBase::insert(it, first, last); } void insert(iterator it, size_type n, wxChar ch)