- Implemented wxMemoryInputStream::CanRead()
- Added wxEXEC_BLOCK flag (Hank Schultz)
- Add support for wxStream-derived classes to wxRTTI (Stas Sergeev)
+- Added wxStreamBuffer::Truncate() (Stas Sergeev)
All (GUI):
Resets to the initial state variables concerning the buffer.
+
+\membersection{wxStreamBuffer::Truncate}\label{wxstreambuffertruncate}
+
+\func{void}{Truncate}{\void}
+
+Truncates the buffer to the current position.
+
+Note: Truncate() cannot be used to enlarge the buffer. This is
+usually not needed since the buffer expands automatically.
+
+
\membersection{wxStreamBuffer::SetBufferIO}\label{wxstreambuffersetbufferio}
\func{void}{SetBufferIO}{\param{char*}{ buffer\_start}, \param{char*}{ buffer\_end}}
// Buffer control
void ResetBuffer();
+ void Truncate();
// NB: the buffer must always be allocated with malloc() if takeOwn is
// true as it will be deallocated by free()
: m_buffer_start;
}
+void wxStreamBuffer::Truncate()
+{
+ size_t new_size = m_buffer_pos - m_buffer_start;
+ if ( new_size == m_buffer_size )
+ return;
+
+ if ( !new_size )
+ {
+ FreeBuffer();
+ InitBuffer();
+ return;
+ }
+
+ char *new_start = (char *)realloc(m_buffer_start, new_size);
+ wxCHECK_RET( new_size, _T("shrinking buffer shouldn't fail") );
+
+ m_buffer_start = new_start;
+ m_buffer_size = new_size;
+ m_buffer_end = m_buffer_start + m_buffer_size;
+ m_buffer_pos = m_buffer_end;
+}
+
// fill the buffer with as much data as possible (only for read buffers)
bool wxStreamBuffer::FillBuffer()
{