From: Vadim Zeitlin Date: Fri, 23 Mar 2007 00:04:15 +0000 (+0000) Subject: fix DLL build with MSVC: it wasn't happy that some functions of a template class... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ccd4deab6b05e27b3275dda38bec124300436480 fix DLL build with MSVC: it wasn't happy that some functions of a template class were not implemented, so get rid of FromCStrData() and implement its logic in one of the 2 derived classes ctors instead git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45026 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/buffer.h b/include/wx/buffer.h index cd4d760661..c9232820fe 100644 --- a/include/wx/buffer.h +++ b/include/wx/buffer.h @@ -27,7 +27,7 @@ inline char *wxStrDup(const char *s) { return wxStrdupA(s); } // ---------------------------------------------------------------------------- template -class WXDLLIMPEXP_BASE wxCharTypeBuffer +class wxCharTypeBuffer { public: typedef T CharType; @@ -37,11 +37,6 @@ public: { } - wxCharTypeBuffer(const wxCStrData& cstr) - { - FromCStrData(cstr); - } - wxCharTypeBuffer(size_t len) : m_str((CharType *)malloc((len + 1)*sizeof(CharType))) { @@ -119,9 +114,6 @@ public: operator const CharType *() const { return m_str; } CharType operator[](size_t n) const { return m_str[n]; } -private: - void FromCStrData(const wxCStrData& cstr); - private: CharType *m_str; }; @@ -129,30 +121,40 @@ private: class WXDLLIMPEXP_BASE wxCharBuffer : public wxCharTypeBuffer { public: - wxCharBuffer(const CharType *str = NULL) : wxCharTypeBuffer(str) {} - wxCharBuffer(const wxCStrData& cstr) : wxCharTypeBuffer(cstr) {} - wxCharBuffer(size_t len) : wxCharTypeBuffer(len) {} + typedef wxCharTypeBuffer wxCharTypeBufferBase; + + wxCharBuffer(const CharType *str = NULL) : wxCharTypeBufferBase(str) {} + wxCharBuffer(size_t len) : wxCharTypeBufferBase(len) {} + +#if !wxUSE_UNICODE + wxCharBuffer(const wxCStrData& cstr); +#endif }; #if wxUSE_WCHAR_T class WXDLLIMPEXP_BASE wxWCharBuffer : public wxCharTypeBuffer { public: - wxWCharBuffer(const CharType *str = NULL) : wxCharTypeBuffer(str) {} - wxWCharBuffer(const wxCStrData& cstr) : wxCharTypeBuffer(cstr) {} - wxWCharBuffer(size_t len) : wxCharTypeBuffer(len) {} + typedef wxCharTypeBuffer wxCharTypeBufferBase; + + wxWCharBuffer(const CharType *str = NULL) : wxCharTypeBufferBase(str) {} + wxWCharBuffer(size_t len) : wxCharTypeBufferBase(len) {} + +#if wxUSE_UNICODE + wxWCharBuffer(const wxCStrData& cstr); +#endif }; #endif // wxUSE_WCHAR_T #if wxUSE_UNICODE - typedef wxWCharBuffer wxWxCharBuffer; + #define wxWxCharBuffer wxWCharBuffer #define wxMB2WXbuf wxWCharBuffer #define wxWX2MBbuf wxCharBuffer #define wxWC2WXbuf wxChar* #define wxWX2WCbuf wxChar* #else // ANSI - typedef wxCharBuffer wxWxCharBuffer; + #define wxWxCharBuffer wxCharBuffer #define wxMB2WXbuf wxChar* #define wxWX2MBbuf wxChar* diff --git a/include/wx/string.h b/include/wx/string.h index 47987d1eb6..1fc8abd554 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -2045,10 +2045,9 @@ inline wxString& wxString::operator=(const wxCStrData& cstr) // ---------------------------------------------------------------------------- // FIXME-UTF8: move this to buffer.h; provide versions for both variants -template<> -inline void wxCharTypeBuffer::FromCStrData(const wxCStrData& cstr) +inline wxWxCharBuffer::wxWxCharBuffer(const wxCStrData& cstr) + : wxCharTypeBufferBase((const wxChar *)cstr) { - m_str = wxStrDup(cstr.AsString()); } #endif // _WX_WXSTRINGH__