#include <ctype.h>
#endif
-#ifdef __EMX__
- #include <std.h>
-#endif
-
#if defined(__VISAGECPP__) && __IBMCPP__ >= 400
// problem in VACPP V4 with including stdlib.h multiple times
// strconv includes it anyway
#include "wx/afterstd.h"
#if wxUSE_UNICODE
- #if HAVE_STD_WSTRING
+ #ifdef HAVE_STD_WSTRING
typedef std::wstring wxStringBase;
#else
typedef std::basic_string<wxChar> wxStringBase;
// VC++ will refuse to inline Unlock but profiling shows that it is wrong
#if defined(__VISUALC__) && (__VISUALC__ >= 1200)
- __forceinline
+ __forceinline
#endif
// VC++ free must take place in same DLL as allocation when using non dll
// run-time library (e.g. Multithreaded instead of Multithreaded DLL)
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);
{ 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); }
{ 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); }
{ 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;