X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5c69ef61f3ad09c0aef39915d4361a534f598520..cbeda384e51acb82e13994cb67ac1714669cae10:/include/wx/strvararg.h diff --git a/include/wx/strvararg.h b/include/wx/strvararg.h index 4a9f0dbdd6..29b4ae041b 100644 --- a/include/wx/strvararg.h +++ b/include/wx/strvararg.h @@ -128,16 +128,16 @@ class WXDLLIMPEXP_BASE wxFormatString { public: wxFormatString(const char *str) - : m_char(wxCharBuffer::CreateNonOwned(str)), m_str(NULL), m_cstr(NULL) {} + : m_char(wxScopedCharBuffer::CreateNonOwned(str)), m_str(NULL), m_cstr(NULL) {} wxFormatString(const wchar_t *str) - : m_wchar(wxWCharBuffer::CreateNonOwned(str)), m_str(NULL), m_cstr(NULL) {} + : m_wchar(wxScopedWCharBuffer::CreateNonOwned(str)), m_str(NULL), m_cstr(NULL) {} wxFormatString(const wxString& str) : m_str(&str), m_cstr(NULL) {} wxFormatString(const wxCStrData& str) : m_str(NULL), m_cstr(&str) {} - wxFormatString(const wxCharBuffer& str) + wxFormatString(const wxScopedCharBuffer& str) : m_char(str), m_str(NULL), m_cstr(NULL) {} - wxFormatString(const wxWCharBuffer& str) + wxFormatString(const wxScopedWCharBuffer& str) : m_wchar(str), m_str(NULL), m_cstr(NULL) {} @@ -154,17 +154,21 @@ public: // n-th variadic argument desired representation ArgumentType GetArgumentType(unsigned n) const; + // returns the value passed to ctor, only converted to wxString, similarly + // to other InputAsXXX() methods + wxString InputAsString() const; + #if !wxUSE_UNICODE_WCHAR operator const char*() const { return const_cast<wxFormatString*>(this)->AsChar(); } private: - // InputAsChar() returns the value converted passed to ctor, only converted + // InputAsChar() returns the value passed to ctor, only converted // to char, while AsChar() takes the the string returned by InputAsChar() // and does format string conversion on it as well (and similarly for // ..AsWChar() below) const char* InputAsChar(); const char* AsChar(); - wxCharBuffer m_convertedChar; + wxScopedCharBuffer m_convertedChar; #endif // !wxUSE_UNICODE_WCHAR #if wxUSE_UNICODE && !wxUSE_UTF8_LOCALE_ONLY @@ -174,12 +178,12 @@ public: private: const wchar_t* InputAsWChar(); const wchar_t* AsWChar(); - wxWCharBuffer m_convertedWChar; + wxScopedWCharBuffer m_convertedWChar; #endif // wxUSE_UNICODE && !wxUSE_UTF8_LOCALE_ONLY private: - wxCharBuffer m_char; - wxWCharBuffer m_wchar; + wxScopedCharBuffer m_char; + wxScopedWCharBuffer m_wchar; // NB: we can use a pointer here, because wxFormatString is only used // as function argument, so it has shorter life than the string @@ -187,7 +191,7 @@ private: const wxString * const m_str; const wxCStrData * const m_cstr; - DECLARE_NO_ASSIGN_CLASS(wxFormatString) + wxDECLARE_NO_ASSIGN_CLASS(wxFormatString); }; // these two helper classes are used to find wxFormatString argument among fixed @@ -235,6 +239,14 @@ template<> struct wxFormatStringArgumentFinder<wxString> : public wxFormatStringArgumentFinder<const wxString&> {}; +template<> +struct wxFormatStringArgumentFinder<wxScopedCharBuffer> + : public wxFormatStringArgumentFinder<const wxScopedCharBuffer&> {}; + +template<> +struct wxFormatStringArgumentFinder<wxScopedWCharBuffer> + : public wxFormatStringArgumentFinder<const wxScopedWCharBuffer&> {}; + template<> struct wxFormatStringArgumentFinder<wxCharBuffer> : public wxFormatStringArgumentFinder<const wxCharBuffer&> {}; @@ -310,7 +322,7 @@ struct wxArgNormalizerWchar : public wxArgNormalizer<T> template<typename CharType> struct wxArgNormalizerWithBuffer { - typedef wxCharTypeBuffer<CharType> CharBuffer; + typedef wxScopedCharTypeBuffer<CharType> CharBuffer; wxArgNormalizerWithBuffer() {} wxArgNormalizerWithBuffer(const CharBuffer& buf, @@ -405,12 +417,12 @@ struct wxArgNormalizerUtf8<const char*> { if ( wxLocaleIsUtf8 ) { - m_value = wxCharBuffer::CreateNonOwned(s); + m_value = wxScopedCharBuffer::CreateNonOwned(s); } else { // convert to widechar string first: - wxWCharBuffer buf(wxConvLibc.cMB2WC(s)); + wxScopedWCharBuffer buf(wxConvLibc.cMB2WC(s)); // then to UTF-8: if ( buf ) @@ -481,6 +493,10 @@ WX_ARG_NORMALIZER_FORWARD(char*, const char*); WX_ARG_NORMALIZER_FORWARD(wchar_t*, const wchar_t*); // versions for passing wx[W]CharBuffer: +WX_ARG_NORMALIZER_FORWARD(wxScopedCharBuffer, const char*); +WX_ARG_NORMALIZER_FORWARD(const wxScopedCharBuffer&, const char*); +WX_ARG_NORMALIZER_FORWARD(wxScopedWCharBuffer, const wchar_t*); +WX_ARG_NORMALIZER_FORWARD(const wxScopedWCharBuffer&, const wchar_t*); WX_ARG_NORMALIZER_FORWARD(wxCharBuffer, const char*); WX_ARG_NORMALIZER_FORWARD(const wxCharBuffer&, const char*); WX_ARG_NORMALIZER_FORWARD(wxWCharBuffer, const wchar_t*);