- Added wxMemoryInputStream(wxInputStream&) ctor (Stas Sergeev)
- Implemented wxMemoryInputStream::CanRead()
- Added wxEXEC_BLOCK flag (Hank Schultz)
+- Add support for wxStream-derived classes to wxRTTI (Stas Sergeev)
All (GUI):
size_t m_length;
// copy ctor is implemented above: it copies the other stream in this one
+ DECLARE_ABSTRACT_CLASS(wxMemoryInputStream)
DECLARE_NO_ASSIGN_CLASS(wxMemoryInputStream)
};
wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
wxFileOffset OnSysTell() const;
+ DECLARE_DYNAMIC_CLASS(wxMemoryOutputStream)
DECLARE_NO_COPY_CLASS(wxMemoryOutputStream)
};
// wxStreamBase: common (but non virtual!) base for all stream classes
// ---------------------------------------------------------------------------
-class WXDLLIMPEXP_BASE wxStreamBase
+class WXDLLIMPEXP_BASE wxStreamBase : public wxObject
{
public:
wxStreamBase();
friend class wxStreamBuffer;
+ DECLARE_ABSTRACT_CLASS(wxStreamBase)
DECLARE_NO_COPY_CLASS(wxStreamBase)
};
friend class wxStreamBuffer;
+ DECLARE_ABSTRACT_CLASS(wxInputStream)
DECLARE_NO_COPY_CLASS(wxInputStream)
};
friend class wxStreamBuffer;
+ DECLARE_ABSTRACT_CLASS(wxOutputStream)
DECLARE_NO_COPY_CLASS(wxOutputStream)
};
size_t m_currentPos;
+ DECLARE_DYNAMIC_CLASS(wxCountingOutputStream)
DECLARE_NO_COPY_CLASS(wxCountingOutputStream)
};
wxInputStream *m_parent_i_stream;
bool m_owns;
+ DECLARE_ABSTRACT_CLASS(wxFilterInputStream)
DECLARE_NO_COPY_CLASS(wxFilterInputStream)
};
wxOutputStream *m_parent_o_stream;
bool m_owns;
+ DECLARE_ABSTRACT_CLASS(wxFilterOutputStream)
DECLARE_NO_COPY_CLASS(wxFilterOutputStream)
};
// wxMemoryInputStream
// ----------------------------------------------------------------------------
+IMPLEMENT_ABSTRACT_CLASS(wxMemoryInputStream, wxInputStream)
+
wxMemoryInputStream::wxMemoryInputStream(const void *data, size_t len)
{
m_i_streambuf = new wxStreamBuffer(wxStreamBuffer::read);
// wxMemoryOutputStream
// ----------------------------------------------------------------------------
+IMPLEMENT_DYNAMIC_CLASS(wxMemoryOutputStream, wxOutputStream)
+
wxMemoryOutputStream::wxMemoryOutputStream(void *data, size_t len)
{
m_o_streambuf = new wxStreamBuffer(wxStreamBuffer::write);
// wxStreamBase
// ----------------------------------------------------------------------------
+IMPLEMENT_ABSTRACT_CLASS(wxStreamBase, wxObject)
+
wxStreamBase::wxStreamBase()
{
m_lasterror = wxSTREAM_NO_ERROR;
// wxInputStream
// ----------------------------------------------------------------------------
+IMPLEMENT_ABSTRACT_CLASS(wxInputStream, wxStreamBase)
+
wxInputStream::wxInputStream()
{
m_wback = NULL;
// wxOutputStream
// ----------------------------------------------------------------------------
+IMPLEMENT_ABSTRACT_CLASS(wxOutputStream, wxStreamBase)
+
wxOutputStream::wxOutputStream()
{
}
// wxCountingOutputStream
// ----------------------------------------------------------------------------
+IMPLEMENT_DYNAMIC_CLASS(wxCountingOutputStream, wxOutputStream)
+
wxCountingOutputStream::wxCountingOutputStream ()
{
m_currentPos = 0;
// wxFilterInputStream
// ----------------------------------------------------------------------------
+IMPLEMENT_ABSTRACT_CLASS(wxFilterInputStream, wxInputStream)
+
wxFilterInputStream::wxFilterInputStream()
: m_parent_i_stream(NULL),
m_owns(false)
// wxFilterOutputStream
// ----------------------------------------------------------------------------
+IMPLEMENT_ABSTRACT_CLASS(wxFilterOutputStream, wxOutputStream)
+
wxFilterOutputStream::wxFilterOutputStream()
: m_parent_o_stream(NULL),
m_owns(false)