X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e49f47aa77457548df1a86f74c285ea3226b3cce..d1427b705318677afe28b1291867f6930c8823a7:/src/common/mstream.cpp?ds=sidebyside diff --git a/src/common/mstream.cpp b/src/common/mstream.cpp index d75c423885..7f72e82db4 100644 --- a/src/common/mstream.cpp +++ b/src/common/mstream.cpp @@ -67,29 +67,37 @@ wxMemoryInputStream::wxMemoryInputStream(const char *data, size_t len) m_lastread = 0; m_eof = FALSE; m_iolimit = 1; + + m_i_streambuf->SetBufferIO(0); } wxMemoryInputStream::~wxMemoryInputStream() { } -wxInputStream& wxMemoryInputStream::Read(void *buffer, size_t size) +char wxMemoryInputStream::Peek() +{ + // wxStreamBuffer is disabled so just peek the current character. + + return m_buffer[m_position_i]; +} + +size_t wxMemoryInputStream::DoRead(void *buffer, size_t size) { if (m_iolimit == 2) { m_eof = TRUE; - return *this; + return 0; } if (m_position_i+size > m_length) size = m_length-m_position_i; memcpy((void *)((unsigned long)buffer+m_position_i), m_buffer, size); m_position_i += size; - m_lastread = size; - return *this; + return size; } -off_t wxMemoryInputStream::SeekI(off_t pos, wxSeekMode mode) +off_t wxMemoryInputStream::DoSeekInput(off_t pos, wxSeekMode mode) { if (m_iolimit == 2) return 0; @@ -129,33 +137,35 @@ wxMemoryOutputStream::wxMemoryOutputStream(char *data, size_t len) m_lastwrite = 0; m_bad = FALSE; m_iolimit = 2; + + m_o_streambuf->SetBufferIO(0); } wxMemoryOutputStream::~wxMemoryOutputStream() { + Sync(); } -wxOutputStream& wxMemoryOutputStream::Write(const void *buffer, size_t size) +size_t wxMemoryOutputStream::DoWrite(const void *buffer, size_t size) { if (m_iolimit == 1) { m_bad = TRUE; - return *this; + return 0; } if (m_position_o+size > m_length) if (!ChangeBufferSize(m_position_o+size)) { m_bad = TRUE; - return *this; + return 0; } memcpy(m_buffer+m_position_o, buffer, size); m_position_o += size; - m_lastwrite = size; - return *this; + return size; } -off_t wxMemoryOutputStream::SeekO(off_t pos, wxSeekMode mode) +off_t wxMemoryOutputStream::DoSeekOutput(off_t pos, wxSeekMode mode) { if (m_iolimit == 1) return 0;