]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/ffile.h
Document that wxStandardPaths::GetUserConfigDir() doesn't use app info.
[wxWidgets.git] / interface / wx / ffile.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: ffile.h
e54c96f1 3// Purpose: interface of wxFFile
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
526954c5 6// Licence: wxWindows licence
23324ae1
FM
7/////////////////////////////////////////////////////////////////////////////
8
1add55ae
FM
9
10
11/**
12 Values used for both wxFile and wxFFile.
13
14 @todo make the value names uppercase
15*/
16enum wxSeekMode
17{
18 wxFromStart,
19 wxFromCurrent,
20 wxFromEnd
21};
22
23/**
24 See wxFFile::GetKind().
25*/
26enum wxFileKind
27{
28 wxFILE_KIND_UNKNOWN,
29 wxFILE_KIND_DISK, /**< A file supporting seeking to arbitrary offsets. */
30 wxFILE_KIND_TERMINAL, /**< A terminal. */
31 wxFILE_KIND_PIPE /**< A pipe. */
32};
33
34
23324ae1
FM
35/**
36 @class wxFFile
7c913512 37
1add55ae
FM
38 wxFFile implements buffered file I/O.
39
40 This is a very small class designed to minimize the overhead of using it - in fact,
41 there is hardly any overhead at all, but using it brings you automatic error checking
42 and hides differences between platforms and compilers.
43
44 It wraps inside it a @c FILE * handle used by standard C IO library (also known as @c stdio).
7c913512 45
23324ae1
FM
46 @library{wxbase}
47 @category{file}
7c913512 48
e54c96f1 49 @see wxFFile::IsOpened
23324ae1 50*/
7c913512 51class wxFFile
23324ae1
FM
52{
53public:
1add55ae
FM
54 wxFFile();
55
23324ae1
FM
56 /**
57 Opens a file with the given file pointer, which has already been opened.
3c4f71cc 58
1add55ae
FM
59 @param fp
60 An existing file descriptor, such as stderr.
61 */
62 wxFFile(FILE* fp);
63
64 /**
65 Opens a file with the given mode.
66 As there is no way to return whether the operation was successful or not from
67 the constructor you should test the return value of IsOpened() to check that it
68 didn't fail.
69
7c913512 70 @param filename
4cc4bfaf 71 The filename.
7c913512 72 @param mode
4cc4bfaf
FM
73 The mode in which to open the file using standard C strings.
74 Note that you should use "b" flag if you use binary files under Windows
75 or the results might be unexpected due to automatic newline conversion done
76 for the text files.
23324ae1 77 */
7c913512 78 wxFFile(const wxString& filename, const wxString& mode = "r");
1add55ae 79
23324ae1
FM
80
81 /**
82 Destructor will close the file.
1add55ae
FM
83
84 @note it is not virtual so you should @e not derive from wxFFile!
23324ae1
FM
85 */
86 ~wxFFile();
87
88 /**
89 Attaches an existing file pointer to the wxFFile object.
1add55ae
FM
90
91 The descriptor should be already opened and it will be closed by wxFFile object.
23324ae1 92 */
43c48e1e 93 void Attach(FILE* fp, const wxString& name = wxEmptyString);
23324ae1
FM
94
95 /**
96 Closes the file and returns @true on success.
97 */
98 bool Close();
99
100 /**
101 Get back a file pointer from wxFFile object -- the caller is responsible for
1add55ae
FM
102 closing the file if this descriptor is opened.
103
104 IsOpened() will return @false after call to Detach().
23324ae1
FM
105 */
106 void Detach();
107
108 /**
d13b34d3 109 Returns @true if an attempt has been made to read @e past
7c913512 110 the end of the file.
1add55ae
FM
111
112 Note that the behaviour of the file descriptor based class wxFile is different as
113 wxFile::Eof() will return @true here as soon as the last byte of the file has been read.
114
23324ae1
FM
115 Also note that this method may only be called for opened files and may crash if
116 the file is not opened.
3c4f71cc 117
1add55ae
FM
118 @todo THIS METHOD MAY CRASH? DOESN'T SOUND GOOD
119
4cc4bfaf 120 @see IsOpened()
23324ae1 121 */
328f5751 122 bool Eof() const;
23324ae1
FM
123
124 /**
125 Returns @true if an error has occurred on this file, similar to the standard
126 @c ferror() function.
1add55ae 127
23324ae1
FM
128 Please note that this method may only be called for opened files and may crash
129 if the file is not opened.
3c4f71cc 130
1add55ae
FM
131 @todo THIS METHOD MAY CRASH? DOESN'T SOUND GOOD
132
4cc4bfaf 133 @see IsOpened()
23324ae1 134 */
1add55ae 135 bool Error() const;
23324ae1
FM
136
137 /**
138 Flushes the file and returns @true on success.
139 */
140 bool Flush();
141
142 /**
1add55ae
FM
143 Returns the type of the file.
144
145 @see wxFileKind
23324ae1 146 */
328f5751 147 wxFileKind GetKind() const;
23324ae1 148
6ea6639c
VZ
149 /**
150 Returns the file name.
151
152 This is the name that was specified when the object was constructed or
153 to the last call to Open(). Notice that it may be empty if Attach() was
154 called without specifying the name.
155 */
156 const wxString& GetName() const;
157
23324ae1 158 /**
1add55ae
FM
159 Returns @true if the file is opened.
160
161 Most of the methods of this class may only be used for an opened file.
23324ae1 162 */
328f5751 163 bool IsOpened() const;
23324ae1
FM
164
165 /**
166 Returns the length of the file.
167 */
328f5751 168 wxFileOffset Length() const;
23324ae1
FM
169
170 /**
171 Opens the file, returning @true if successful.
3c4f71cc 172
7c913512 173 @param filename
4cc4bfaf 174 The filename.
7c913512 175 @param mode
4cc4bfaf 176 The mode in which to open the file.
23324ae1
FM
177 */
178 bool Open(const wxString& filename, const wxString& mode = "r");
179
180 /**
1add55ae 181 Reads the specified number of bytes into a buffer, returning the actual number read.
3c4f71cc 182
7c913512 183 @param buffer
4cc4bfaf 184 A buffer to receive the data.
7c913512 185 @param count
4cc4bfaf 186 The number of bytes to read.
3c4f71cc 187
d29a9a8a 188 @return The number of bytes read.
23324ae1
FM
189 */
190 size_t Read(void* buffer, size_t count);
191
192 /**
23324ae1 193 Reads the entire contents of the file into a string.
3c4f71cc 194
7c913512 195 @param str
4cc4bfaf 196 String to read data into.
7c913512 197 @param conv
4cc4bfaf
FM
198 Conversion object to use in Unicode build; by default supposes
199 that file contents is encoded in UTF-8.
3c4f71cc 200
d29a9a8a 201 @return @true if file was read successfully, @false otherwise.
23324ae1 202 */
1add55ae 203 bool ReadAll(wxString* str, const wxMBConv& conv = wxConvAuto());
23324ae1
FM
204
205 /**
206 Seeks to the specified position and returns @true on success.
3c4f71cc 207
7c913512 208 @param ofs
4cc4bfaf 209 Offset to seek to.
7c913512 210 @param mode
4cc4bfaf 211 One of wxFromStart, wxFromEnd, wxFromCurrent.
23324ae1
FM
212 */
213 bool Seek(wxFileOffset ofs, wxSeekMode mode = wxFromStart);
214
215 /**
216 Moves the file pointer to the specified number of bytes before the end of the
1add55ae 217 file and returns @true on success.
3c4f71cc 218
7c913512 219 @param ofs
4cc4bfaf 220 Number of bytes before the end of the file.
23324ae1
FM
221 */
222 bool SeekEnd(wxFileOffset ofs = 0);
223
224 /**
225 Returns the current position.
226 */
328f5751 227 wxFileOffset Tell() const;
23324ae1
FM
228
229 /**
23324ae1 230 Writes the contents of the string to the file, returns @true on success.
1add55ae 231
23324ae1 232 The second argument is only meaningful in Unicode build of wxWidgets when
1add55ae
FM
233 @a conv is used to convert @a str to multibyte representation.
234 */
235 bool Write(const wxString& str, const wxMBConv& conv = wxConvAuto());
236
237 /**
238 Writes the specified number of bytes from a buffer.
239
240 @param buffer
241 A buffer containing the data.
242 @param count
243 The number of bytes to write.
244
d29a9a8a 245 @return The number of bytes written.
23324ae1 246 */
1add55ae 247 size_t Write(const void* buffer, size_t count);
23324ae1
FM
248
249 /**
250 Returns the file pointer associated with the file.
251 */
328f5751 252 FILE* fp() const;
23324ae1 253};
e54c96f1 254