1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: File stream classes
4 // Author: Guilhem Lavaux
8 // Copyright: (c) Guilhem Lavaux
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_WXFSTREAM_H__
13 #define _WX_WXFSTREAM_H__
19 #include "wx/object.h"
20 #include "wx/string.h"
21 #include "wx/stream.h"
27 // ----------------------------------------------------------------------------
28 // wxFileStream using wxFile
29 // ----------------------------------------------------------------------------
31 class WXDLLIMPEXP_BASE wxFileInputStream
: public wxInputStream
34 wxFileInputStream(const wxString
& ifileName
);
35 wxFileInputStream(wxFile
& file
);
36 wxFileInputStream(int fd
);
37 virtual ~wxFileInputStream();
39 wxFileOffset
GetLength() const;
41 bool Ok() const { return IsOk(); }
42 virtual bool IsOk() const { return (wxStreamBase::IsOk() && m_file
->IsOpened()); }
43 bool IsSeekable() const { return m_file
->GetKind() == wxFILE_KIND_DISK
; }
48 size_t OnSysRead(void *buffer
, size_t size
);
49 wxFileOffset
OnSysSeek(wxFileOffset pos
, wxSeekMode mode
);
50 wxFileOffset
OnSysTell() const;
56 DECLARE_NO_COPY_CLASS(wxFileInputStream
)
59 class WXDLLIMPEXP_BASE wxFileOutputStream
: public wxOutputStream
62 wxFileOutputStream(const wxString
& fileName
);
63 wxFileOutputStream(wxFile
& file
);
64 wxFileOutputStream(int fd
);
65 virtual ~wxFileOutputStream();
68 bool Close() { return m_file_destroy
? m_file
->Close() : true; }
69 wxFileOffset
GetLength() const;
71 bool Ok() const { return IsOk(); }
72 virtual bool IsOk() const { return (wxStreamBase::IsOk() && m_file
->IsOpened()); }
73 bool IsSeekable() const { return m_file
->GetKind() == wxFILE_KIND_DISK
; }
78 size_t OnSysWrite(const void *buffer
, size_t size
);
79 wxFileOffset
OnSysSeek(wxFileOffset pos
, wxSeekMode mode
);
80 wxFileOffset
OnSysTell() const;
86 DECLARE_NO_COPY_CLASS(wxFileOutputStream
)
89 class WXDLLIMPEXP_BASE wxTempFileOutputStream
: public wxOutputStream
92 wxTempFileOutputStream(const wxString
& fileName
);
93 virtual ~wxTempFileOutputStream();
95 bool Close() { return Commit(); }
96 virtual bool Commit() { return m_file
->Commit(); }
97 virtual void Discard() { m_file
->Discard(); }
99 wxFileOffset
GetLength() const { return m_file
->Length(); }
100 bool IsSeekable() const { return true; }
103 size_t OnSysWrite(const void *buffer
, size_t size
);
104 wxFileOffset
OnSysSeek(wxFileOffset pos
, wxSeekMode mode
)
105 { return m_file
->Seek(pos
, mode
); }
106 wxFileOffset
OnSysTell() const { return m_file
->Tell(); }
111 DECLARE_NO_COPY_CLASS(wxTempFileOutputStream
)
114 class WXDLLIMPEXP_BASE wxFileStream
: public wxFileInputStream
,
115 public wxFileOutputStream
118 wxFileStream(const wxString
& fileName
);
121 DECLARE_NO_COPY_CLASS(wxFileStream
)
128 // ----------------------------------------------------------------------------
129 // wxFFileStream using wxFFile
130 // ----------------------------------------------------------------------------
132 class WXDLLIMPEXP_BASE wxFFileInputStream
: public wxInputStream
135 wxFFileInputStream(const wxString
& fileName
, const wxChar
*mode
= _T("rb"));
136 wxFFileInputStream(wxFFile
& file
);
137 wxFFileInputStream(FILE *file
);
138 virtual ~wxFFileInputStream();
140 wxFileOffset
GetLength() const;
142 bool Ok() const { return IsOk(); }
143 virtual bool IsOk() const { return (wxStreamBase::IsOk() && m_file
->IsOpened()); }
144 bool IsSeekable() const { return m_file
->GetKind() == wxFILE_KIND_DISK
; }
147 wxFFileInputStream();
149 size_t OnSysRead(void *buffer
, size_t size
);
150 wxFileOffset
OnSysSeek(wxFileOffset pos
, wxSeekMode mode
);
151 wxFileOffset
OnSysTell() const;
157 DECLARE_NO_COPY_CLASS(wxFFileInputStream
)
160 class WXDLLIMPEXP_BASE wxFFileOutputStream
: public wxOutputStream
163 wxFFileOutputStream(const wxString
& fileName
, const wxChar
*mode
= _T("w+b"));
164 wxFFileOutputStream(wxFFile
& file
);
165 wxFFileOutputStream(FILE *file
);
166 virtual ~wxFFileOutputStream();
169 bool Close() { return m_file_destroy
? m_file
->Close() : true; }
170 wxFileOffset
GetLength() const;
172 bool Ok() const { return IsOk(); }
173 virtual bool IsOk() const { return (wxStreamBase::IsOk() && m_file
->IsOpened()); }
174 bool IsSeekable() const { return m_file
->GetKind() == wxFILE_KIND_DISK
; }
177 wxFFileOutputStream();
179 size_t OnSysWrite(const void *buffer
, size_t size
);
180 wxFileOffset
OnSysSeek(wxFileOffset pos
, wxSeekMode mode
);
181 wxFileOffset
OnSysTell() const;
187 DECLARE_NO_COPY_CLASS(wxFFileOutputStream
)
190 class WXDLLIMPEXP_BASE wxFFileStream
: public wxFFileInputStream
,
191 public wxFFileOutputStream
194 wxFFileStream(const wxString
& fileName
);
197 DECLARE_NO_COPY_CLASS(wxFFileStream
)
202 #endif // wxUSE_STREAMS
204 #endif // _WX_WXFSTREAM_H__