From 32fc4afbb253f55d4b35b7ee7a2ca9a7eea49fd9 Mon Sep 17 00:00:00 2001 From: Guilhem Lavaux Date: Sun, 12 Jul 1998 15:24:52 +0000 Subject: [PATCH] Ooops ! I've forgotten the include files. mmstream.cpp => mstream.cpp git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@235 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/fstream.h | 68 +++++++++++++++++++++++++ include/wx/mstream.h | 72 ++++++++++++++++++++++++++ include/wx/stream.h | 112 +++++++++++++++++++++++++++++++++++++++++ src/common/mstream.cpp | 6 +-- 4 files changed, 255 insertions(+), 3 deletions(-) create mode 100644 include/wx/fstream.h create mode 100644 include/wx/mstream.h create mode 100644 include/wx/stream.h diff --git a/include/wx/fstream.h b/include/wx/fstream.h new file mode 100644 index 0000000000..d41b9bc735 --- /dev/null +++ b/include/wx/fstream.h @@ -0,0 +1,68 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: fstream.h +// Purpose: File stream classes +// Author: Guilhem Lavaux +// Modified by: +// Created: 11/07/98 +// RCS-ID: $Id$ +// Copyright: (c) Guilhem Lavaux +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// +#ifndef __WXFSTREAM_H__ +#define __WXFSTREAM_H__ + +#include +#include +#include +#include + +class wxFileStreamBase: public wxStream { + DECLARE_CLASS(wxFileStreamBase) + public: + wxFileStreamBase(const wxString& fileName, int iolimit); + virtual ~wxFileStreamBase(); + + wxInputStream& Read(void *buffer, size_t size); + size_t SeekI(int pos, wxWhenceType whence = wxBeginPosition); + size_t TellI() const; + + bool Eof() const { return m_eof; } + size_t LastRead() const { return m_lastread; } + + wxOutputStream& Write(const void *buffer, size_t size); + size_t SeekO(int pos, wxWhenceType whence = wxBeginPosition); + size_t TellO() const; + + bool Bad() const { return m_bad; } + size_t LastWrite() const { return m_lastwrite; } + + void Sync(); + + protected: + size_t m_lastread, m_lastwrite; + bool m_eof, m_bad; + FILE *m_file; +}; + +class wxFileInputStream: public wxFileStreamBase { + DECLARE_CLASS(wxFileInputStream) + public: + wxFileInputStream(const wxString& fileName) : wxFileStreamBase(fileName, 1) {} + virtual ~wxFileInputStream() {} +}; + +class wxFileOutputStream: public wxFileStreamBase { + DECLARE_CLASS(wxFileOutputStream) + public: + wxFileOutputStream(const wxString& fileName) : wxFileStreamBase(fileName, 2) {} + virtual ~wxFileOutputStream() {} +}; + +class wxFileStream: public wxFileStreamBase { + DECLARE_CLASS(wxFileStream) + public: + wxFileStream(const wxString& fileName) : wxFileStreamBase(fileName, 0) {} + virtual ~wxFileStream() {} +}; + +#endif diff --git a/include/wx/mstream.h b/include/wx/mstream.h new file mode 100644 index 0000000000..68c82681d9 --- /dev/null +++ b/include/wx/mstream.h @@ -0,0 +1,72 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: mstream.h +// Purpose: Memory stream classes +// Author: Guilhem Lavaux +// Modified by: +// Created: 11/07/98 +// RCS-ID: $Id$ +// Copyright: (c) Guilhem Lavaux +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// +#ifndef __WXMMSTREAM_H__ +#define __WXMMSTREAM_H__ + +#include + +class wxMemoryStreamBase: public wxStream { + public: + wxMemoryStreamBase(char *data, size_t length, int iolimit); + virtual ~wxMemoryStreamBase(); + + // Input part + wxInputStream& Read(void *buffer, size_t size); + size_t SeekI(int pos, wxWhenceType whence = wxBeginPosition); + size_t TellI() const { return m_position_i; } + + bool Eof() const { return m_eof; } + size_t LastRead() const { return m_lastread; } + + // Output part + wxOutputStream& Write(const void *buffer, size_t size); + size_t SeekO(int pos, wxWhenceType whence = wxBeginPosition); + size_t TellO() const { return m_position_o; } + + bool Bad() const { return m_bad; } + size_t LastWrite() const { return m_lastwrite; } + void Sync() {} + + protected: + bool ChangeBufferSize(size_t new_length); + + protected: + bool m_bad, m_eof, m_persistent; + size_t m_lastread, m_lastwrite; + size_t m_length; + size_t m_position_i, m_position_o; + char *m_buffer; + int m_iolimit; +}; + + +class wxMemoryInputStream: public wxMemoryStreamBase { + public: + wxMemoryInputStream(char *data, size_t length) + : wxMemoryStreamBase(data, length, 1) + {} +}; + +class wxMemoryOutputStream: public wxMemoryStreamBase { + public: + wxMemoryOutputStream(char *data = NULL, size_t length = 0) + : wxMemoryStreamBase(data, length, 2) + {} +}; + +class wxMemoryStream: public wxMemoryStreamBase { + public: + wxMemoryStream(char *data = NULL, size_t length = 0) + : wxMemoryStreamBase(data, length, 0) + {} +}; + +#endif diff --git a/include/wx/stream.h b/include/wx/stream.h new file mode 100644 index 0000000000..8f6643cde8 --- /dev/null +++ b/include/wx/stream.h @@ -0,0 +1,112 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: stream.h +// Purpose: "wxWindows stream" base classes +// Author: Guilhem Lavaux +// Modified by: +// Created: 11/07/98 +// RCS-ID: $Id$ +// Copyright: (c) Guilhem Lavaux +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef __WXSTREAM_H__ +#define __WXSTREAM_H__ + +#ifdef __GNUG__ +#pragma interface +#endif + +#include +#include +#include + +/* + * wxStream: base classes + */ + +typedef enum { + wxBeginPosition = 0, wxCurrentPosition = 1, wxEndPosition = 2 +} wxWhenceType; + +class wxOutputStream; +class wxInputStream: public wxObject { + DECLARE_ABSTRACT_CLASS(wxInputStream); + public: + wxInputStream(); + virtual ~wxInputStream(); + + virtual wxInputStream& Read(void *buffer, size_t size) = 0; + wxInputStream& Read(wxOutputStream& stream_out); + + virtual size_t SeekI(int pos, wxWhenceType whence = wxBeginPosition) = 0; + virtual size_t TellI() const = 0; + + virtual bool Eof() const = 0; + virtual size_t LastRead() const = 0; +}; + +class wxOutputStream: public wxObject { + DECLARE_ABSTRACT_CLASS(wxOutputStream); + public: + wxOutputStream(); + virtual ~wxOutputStream(); + + virtual wxOutputStream& Write(const void *buffer, size_t size) = 0; + wxOutputStream& Write(wxInputStream& stream_in); + + virtual size_t SeekO(int pos, wxWhenceType whence = wxBeginPosition) = 0; + virtual size_t TellO() const = 0; + + virtual bool Bad() const = 0; + virtual size_t LastWrite() const = 0; + + virtual void Sync() {} +}; + +class wxStream: public wxInputStream, public wxOutputStream { + DECLARE_ABSTRACT_CLASS(wxStream) + public: + wxStream() : wxInputStream(), wxOutputStream() {} + virtual ~wxStream() {} +}; + +/* + * "Filter" streams + */ + +class wxFilterInputStream: public wxInputStream { + DECLARE_CLASS(wxFilterInputStream) + public: + wxFilterInputStream(wxInputStream& stream); + virtual ~wxFilterInputStream(); + + virtual wxInputStream& Read(void *buffer, size_t size) + { return m_parent_i_stream->Read(buffer, size); } + virtual size_t SeekI(int pos, wxWhenceType whence = wxBeginPosition) + { return m_parent_i_stream->SeekI(pos, whence); } + + virtual bool Eof() const { return m_parent_i_stream->Eof(); } + virtual size_t LastRead() const { return m_parent_i_stream->LastRead(); } + protected: + wxInputStream *m_parent_i_stream; +}; + +class wxFilterOuputStream: pubilc wxOutputStream { + DECLARE_CLASS(wxFilterOutputStream) + public: + wxFilterOutputStream(wxOutputStream& stream); + virtual ~wxFilterOutputStream(); + + virtual wxOutputStream& Write(const void *buffer, size_t size) + { return m_parent_o_stream->Write(buffer, size); } + virtual size_t SeekO(int pos, wxWhenceType whence = wxBeginPosition) + { return m_parent_o_stream->SeekO(pos, whence); } + + virtual bool Eof() const { return m_parent_o_sream->Eof(); } + virtual size_t LastRead() const { return m_parent_o_stream->LastRead(); } + + protected: + wxOutputStream *m_parent_o_stream; +}; + +#endif diff --git a/src/common/mstream.cpp b/src/common/mstream.cpp index a12041ee0e..3a1264e3fb 100644 --- a/src/common/mstream.cpp +++ b/src/common/mstream.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: mmstream.cpp +// Name: mstream.cpp // Purpose: "Memory stream" classes // Author: Guilhem Lavaux // Modified by: @@ -10,12 +10,12 @@ ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ -#pragma implementation "mmstream.h" +#pragma implementation "mstream.h" #endif #include #include -#include +#include wxMemoryStreamBase::wxMemoryStreamBase(char *data, size_t length, int iolimit) { -- 2.45.2