X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5f709e6725d845e91094cbde15362c44df355ede..32c1cda24418c225fa2cff4b1416f7a3d62c88b1:/include/wx/string.h diff --git a/include/wx/string.h b/include/wx/string.h index 20149977f0..8948591e53 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -176,24 +176,9 @@ class WXDLLEXPORT wxMBConv public: virtual size_t MB2WC(wchar_t *buf, const char *psz, size_t n) const; virtual size_t WC2MB(char *buf, const wchar_t *psz, size_t n) const; - const wxWCharBuffer cMB2WC(const char *psz) const - { - if (psz) { - size_t nLen = MB2WC((wchar_t *) NULL, psz, 0); - wxWCharBuffer buf(nLen); - MB2WC(WCSTRINGCAST buf, psz, nLen); - return buf; - } else return wxWCharBuffer((wchar_t *) NULL); - } - const wxCharBuffer cWC2MB(const wchar_t *psz) const - { - if (psz) { - size_t nLen = WC2MB((char *) NULL, psz, 0); - wxCharBuffer buf(nLen); - WC2MB(MBSTRINGCAST buf, psz, nLen); - return buf; - } else return wxCharBuffer((char *) NULL); - } + // No longer inline since BC++ complains. + const wxWCharBuffer cMB2WC(const char *psz) const; + const wxCharBuffer cWC2MB(const wchar_t *psz) const; #if wxUSE_UNICODE const wxWCharBuffer cMB2WX(const char *psz) const { return cMB2WC(psz); } const wxCharBuffer cWX2MB(const wchar_t *psz) const { return cWC2MB(psz); } @@ -221,7 +206,7 @@ WXDLLEXPORT_DATA(extern wxANOTHER_MBCONV(wxMBConvFile)) wxConvFile; WXDLLEXPORT_DATA(extern wxANOTHER_MBCONV(wxMBConvUTF7)) wxConvUTF7; WXDLLEXPORT_DATA(extern wxANOTHER_MBCONV(wxMBConvUTF8)) wxConvUTF8; #define wxConv_UTF8 wxConvUTF8 -#if defined(__WXGTK__) && (GTK_MINOR_VERSION > 0) +#if defined(__WXGTK12__) WXDLLEXPORT_DATA(extern wxANOTHER_MBCONV(wxMBConvGdk)) wxConvGdk; #define wxConv_gdk wxConvGdk #endif // GTK > 1.0 @@ -263,8 +248,18 @@ WXDLLEXPORT_DATA(extern wxMBConv *) wxConvCurrent; #define FNSTRINGCAST WXSTRINGCAST #endif #else//!wxUSE_WCHAR_T -class WXDLLEXPORT wxMBConv {}; -WXDLLEXPORT_DATA(extern wxMBConv) wxConvLibc; +class WXDLLEXPORT wxMBConv { +public: + const char* cMB2WX(const char *psz) const { return psz; } + const char* cWX2MB(const char *psz) const { return psz; } +}; +WXDLLEXPORT_DATA(extern wxMBConv) wxConvLibc, wxConvFile; +#define wxConv_libc wxConvLibc +#define wxConv_file wxConvFile +WXDLLEXPORT_DATA(extern wxMBConv *) wxConvCurrent; +#define wxConv_current wxConvCurrent +#define wxFNCONV(name) name +#define FNSTRINGCAST WXSTRINGCAST #endif//wxUSE_WCHAR_T // --------------------------------------------------------------------------- @@ -718,6 +713,10 @@ public: #ifdef wxSTD_STRING_COMPATIBILITY // std::string compatibility functions + // standard types + typedef wxChar value_type; + typedef const value_type *const_iterator; + // an 'invalid' value for string index static const size_t npos; @@ -751,6 +750,11 @@ public: // returns the writable character at position n wxChar& at(size_t n) { return GetWritableChar(n); } + // first valid index position + const_iterator begin() const { return wx_str(); } + // position one after the last valid one + const_iterator end() const { return wx_str() + length(); } + // lib.string.modifiers // append a string wxString& append(const wxString& str) @@ -841,32 +845,37 @@ public: // find first/last occurence of any character in the set - // - size_t find_first_of(const wxString& str, size_t nStart = 0) const; - // + // as strpbrk() but starts at nStart, returns npos if not found + size_t find_first_of(const wxString& str, size_t nStart = 0) const + { return find_first_of(str.c_str(), nStart); } + // same as above size_t find_first_of(const wxChar* sz, size_t nStart = 0) const; // same as find(char, size_t) - size_t find_first_of(wxChar c, size_t nStart = 0) const; - // - size_t find_last_of (const wxString& str, size_t nStart = npos) const; - // - size_t find_last_of (const wxChar* s, size_t nStart = npos) const; - // same as rfind(char, size_t) - size_t find_last_of (wxChar c, size_t nStart = npos) const; + size_t find_first_of(wxChar c, size_t nStart = 0) const + { return find(c, nStart); } + // find the last (starting from nStart) char from str in this string + size_t find_last_of (const wxString& str, size_t nStart = npos) const + { return find_last_of(str.c_str(), nStart); } + // same as above + size_t find_last_of (const wxChar* sz, size_t nStart = npos) const; + // same as above + size_t find_last_of(wxChar c, size_t nStart = npos) const + { return rfind(c, nStart); } // find first/last occurence of any character not in the set - // - size_t find_first_not_of(const wxString& str, size_t nStart = 0) const; - // - size_t find_first_not_of(const wxChar* s, size_t nStart = 0) const; - // + // as strspn() (starting from nStart), returns npos on failure + size_t find_first_not_of(const wxString& str, size_t nStart = 0) const + { 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; + // 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 wxString& str, size_t nStart=npos) const; - // - size_t find_last_not_of(const wxChar* s, size_t nStart = npos) const; - // + // same as above + size_t find_last_not_of(const wxChar* sz, size_t nStart = npos) const; + // same as above size_t find_last_not_of(wxChar ch, size_t nStart = npos) const; // All compare functions return -1, 0 or 1 if the [sub]string is less,