| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/mstream.h
- // Purpose: Memory stream classes
- // Author: Guilhem Lavaux
- // Modified by:
- // Created: 11/07/98
- // Copyright: (c) Guilhem Lavaux
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_WXMMSTREAM_H__
- #define _WX_WXMMSTREAM_H__
- #include "wx/defs.h"
- #if wxUSE_STREAMS
- #include "wx/stream.h"
- class WXDLLIMPEXP_FWD_BASE wxMemoryOutputStream;
- class WXDLLIMPEXP_BASE wxMemoryInputStream : public wxInputStream
- {
- public:
- wxMemoryInputStream(const void *data, size_t length);
- wxMemoryInputStream(const wxMemoryOutputStream& stream);
- wxMemoryInputStream(wxInputStream& stream,
- wxFileOffset lenFile = wxInvalidOffset)
- {
- InitFromStream(stream, lenFile);
- }
- wxMemoryInputStream(wxMemoryInputStream& stream)
- : wxInputStream()
- {
- InitFromStream(stream, wxInvalidOffset);
- }
- virtual ~wxMemoryInputStream();
- virtual wxFileOffset GetLength() const { return m_length; }
- virtual bool IsSeekable() const { return true; }
- virtual char Peek();
- virtual bool CanRead() const;
- wxStreamBuffer *GetInputStreamBuffer() const { return m_i_streambuf; }
- #if WXWIN_COMPATIBILITY_2_6
- // deprecated, compatibility only
- wxDEPRECATED( wxStreamBuffer *InputStreamBuffer() const );
- #endif // WXWIN_COMPATIBILITY_2_6
- protected:
- wxStreamBuffer *m_i_streambuf;
- size_t OnSysRead(void *buffer, size_t nbytes);
- wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
- wxFileOffset OnSysTell() const;
- private:
- // common part of ctors taking wxInputStream
- void InitFromStream(wxInputStream& stream, wxFileOffset lenFile);
- size_t m_length;
- // copy ctor is implemented above: it copies the other stream in this one
- DECLARE_ABSTRACT_CLASS(wxMemoryInputStream)
- wxDECLARE_NO_ASSIGN_CLASS(wxMemoryInputStream);
- };
- class WXDLLIMPEXP_BASE wxMemoryOutputStream : public wxOutputStream
- {
- public:
- // if data is !NULL it must be allocated with malloc()
- wxMemoryOutputStream(void *data = NULL, size_t length = 0);
- virtual ~wxMemoryOutputStream();
- virtual wxFileOffset GetLength() const { return m_o_streambuf->GetLastAccess(); }
- virtual bool IsSeekable() const { return true; }
- size_t CopyTo(void *buffer, size_t len) const;
- wxStreamBuffer *GetOutputStreamBuffer() const { return m_o_streambuf; }
- #if WXWIN_COMPATIBILITY_2_6
- // deprecated, compatibility only
- wxDEPRECATED( wxStreamBuffer *OutputStreamBuffer() const );
- #endif // WXWIN_COMPATIBILITY_2_6
- protected:
- wxStreamBuffer *m_o_streambuf;
- protected:
- size_t OnSysWrite(const void *buffer, size_t nbytes);
- wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
- wxFileOffset OnSysTell() const;
- DECLARE_DYNAMIC_CLASS(wxMemoryOutputStream)
- wxDECLARE_NO_COPY_CLASS(wxMemoryOutputStream);
- };
- #if WXWIN_COMPATIBILITY_2_6
- inline wxStreamBuffer *wxMemoryInputStream::InputStreamBuffer() const { return m_i_streambuf; }
- inline wxStreamBuffer *wxMemoryOutputStream::OutputStreamBuffer() const { return m_o_streambuf; }
- #endif // WXWIN_COMPATIBILITY_2_6
- #endif
- // wxUSE_STREAMS
- #endif
- // _WX_WXMMSTREAM_H__
|