X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a59c124d063b0df0b3259d99b5b569206414f8f5..69429a166f8b168228bbb89eb8c52903670f4fd2:/include/wx/string.h?ds=sidebyside diff --git a/include/wx/string.h b/include/wx/string.h index 7f4245d2aa..1c6dbc1f0b 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -18,7 +18,7 @@ #ifndef _WX_WXSTRINGH__ #define _WX_WXSTRINGH__ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "string.h" #endif @@ -165,33 +165,6 @@ inline int Stricmp(const char *psz1, const char *psz2) #endif // OS/compiler } -#ifndef wxSnprintf -// wxSnprintf() is like snprintf() if it's available and sprintf() (always -// available, but dangerous!) if not. -extern int WXDLLEXPORT wxSnprintf(wxChar *buf, size_t len, - const wxChar *format, - ...) ATTRIBUTE_PRINTF_3; -#else -// GNU libc 2.2 only has for wxSnprintf for Unicode called swprintf -// so we imitate wxSprintf using it. -extern int WXDLLEXPORT wxSprintf(wxChar *buf, - const wxChar *format, - ...) ATTRIBUTE_PRINTF_2; -#endif - -#ifndef wxVsnprintf -// and wxVsnprintf() is like vsnprintf() or vsprintf() -extern int WXDLLEXPORT wxVsnprintf(wxChar *buf, size_t len, - const wxChar *format, - va_list argptr); -#else -// GNU libc 2.2 only has for wxVsnprintf for Unicode called vswprintf -// so we imitate wxVsprintf using it. -extern int WXDLLEXPORT wxVsprintf(wxChar *buf, - const wxChar *format, - va_list argptr); -#endif - // return an empty wxString class WXDLLEXPORT wxString; // not yet defined inline const wxString& wxGetEmptyString() { return *(wxString *)&wxEmptyString; } @@ -473,13 +446,28 @@ public: // implicit conversion to C string operator const wxChar*() const { return m_pchData; } + // explicit conversion to C string (use this with printf()!) const wxChar* c_str() const { return m_pchData; } - // identical to c_str() + // identical to c_str(), for wxWin 1.6x compatibility const wxChar* wx_str() const { return m_pchData; } - // identical to c_str() + // identical to c_str(), for MFC compatibility const wxChar* GetData() const { return m_pchData; } + // conversion to/from plain (i.e. 7 bit) ASCII: this is useful for + // converting numbers or strings which are certain not to contain special + // chars (typically system functions, X atoms, environment variables etc.) + // + // the behaviour of these functions with the strings containing anything + // else than 7 bit ASCII characters is undefined, use at your own risk. +#if wxUSE_UNICODE + static wxString FromAscii(const char *ascii); + const wxCharBuffer ToAscii() const; +#else // ANSI + static wxString FromAscii(const char *ascii) { return wxString( ascii ); } + const char *ToAscii() const { return c_str(); } +#endif // Unicode/!Unicode + // conversions with (possible) format convertions: have to return a // buffer with temporary data // @@ -1162,20 +1150,20 @@ public: class WXDLLEXPORT wxStringBuffer { - DECLARE_NO_COPY_CLASS(wxStringBuffer) - public: wxStringBuffer(wxString& str, size_t lenWanted = 1024) : m_str(str), m_buf(NULL) { m_buf = m_str.GetWriteBuf(lenWanted); } - + ~wxStringBuffer() { m_str.UngetWriteBuf(); } - + operator wxChar*() const { return m_buf; } - + private: wxString& m_str; wxChar *m_buf; + + DECLARE_NO_COPY_CLASS(wxStringBuffer) }; // ---------------------------------------------------------------------------