X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a8d2cf4e70be848aaa52b1bff27b52440da1b648..9092371c0ad8090dc479d5015a1e69b3b9777e2f:/src/common/stream.cpp diff --git a/src/common/stream.cpp b/src/common/stream.cpp index 8aa12b5e24..4765ea03f6 100644 --- a/src/common/stream.cpp +++ b/src/common/stream.cpp @@ -809,11 +809,11 @@ bool wxInputStream::Ungetch(char c) return Ungetch(&c, sizeof(c)) != 0; } -char wxInputStream::GetC() +int wxInputStream::GetC() { - char c; + unsigned char c; Read(&c, sizeof(c)); - return c; + return LastRead() ? c : wxEOF; } wxInputStream& wxInputStream::Read(void *buf, size_t size) @@ -869,6 +869,7 @@ char wxInputStream::Peek() wxInputStream& wxInputStream::Read(wxOutputStream& stream_out) { + size_t lastcount = 0; char buf[BUF_TEMP_SIZE]; for ( ;; ) @@ -879,8 +880,12 @@ wxInputStream& wxInputStream::Read(wxOutputStream& stream_out) if ( stream_out.Write(buf, bytes_read).LastWrite() != bytes_read ) break; + + lastcount += bytes_read; } + m_lastcount = lastcount; + return *this; } @@ -1106,25 +1111,22 @@ wxFilterOutputStream::~wxFilterOutputStream() } // ---------------------------------------------------------------------------- -// wxFilterClassFactory +// wxFilterClassFactoryBase // ---------------------------------------------------------------------------- -IMPLEMENT_ABSTRACT_CLASS(wxFilterClassFactory, wxObject) - -wxFilterClassFactory *wxFilterClassFactory::sm_first = NULL; +IMPLEMENT_ABSTRACT_CLASS(wxFilterClassFactoryBase, wxObject) -wxString wxFilterClassFactory::PopExtension(const wxString& location) const +wxString wxFilterClassFactoryBase::PopExtension(const wxString& location) const { return location.substr(0, FindExtension(location)); } -wxString::size_type wxFilterClassFactory::FindExtension(const wxChar *location) const +wxString::size_type wxFilterClassFactoryBase::FindExtension( + const wxChar *location) const { size_t len = wxStrlen(location); - for (const wxChar *const *p = GetProtocols(wxSTREAM_FILEEXTENSION); - p && *p; - p++) + for (const wxChar *const *p = GetProtocols(wxSTREAM_FILEEXT); *p; p++) { size_t l = wxStrlen(*p); @@ -1135,19 +1137,27 @@ wxString::size_type wxFilterClassFactory::FindExtension(const wxChar *location) return wxString::npos; } -bool wxFilterClassFactory::CanHandle(const wxChar *protocol, - wxStreamProtocolType type) const +bool wxFilterClassFactoryBase::CanHandle(const wxChar *protocol, + wxStreamProtocolType type) const { - if (type == wxSTREAM_FILEEXTENSION) + if (type == wxSTREAM_FILEEXT) return FindExtension(protocol) != wxString::npos; else - for (const wxChar *const *p = GetProtocols(type); p && *p; p++) + for (const wxChar *const *p = GetProtocols(type); *p; p++) if (wxStrcmp(*p, protocol) == 0) return true; return false; } +// ---------------------------------------------------------------------------- +// wxFilterClassFactory +// ---------------------------------------------------------------------------- + +IMPLEMENT_ABSTRACT_CLASS(wxFilterClassFactory, wxFilterClassFactoryBase) + +wxFilterClassFactory *wxFilterClassFactory::sm_first = NULL; + void wxFilterClassFactory::Remove() { if (m_next != this)