X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b5f62a0b2db198609b45dec622a018dae37008e..5d605a6995d8f1a647934e30089468cc598c951d:/include/wx/buffer.h diff --git a/include/wx/buffer.h b/include/wx/buffer.h index b913e75100..c15ca72c27 100644 --- a/include/wx/buffer.h +++ b/include/wx/buffer.h @@ -6,17 +6,15 @@ // Created: 12.04.99 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -// these classes are for private use only for now, they're not documented - #ifndef _WX_BUFFER_H #define _WX_BUFFER_H #include "wx/wxchar.h" -#include // strdup +#include // malloc() and free() // ---------------------------------------------------------------------------- // Special classes for (wide) character strings: they use malloc/free instead @@ -24,7 +22,7 @@ // ---------------------------------------------------------------------------- #define DEFINE_BUFFER(classname, chartype, strdupfunc) \ -class classname \ +class WXDLLIMPEXP_BASE classname \ { \ public: \ classname(const chartype *str) \ @@ -32,7 +30,7 @@ public: \ { \ } \ \ - classname(size_t len) \ + classname(size_t len=0) \ : m_str((chartype *)malloc((len + 1)*sizeof(chartype))) \ { \ m_str[len] = (chartype)0; \ @@ -95,19 +93,11 @@ private: \ chartype *m_str; \ } -DEFINE_BUFFER(wxCharBuffer, char, strdup); +DEFINE_BUFFER(wxCharBuffer, char, wxStrdupA); #if wxUSE_WCHAR_T -inline wchar_t *wxWcsdupReplacement(const wchar_t *wcs) -{ - const size_t siz = (wxWcslen(wcs) + 1)*sizeof(wchar_t); - wchar_t *wcsCopy = (wchar_t *)malloc(siz); - memcpy(wcsCopy, wcs, siz); - return wcsCopy; -} - -DEFINE_BUFFER(wxWCharBuffer, wchar_t, wxWcsdupReplacement); +DEFINE_BUFFER(wxWCharBuffer, wchar_t, wxStrdupW); #endif // wxUSE_WCHAR_T @@ -134,13 +124,13 @@ class wxMemoryBufferData { public: // the initial size and also the size added by ResizeIfNeeded() - enum { BLOCK_SIZE = 1024 }; + enum { DefBufSize = 1024 }; friend class wxMemoryBuffer; // everyting is private as it can only be used by wxMemoryBuffer private: - wxMemoryBufferData(size_t size = wxMemoryBufferData::BLOCK_SIZE) + wxMemoryBufferData(size_t size = wxMemoryBufferData::DefBufSize) : m_data(size ? malloc(size) : NULL), m_size(size), m_len(0), m_ref(0) { } @@ -152,13 +142,13 @@ private: if (newSize > m_size) { void *dataOld = m_data; - m_data = realloc(m_data, newSize + wxMemoryBufferData::BLOCK_SIZE); + m_data = realloc(m_data, newSize + wxMemoryBufferData::DefBufSize); if ( !m_data ) { free(dataOld); } - m_size = newSize + wxMemoryBufferData::BLOCK_SIZE; + m_size = newSize + wxMemoryBufferData::DefBufSize; } } @@ -182,6 +172,8 @@ private: // the reference count size_t m_ref; + + DECLARE_NO_COPY_CLASS(wxMemoryBufferData) }; @@ -189,7 +181,7 @@ class wxMemoryBuffer { public: // ctor and dtor - wxMemoryBuffer(size_t size = wxMemoryBufferData::BLOCK_SIZE) + wxMemoryBuffer(size_t size = wxMemoryBufferData::DefBufSize) { m_bufdata = new wxMemoryBufferData(size); m_bufdata->IncRef(); @@ -259,7 +251,7 @@ public: m_bufdata->m_len += 1; } - void AppendData(void* data, size_t len) + void AppendData(const void *data, size_t len) { memcpy(GetAppendBuf(len), data, len); UngetAppendBuf(len);