* wxMemory*Stream link problem fix.
[wxWidgets.git] / include / wx / stream.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: stream.h
3 // Purpose: "wxWindows stream" base classes
4 // Author: Guilhem Lavaux
5 // Modified by:
6 // Created: 11/07/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Guilhem Lavaux
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef __WXSTREAM_H__
13 #define __WXSTREAM_H__
14
15 #ifdef __GNUG__
16 #pragma interface
17 #endif
18
19 #include <stdio.h>
20 #include <wx/object.h>
21 #include <wx/string.h>
22
23 /*
24 * wxStream: base classes
25 */
26
27 typedef enum {
28 wxFromStart, wxFromCurrent, wxFromEnd
29 } wxSeekMode;
30
31 class wxOutputStream;
32 class wxInputStream: virtual public wxObject {
33 DECLARE_ABSTRACT_CLASS(wxInputStream)
34 public:
35 wxInputStream();
36 virtual ~wxInputStream();
37
38 virtual wxInputStream& Read(void *buffer, size_t size) = 0;
39 wxInputStream& Read(wxOutputStream& stream_out);
40
41 virtual off_t SeekI(off_t pos, wxSeekMode mode = wxFromStart) = 0;
42 virtual off_t TellI() const = 0;
43
44 virtual bool Eof() const = 0;
45 virtual size_t LastRead() const = 0;
46
47 wxInputStream& operator>>(wxOutputStream& out) { return Read(out); }
48 };
49
50 class wxOutputStream: virtual public wxObject {
51 DECLARE_ABSTRACT_CLASS(wxOutputStream)
52 public:
53 wxOutputStream();
54 virtual ~wxOutputStream();
55
56 virtual wxOutputStream& Write(const void *buffer, size_t size) = 0;
57 wxOutputStream& Write(wxInputStream& stream_in);
58
59 virtual off_t SeekO(off_t pos, wxSeekMode mode = wxFromStart) = 0;
60 virtual off_t TellO() const = 0;
61
62 virtual bool Bad() const = 0;
63 virtual size_t LastWrite() const = 0;
64
65 virtual void Sync() {}
66 };
67
68 /*
69 * "Filter" streams
70 */
71
72 class wxFilterInputStream: public wxInputStream {
73 DECLARE_CLASS(wxFilterInputStream)
74 public:
75 wxFilterInputStream(wxInputStream& stream);
76 virtual ~wxFilterInputStream();
77
78 virtual wxInputStream& Read(void *buffer, size_t size)
79 { return m_parent_i_stream->Read(buffer, size); }
80 virtual off_t SeekI(off_t pos, wxSeekMode mode = wxFromStart)
81 { return m_parent_i_stream->SeekI(pos, mode); }
82 virtual off_t TellI() const
83 { return m_parent_i_stream->TellI(); }
84
85 virtual bool Eof() const { return m_parent_i_stream->Eof(); }
86 virtual size_t LastRead() const { return m_parent_i_stream->LastRead(); }
87
88 protected:
89 wxInputStream *m_parent_i_stream;
90 };
91
92 class wxFilterOutputStream: public wxOutputStream {
93 DECLARE_CLASS(wxFilterOutputStream)
94 public:
95 wxFilterOutputStream(wxOutputStream& stream);
96 virtual ~wxFilterOutputStream();
97
98 virtual wxOutputStream& Write(const void *buffer, size_t size)
99 { return m_parent_o_stream->Write(buffer, size); }
100 virtual off_t SeekO(off_t pos, wxSeekMode mode = wxFromStart)
101 { return m_parent_o_stream->SeekO(pos, mode); }
102 virtual off_t TellO() const
103 { return m_parent_o_stream->TellO(); }
104
105 virtual bool Bad() const { return m_parent_o_stream->Bad(); }
106 virtual size_t LastWrite() const { return m_parent_o_stream->LastWrite(); }
107
108 protected:
109 wxOutputStream *m_parent_o_stream;
110 };
111
112 #endif