X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/541aa821800536b6e265d415de8c1ed9a304f1c1..5df8beb1d95030c94f678458fc1980049f537992:/include/wx/buffer.h?ds=sidebyside diff --git a/include/wx/buffer.h b/include/wx/buffer.h index 8e7fd8dbb1..346ef113f9 100644 --- a/include/wx/buffer.h +++ b/include/wx/buffer.h @@ -15,9 +15,11 @@ #include "wx/chartype.h" #include "wx/wxcrtbase.h" +#ifndef __WXPALMOS5__ #include // malloc() and free() +#endif // ! __WXPALMOS5__ -class WXDLLIMPEXP_BASE wxCStrData; +class WXDLLIMPEXP_FWD_BASE wxCStrData; // ---------------------------------------------------------------------------- // Special classes for (wide) character strings: they use malloc/free instead @@ -25,7 +27,7 @@ class WXDLLIMPEXP_BASE wxCStrData; // ---------------------------------------------------------------------------- template -class wxCharTypeBuffer +class WXDLLIMPEXP_BASE wxCharTypeBuffer { public: typedef T CharType; @@ -105,9 +107,12 @@ public: wxCharTypeBuffer& operator=(const wxCharTypeBuffer& src) { - if ( m_owned ) - free(m_str); - CopyFrom(src); + if (&src != this) + { + if ( m_owned ) + free(m_str); + CopyFrom(src); + } return *this; } @@ -150,7 +155,9 @@ private: bool m_owned; }; -class wxCharBuffer : public wxCharTypeBuffer +WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxCharTypeBuffer ) + +class WXDLLIMPEXP_BASE wxCharBuffer : public wxCharTypeBuffer { public: typedef wxCharTypeBuffer wxCharTypeBufferBase; @@ -165,7 +172,9 @@ public: }; #if wxUSE_WCHAR_T -class wxWCharBuffer : public wxCharTypeBuffer +WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxCharTypeBuffer ) + +class WXDLLIMPEXP_BASE wxWCharBuffer : public wxCharTypeBuffer { public: typedef wxCharTypeBuffer wxCharTypeBufferBase; @@ -222,6 +231,13 @@ typedef wxWritableCharTypeBuffer wxWritableWCharBuffer; #define wxWX2WCbuf wxWCharBuffer #endif // Unicode/ANSI +// type of the value returned by wxString::utf8_str() +#if wxUSE_UNICODE_UTF8 + #define wxUTF8Buf char * +#else + #define wxUTF8Buf wxCharBuffer +#endif + // ---------------------------------------------------------------------------- // A class for holding growable data buffers (not necessarily strings) // ---------------------------------------------------------------------------- @@ -284,7 +300,7 @@ private: }; -class wxMemoryBuffer +class WXDLLIMPEXP_BASE wxMemoryBuffer { public: // ctor and dtor @@ -306,9 +322,12 @@ public: wxMemoryBuffer& operator=(const wxMemoryBuffer& src) { - m_bufdata->DecRef(); - m_bufdata = src.m_bufdata; - m_bufdata->IncRef(); + if (&src != this) + { + m_bufdata->DecRef(); + m_bufdata = src.m_bufdata; + m_bufdata->IncRef(); + } return *this; }