: 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()
{
}
wxString::size_type wxFilterClassFactoryBase::FindExtension(
- const wxChar *location) const
+ const wxString& location) const
{
- size_t len = wxStrlen(location);
-
for (const wxChar *const *p = GetProtocols(wxSTREAM_FILEEXT); *p; p++)
{
- size_t l = wxStrlen(*p);
-
- if (l <= len && wxStrcmp(*p, location + len - l) == 0)
- return len - l;
+ if ( location.EndsWith(*p) )
+ return location.length() - wxStrlen(*p);
}
return wxString::npos;
}
-bool wxFilterClassFactoryBase::CanHandle(const wxChar *protocol,
+bool wxFilterClassFactoryBase::CanHandle(const wxString& protocol,
wxStreamProtocolType type) const
{
if (type == wxSTREAM_FILEEXT)
return FindExtension(protocol) != wxString::npos;
else
for (const wxChar *const *p = GetProtocols(type); *p; p++)
- if (wxStrcmp(*p, protocol) == 0)
+ if (protocol == *p)
return true;
return false;