]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/wfstream.h
don't force wxUSE_EXTENDED_RTTI to eb 1 for Borland compiler (why?)
[wxWidgets.git] / include / wx / wfstream.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: wx/wfstream.h
3// Purpose: File stream 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 licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_WXFSTREAM_H__
13#define _WX_WXFSTREAM_H__
14
15#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
16#pragma interface "wfstream.h"
17#endif
18
19#include "wx/defs.h"
20
21#if wxUSE_STREAMS && wxUSE_FILE
22
23#include "wx/object.h"
24#include "wx/string.h"
25#include "wx/stream.h"
26#include "wx/file.h"
27#include "wx/ffile.h"
28
29// ----------------------------------------------------------------------------
30// wxFileStream using wxFile
31// ----------------------------------------------------------------------------
32
33class WXDLLIMPEXP_BASE wxFileInputStream : public wxInputStream
34{
35public:
36 wxFileInputStream(const wxString& ifileName);
37 wxFileInputStream(wxFile& file);
38 wxFileInputStream(int fd);
39 ~wxFileInputStream();
40
41 wxFileOffset GetLength() const;
42
43 bool Ok() const { return m_file->IsOpened(); }
44
45protected:
46 wxFileInputStream();
47
48 size_t OnSysRead(void *buffer, size_t size);
49 wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
50 wxFileOffset OnSysTell() const;
51
52protected:
53 wxFile *m_file;
54 bool m_file_destroy;
55
56 DECLARE_NO_COPY_CLASS(wxFileInputStream)
57};
58
59class WXDLLIMPEXP_BASE wxFileOutputStream : public wxOutputStream
60{
61public:
62 wxFileOutputStream(const wxString& fileName);
63 wxFileOutputStream(wxFile& file);
64 wxFileOutputStream(int fd);
65 virtual ~wxFileOutputStream();
66
67 void Sync();
68 bool Close() { return m_file_destroy ? m_file->Close() : true; }
69 wxFileOffset GetLength() const;
70
71 bool Ok() const { return m_file->IsOpened(); }
72
73protected:
74 wxFileOutputStream();
75
76 size_t OnSysWrite(const void *buffer, size_t size);
77 wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
78 wxFileOffset OnSysTell() const;
79
80protected:
81 wxFile *m_file;
82 bool m_file_destroy;
83
84 DECLARE_NO_COPY_CLASS(wxFileOutputStream)
85};
86
87class WXDLLIMPEXP_BASE wxFileStream : public wxFileInputStream,
88 public wxFileOutputStream
89{
90public:
91 wxFileStream(const wxString& fileName);
92
93private:
94 DECLARE_NO_COPY_CLASS(wxFileStream)
95};
96
97// ----------------------------------------------------------------------------
98// wxFFileStream using wxFFile
99// ----------------------------------------------------------------------------
100
101class WXDLLIMPEXP_BASE wxFFileInputStream : public wxInputStream
102{
103public:
104 wxFFileInputStream(const wxString& fileName, const wxChar *mode = _T("rb"));
105 wxFFileInputStream(wxFFile& file);
106 wxFFileInputStream(FILE *file);
107 ~wxFFileInputStream();
108
109 wxFileOffset GetLength() const;
110
111 bool Ok() const { return m_file->IsOpened(); }
112
113protected:
114 wxFFileInputStream();
115
116 size_t OnSysRead(void *buffer, size_t size);
117 wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
118 wxFileOffset OnSysTell() const;
119
120protected:
121 wxFFile *m_file;
122 bool m_file_destroy;
123
124 DECLARE_NO_COPY_CLASS(wxFFileInputStream)
125};
126
127class WXDLLIMPEXP_BASE wxFFileOutputStream : public wxOutputStream
128{
129public:
130 wxFFileOutputStream(const wxString& fileName, const wxChar *mode = _T("w+b"));
131 wxFFileOutputStream(wxFFile& file);
132 wxFFileOutputStream(FILE *file);
133 virtual ~wxFFileOutputStream();
134
135 void Sync();
136 bool Close() { return m_file_destroy ? m_file->Close() : true; }
137 wxFileOffset GetLength() const;
138
139 bool Ok() const { return m_file->IsOpened(); }
140
141protected:
142 wxFFileOutputStream();
143
144 size_t OnSysWrite(const void *buffer, size_t size);
145 wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
146 wxFileOffset OnSysTell() const;
147
148protected:
149 wxFFile *m_file;
150 bool m_file_destroy;
151
152 DECLARE_NO_COPY_CLASS(wxFFileOutputStream)
153};
154
155class WXDLLIMPEXP_BASE wxFFileStream : public wxFFileInputStream,
156 public wxFFileOutputStream
157{
158public:
159 wxFFileStream(const wxString& fileName);
160
161private:
162 DECLARE_NO_COPY_CLASS(wxFFileStream)
163};
164
165#endif // wxUSE_STREAMS && wxUSE_FILE
166
167#endif // _WX_WXFSTREAM_H__