X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/421db2ada5702924d874c8c11e4a6fa0129ecaa5..23213f1811f2743efc9360d0b4b3a90a98d2b7e5:/src/common/stream.cpp diff --git a/src/common/stream.cpp b/src/common/stream.cpp index 15d6b73c36..048544a225 100644 --- a/src/common/stream.cpp +++ b/src/common/stream.cpp @@ -38,7 +38,7 @@ #include #include "wx/stream.h" #include "wx/datstrm.h" -#include "wx/objstrm.h" +#include "wx/textfile.h" // ---------------------------------------------------------------------------- // constants @@ -94,7 +94,14 @@ wxStreamBuffer::wxStreamBuffer(BufMode mode) { Init(); - m_stream = new wxStreamBase; + wxASSERT_MSG(mode != read_write, wxT("you have to use the other ctor for read_write mode") ); + if ( mode == read ) + m_stream = new wxInputStream; + else if ( mode == write) + m_stream = new wxOutputStream; + else + m_stream = NULL; + m_mode = mode; m_flushable = FALSE; @@ -669,7 +676,12 @@ bool wxInputStream::Eof() const char c; self->Read(&c, 1); - if ( GetLastError() == wxSTREAM_EOF ) + + // some streams can know that they're at EOF before actually trying to + // read beyond the end of stream (e.g. files) while others have no way of + // knowing it, so to provide the same behaviour in all cases we only + // return TRUE from here if the character really couldn't be read + if ( !self->LastRead() && GetLastError() == wxSTREAM_EOF ) { return TRUE; } @@ -837,19 +849,6 @@ off_t wxInputStream::TellI() const return pos; } -// -------------------- -// Overloaded operators -// -------------------- - -#if wxUSE_SERIAL -wxInputStream& wxInputStream::operator>>(wxObject *& obj) -{ - wxObjectInputStream obj_s(*this); - obj = obj_s.LoadObject(); - return *this; -} -#endif // wxUSE_SERIAL - // ---------------------------------------------------------------------------- // wxOutputStream @@ -900,14 +899,6 @@ void wxOutputStream::Sync() { } -#if wxUSE_SERIAL -wxOutputStream& wxOutputStream::operator<<(wxObject& obj) -{ - wxObjectOutputStream obj_s(*this); - obj_s.SaveObject(obj); - return *this; -} -#endif // wxUSE_SERIAL // ---------------------------------------------------------------------------- // wxCountingOutputStream @@ -1171,15 +1162,9 @@ void wxBufferedOutputStream::SetOutputStreamBuffer(wxStreamBuffer *buffer) wxOutputStream& wxEndL(wxOutputStream& stream) { -#ifdef __MSW__ - return stream.Write("\r\n", 2); -#else -#ifdef __WXMAC__ - return stream.Write("\r", 1); -#else - return stream.Write("\n", 1); -#endif -#endif + static const wxChar *eol = wxTextFile::GetEOL(); + + return stream.Write(eol, wxStrlen(eol)); } #endif