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)
wxInputStream& wxInputStream::Read(wxOutputStream& stream_out)
{
+ size_t lastcount = 0;
char buf[BUF_TEMP_SIZE];
for ( ;; )
if ( stream_out.Write(buf, bytes_read).LastWrite() != bytes_read )
break;
+
+ lastcount += bytes_read;
}
+ m_lastcount = lastcount;
+
return *this;
}
}
// ----------------------------------------------------------------------------
-// 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);
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)