]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/stream.cpp
1. make debugging macros compatible with ANSI build even in Unicode build (i.e.,...
[wxWidgets.git] / src / common / stream.cpp
index 4765ea03f60351289947ce3699e34eda8ec7fb5a..e3d076ad77bb450d968d47dd8f446222ea6dac3d 100644 (file)
@@ -192,6 +192,28 @@ void wxStreamBuffer::ResetBuffer()
                         : 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()
 {
@@ -657,6 +679,8 @@ wxFileOffset wxStreamBuffer::Tell() const
 // wxStreamBase
 // ----------------------------------------------------------------------------
 
+IMPLEMENT_ABSTRACT_CLASS(wxStreamBase, wxObject)
+
 wxStreamBase::wxStreamBase()
 {
     m_lasterror = wxSTREAM_NO_ERROR;
@@ -693,6 +717,8 @@ wxFileOffset wxStreamBase::OnSysTell() const
 // wxInputStream
 // ----------------------------------------------------------------------------
 
+IMPLEMENT_ABSTRACT_CLASS(wxInputStream, wxStreamBase)
+
 wxInputStream::wxInputStream()
 {
     m_wback = NULL;
@@ -938,6 +964,8 @@ wxFileOffset wxInputStream::TellI() const
 // wxOutputStream
 // ----------------------------------------------------------------------------
 
+IMPLEMENT_ABSTRACT_CLASS(wxOutputStream, wxStreamBase)
+
 wxOutputStream::wxOutputStream()
 {
 }
@@ -988,6 +1016,8 @@ void wxOutputStream::Sync()
 // wxCountingOutputStream
 // ----------------------------------------------------------------------------
 
+IMPLEMENT_DYNAMIC_CLASS(wxCountingOutputStream, wxOutputStream)
+
 wxCountingOutputStream::wxCountingOutputStream ()
 {
      m_currentPos = 0;
@@ -1050,6 +1080,8 @@ wxFileOffset wxCountingOutputStream::OnSysTell() const
 // wxFilterInputStream
 // ----------------------------------------------------------------------------
 
+IMPLEMENT_ABSTRACT_CLASS(wxFilterInputStream, wxInputStream)
+
 wxFilterInputStream::wxFilterInputStream()
  :  m_parent_i_stream(NULL),
     m_owns(false)
@@ -1078,6 +1110,8 @@ wxFilterInputStream::~wxFilterInputStream()
 // wxFilterOutputStream
 // ----------------------------------------------------------------------------
 
+IMPLEMENT_ABSTRACT_CLASS(wxFilterOutputStream, wxOutputStream)
+
 wxFilterOutputStream::wxFilterOutputStream()
  :  m_parent_o_stream(NULL),
     m_owns(false)